文档详情

微机原理实验:定时器_计数器.doc

发布:2019-06-27约2.96千字共4页下载文档
文本预览下载声明
可编程定时器/计数器(8253) 一、实验目的 掌握8253的基本工作原理和编程方法。 二、实验内容 1.按下图虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0遍高电平)。 2.按下图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1Hz)。 三、编程提示 8253控制寄存器地址: 283H—0C403H 计数器0地址: 280H—04C400H 计数器1地址: 281H—04C401H CLK0连接时钟:1MHz。 2、程序参考流程图 开始 开始 设置计数器0为工作方式0 送计数器初值 读计数器值 显示计数值 结束 结束 开始 设计数器1为工作方式3 向计数器1送初值1000 先送低字节后送高字节 向计数器0送初值1000 先送低字节后送高字节 计数器0位工作方式3 有键按下吗? Y N 实验1 实验2 四、程序设计及实验调试 程序设计的思想及注意事项: 第一个实验,在编程时要注意机器识别的ASCII码和输入数据数字的区别,可以根据书上ASCII码和输入数据的转换关系,当数据在0—9之间,对数据加30H即可对应机器识别的ASCII码,对于A—F之间则加37H。编程时采用了二号功能键输出显示,六号功能键进行输入操作。 第二个实验,在向计数器0和计数器1送初始值时,要注意先送低字节后送高字节,送入的数据应是1000而非1000H,否则最后出现逻辑笔跳变的时间不是1s。 实验一: CODE SEGMENT ASSUME CS:CODE START: MOV DX,0C403H MOV AL ;计数器0工作方式为0 OUT DX MOV DX,0C400H MOV AL,09H ;送计数器初值 OUT DX XUNHUAN: MOV DX,0C400H IN AL,DX ;读计数器的值 CMP AL,9 JG BIG ADD AL,30H ;0到9,显示ASCII码 JMP JUDGE BIG: ADDAL,37H ;大于9,显示ASCII码 JMP JUDGE JUDGE: MOV DL,AL 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 ;计数器0,工作方式3 MOV DX,0C403H OUT DX,AL ;写控制口 MOV AX,1000 MOV DX,0C400H OUT DX MOV AL,AH OUT DX,AL ;计数器0送初值1000 MOV AL MOV DX,0C403H ;计数器1,工作方式3 OUT DX MOV AX,1000 MOV DX,0C401H OUT DX MOV AL,AH OUT DX,AL ;计数器1送初值1000 MOV AH,4CH INT 21H CODE ENDS END START 实验中遇到问题及分析: 由于在软件编程时注意到了送初始值为1000,
显示全部
相似文档