微机实验二定时计数器(8253)

更新时间:2023-06-10 18:38:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

浙工大微机实验二定时计数器(8253)三个小实验代码

实验二 定时/计数器(8253)

1. 实验原理

TPC-USB平台上有一块8253定时/计数器芯片,除了片选引脚,其他信号都已接好。有关结构和编程,请参考本章前几节内容。

2. 实验内容

(1)计数器方式0实验

将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动开关逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

步骤如下:

1)按图2.1虚线连接电路。

图2.1 TPC-USB平台计数器方式0实验连线图

2)根据流程图2.2,编程并运行,观察实验结果。

图2.2 TPC-USB平台计数器方式0实验流程图

浙工大微机实验二定时计数器(8253)三个小实验代码

实验代码:

code segment

assume cs:code start:

mov al,10h mov dx,283h out dx,al mov al,0fh mov dx,280h out dx,al ll:

mov al,00h mov dx,283h out dx,al mov dx,280h in al,dx cmp al,9 jbe l1 add al,7 l1:

add al,30h mov dl,al

浙工大微机实验二定时计数器(8253)三个小实验代码

mov ah,2 int 21h mov dl,0dh

mov ah,02h int 21h mov dl,0ah mov ah,02h int 21h mov ah,6 mov dl,0ffh int 21h jz ll mov ah, 4ch int 21h code ends end start

(2)计数器方式3实验

将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。

步骤如下:

1)按图2.3连接电路。

浙工大微机实验二定时计数器(8253)三个小实验代码

U5 8253

+5V

+5V

图2.3 TPC-USB平台计数器方式3实验连线

实验代码:

code segment

assume cs:code start:

mov al,37h mov dx,283h out dx,al mov al,00h mov dx,280h out dx,al mov al,10h out dx,al mov al,77h mov dx,283h out dx,al mov al,00h mov dx,281h

浙工大微机实验二定时计数器(8253)三个小实验代码

out dx,al mov al,10h out dx,al mov ah,4ch int 21h code ends end start

2)根据流程图2.4,编程并运行,观察实验结果。

图2.4 TPC-USB平台计数器方式3实验流程图

(3)计数器级联实验

将计数器0设置为方式3(方波),计数器1设置为方式2(分频)。实现计数器0的输出为方波,计数器1的输入是计数器0输出。人机交互界面设计:实现在显示屏幕上提示输入计数器0(方波)的参数和计数器1(分频信号)的参数。如下所示: Counter0:____ Counter1:____ continue?(y/n)____

实现用键盘直接输入修改程序中方波的参数和分频信号的参数,以改变方波的宽度,分频信号的周期和分频数,不需重新修改源代码。用示波器观察计数器0和计数器1的输出波形及其关系,并在纸上画出CLK0、OUT0、OUT1的波形。

步骤如下:

1)按图2.5连接电路。

浙工大微机实验二定时计数器(8253)三个小实验代码

U5 8253

+5V

图2.5 TPC-USB平台计数器级联实验连线

2)根据流程图2.6,编程并运行,观察实验结果。

图2.6 TPC-USB平台计数器级联实验流程图

编程提示:8253控制寄存器地址 :283H;计数器0地址:280H;计数器1地址:281H;CLK0连接时钟1MHz。

实验代码:

data segment

mesg1 db 13,10,'Counter0:','$' mesg2 db 13,10,'Counter1:','$' mesg3 db 13,10,'Continue?(Y/N)','$'

mesg4 db 13,10,13,10,'Thank You!',13,10,'$'

浙工大微机实验二定时计数器(8253)三个小实验代码

errorm db 13,10,'Input Error!','$' Counter0 dw 0 Counter1 dw 0 data ends code segment

assume cs:code,ds:data main proc far start: mov dx,data mov ds,dx do: sub bx,bx sub ax,ax mov Counter0,0 mov Counter1,0 ;init l1:

mov dx,offset mesg1 mov ah,09h int 21h

rd1: ;read Counter0 mov al,0 ;判断有无输入 mov ah,01 ;read a char int 21h

浙工大微机实验二定时计数器(8253)三个小实验代码

cmp al,0 jz rd1

cmp al,13 ;if enter je fdone1 jmp tdone1 fdone1: jmp done1 tdone1: cmp al,10 je fdone1

cmp al,'0' ;if input<0 or input>9 error jb error cmp al,'9' ja error push ax mov ax,10 mul Counter0

mov Counter0,ax ;Counter0=counter*10 pop ax sub bx,bx mov bl,al sub bl,30h

add Counter0,bx ;counter=counter+input jmp rd1

浙工大微机实验二定时计数器(8253)三个小实验代码

error:

mov dx,offset errorm mov ah,09h int 21h mov dl,7 mov ah,2 int 21h jmp done3 tr: ;for jmp do mov dl,al mov ah,02h int 21h mov dl,10 int 21h mov dl,13 int 21h jmp do l2:

mov dx,offset mesg2 mov ah,09h int 21h rd2:

浙工大微机实验二定时计数器(8253)三个小实验代码

mov al,0 ;判断有无输入 mov ah,01 ;read Counter1 int 21h cmp al,0 jz rd2

cmp al,13 ;if enter je fdone2 cmp al,10 je fdone2 jmp tdone2 fdone2: jmp done2 tdone2: cmp al,10 je fdone2 cmp al,'0' jb error cmp al,'9' ja error push ax mov ax,10 mul Counter1

mov Counter1,ax ;Counter1=Counter1*10

浙工大微机实验二定时计数器(8253)三个小实验代码

sub bx,bx mov bl,al

sub bl,30h ;bh=0

add Counter1,bx ;Counter1=Counter1+input jmp rd2 done1: jmp l2 done2:

jmp out8253 ;after enter two counters ; set 8253 and do it done3:

mov dx,offset mesg3 mov ah,09h int 21h l3: mov ah,07h int 21h cmp al,'Y' je tr cmp al,'y' je tr cmp al,'N'

浙工大微机实验二定时计数器(8253)三个小实验代码

cmp al,'n' je quit mov dl,7 mov ah,02h int 21h jmp l3

out8253: ;work code mov al,00110110b mov dx,283h out dx,al mov ax, Counter0 mov dx,280h out dx,al mov al,ah out dx,al mov al,01110110b mov dx,283h out dx,al mov ax,Counter1 mov dx,281h out dx,al

浙工大微机实验二定时计数器(8253)三个小实验代码

mov al,ah out dx,al mov cx,2801 delay: loop delay jmp done3

quit: ;return to DOS mov dx,offset mesg4 mov ah,9 int 21h mov ax,4c00h int 21h main endp code ends end start

本文来源:https://www.bwwdw.com/article/g9x1.html

Top