微机原理实验定时器计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可编程定时器/ 计数器(8253 )
一、实验目的
掌握8253 的基本工作原理和编程方法。
二、实验内容
1.按下图虚线连接电路,将计数器0设置为方式0,计数器初值为N( N V OFH), 用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。
2. 按下图连接电路,将计数器0、计数器1 分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)o
三、编程提示
8253 控制寄存器地址:283H—0C403H
计数器0 地址:280H—
04C400H
计数器1 地址:281H —
04C401H
CLKO连接时
钟:1MHz o 2、程序参考流程图
向计数器0送初值1000
四、程序设计及实验调试
程序设计的思想及注意事项:
第一个实验,在编程时要注意机器识别的ASCII码和输入数据数字的区别,可以根
据书上ASCII码和输入数据的转换关系, 当数据在0—9之间,对数据加30H即可对应机器识别的ASCII码,对于A—F之间则加37H。编程时采用了二号功能键输出显
示,六号功能键进行输入操作
第二个实验,在向计数器0和计数器1送初始值时,要注意先送低字节后送高字节, 送入的数据应是1000而非1000H,否则最后出现逻辑笔跳变的时间不是1s o
实验一:
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,0C403H
MOV AL,00010000B ; 计数器 0 工作方式为 0
OUT DX,AL
MOV DX,0C400H
MOV AL,09H ; 送计数器初值
JUDGE: MOV DL,AL
OUT DX,AL
XUNHUAN: MOV DX,0C400H
IN AL,DX ; CMP AL,9
JG BIG
ADD AL,30H ;0
JMP JUDGE
BIG: ADDAL,37H
JMP JUDGE
读计数器的值
到 9 ,显示 ASCII 码
; 大于 9 ,显示 ASCII 码
MOV AH,02H
INT 21H ; 使用02H 功能输出显示
MOV DL,0FFH
MOV AH,06H
INT 21H ; 执行键盘输入操作
JZ XUNHUAN
MOV AH,4CH
INT 21H ; 返回操作系统
CODE ENDS
END START
实验中遇到问题及分析:
编写程序时,由于要将结果显示在屏幕上,所以要对写入的值读出来,编写MOV DX,0C400H IN AL,DX 语句即可实现。
在硬件调试过程中,总体来说很顺利。当计数结果由9 减到0 时,有逻辑跳变,同时屏幕显示下一个ASCII 字符。老师说过不能使用拨码开关,否则会出现几个脉冲,从而不是减一计数,我在实验时试过拨码开关,将开关上下拨一次,减数的结果是随机的,所以不适合使用。
实验二:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AL,00110110B ; 计数器0, 工作方式3 MOV DX,0C403H
OUT DX,AL ; 写控制口
MOV AX,1000
MOV DX,0C400H
OUT DX,AL
MOV AL,AH
OUT DX,AL ; 计数器0 送初值1000
MOV AL,01110110B
MOV DX,0C403H ; 计数器1, 工作方式3 OUT DX,AL
MOV AX,1000
MOV DX,0C401H
OUT DX,AL
MOV AL,AH
OUT DX,AL ; 计数器1 送初值1000
MOV AH,4CH
INT 21H
CODE ENDS
END START
实验中遇到问题及分析:
由于在软件编程时注意到了送初始值为1000,而不是1000H,所以这方面没有产生
错误。在编程向计数器0 和计数器1 送值,由于疏忽了MOVDX,0C400H,MOVDX,0C401H 两条语句,在运行之后,系统没有报错,也生成了执行文件,但是一打开执行文件, 文件马上就返回DOS系统。而逻辑笔也没有任何跳变。我幵始觉得自己是否将初始值送进了两个计数器,后来发现,两个计数器的端口地址忘了写入。
五、实验结果及分析:
1.对于实验一,设计数器0为工作方式0,执行计数功能。输入计数初值9,并手动逐个输入单脉冲,输入前9 个脉冲时,逻辑笔绿灯亮,此时为低电平,屏幕上显示数字由9 逐个递减,当输入第十个脉冲时,计数完毕,逻辑笔红灯亮,此时为高电平。屏幕上快速连续显示计数值,因为程序中并没有写入控制屏幕输出的部分, 由于计算机执行频率较快,导致屏幕不停输出计数值。
2.计数器0 和计数器1 均为工作方式3,执行方波发生器的功能。输入计数初
值1000,从计数器0的clkO端输入1MHZ脉冲,经过计数器0的1000分频变为1KHZ 脉冲。将计数器0 的输出端与计数器1 的clk1 相连接,再经计数器1 的1000分频,从outl输出
1HZ脉冲。因此,逻辑笔的绿灯和红灯交替闪亮,频率均为1H乙若实
验时写入均1000H,结果就是每隔2.56s亮一次。