杭电微机原理定时器计数器实验报告记录.docx
- 文档编号:12314717
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:17
- 大小:44.59KB
杭电微机原理定时器计数器实验报告记录.docx
《杭电微机原理定时器计数器实验报告记录.docx》由会员分享,可在线阅读,更多相关《杭电微机原理定时器计数器实验报告记录.docx(17页珍藏版)》请在冰豆网上搜索。
杭电微机原理定时器计数器实验报告记录
杭电微机原理定时器计数器实验报告记录
————————————————————————————————作者:
————————————————————————————————日期:
微型计算机原理与接口技术实验报告
班级:
学号:
姓名:
指导老师:
朱亚萍
实验名称:
定时器/计数器
8259单级中断控制器实验
实验六定时器/计数器
一、实验目的
1.学会8253芯片和微机接口的原理和方法;
2.掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容
用8253的0通道工作在方式3,产生方波。
三、实验接线图
图6-1
四、编程指南
1.8253芯片介绍:
8253是一种可编程定时/计数器,有三个十六位计数
器,其计数频率范围为0-2MHz,用+5V单电源供电。
8253的功能用途:
⑴ 延时中断
⑵ 可编程频率发生器
⑶ 事件计数器
⑷ 二进制倍频器
⑸ 实时时钟
⑹ 数字单稳态输出
⑺ 复杂的电机控制器
2.8253的六种工作方式:
⑴ 方式0:
计数结束中断
⑵ 方式l:
可编程频率发生
⑶ 方式2:
频率发生器
⑷ 方式3:
方波频率发生器
⑸ 方式4:
软件触发的选通信号
⑹ 方式5:
硬件触发的选通信号
五、实验程序框图
图6-2
六、实验步骤
1.断电连接导线,按图6-1连好实验线路:
⑴ 8253的GATE0接+5V;
⑵ 8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频
器的频率源为8.0MHZ,T→8.0MHZ。
2.在PC机和实验系统联机状态下,新建实验程序,编辑完成后进行保存
(保存后缀为.asm文件);
3.编译下载;
4.全速运行,运行程序。
七、实验程序
CODESEGMENT
ASSUMECS:
CODE
TIMEPROCFAR
START:
MOVDX,43H
MOVAL,37H
OUTDX,AL
MOVDX,40H
;控制口地址
;设置通道0,先读写低字节后读写高
;字节,方式3,BCD计数
;通道0口地址
MOVAL,00H
OUTDX,AL
MOVAL,90H
OUTDX,AL
JMP$
TIMEENDP
CODEENDS
ENDSTART
;先读写低字节
;后读写高字节
;结束程序
八、实验结果
将OUT0接二极管,相应的发光二极管会以一定周期闪烁。
九、实验中遇到的问题及解决方式
问题:
编程完成后,运行发现没有任何现象。
解决:
反复检查程序后,确认不是程序错误,猜测可能是CLK0输入时钟频率过高(查阅实验指导书,分频电路当脉冲输入为8.0MHZ时,T0-T7输出脉冲频率依次为4.0MHZ,2.0MHZ,1.0MHZ,500KHZ,250KHZ,125KHZ,62500HZ,31250HZ),于是再不该程序的情况下,直接将CLK0接T7,发光二极管开始以一定周期闪烁。
实验七 8259单级中断控制器实验
一、实验目的
1.掌握8259中断控制器的接口方法;
2.掌握8259中断控制器的应用编程。
二、实验内容
利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。
三、实验接线图
图7-1
四、编程指南
1.8259芯片介绍:
中断控制器8259A是专为控制优先级中断而设计的芯片。
它将中断源
优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。
因此无需
附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优
先模式和中断请求方式。
即中断结构可以由用户编程来设定。
同时,在不
需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级
的矢量中断系统;
中断序号
0
1
2
3
4
5
6
7
变量地址
20H
23H
24H
27H
28H
2BH
2CH
2FH
30H
22H
34H
37H
38H
3BH
3CH
3FH
表7-1
2.本实验中使用3号中断源IR3,“
”插孔和IR3相连,中断方式
为边沿触发方式,每拨二次AN开关产生一次中断,满5次中断,显示
“555555”。
如果中断源电平信号不符合规定要求,则自动转到7号中
断,显示“Err”。
五、实验程序框图
(c)IR7中断服务程序
(b)IR3中断服务程序
(a)主程序
图7-2
六、实验步骤
1.断电连接导线,按图7-1连好实验线路:
⑴ 8259的INT连8088的INTR;
⑵ 8259的INTA连8088的INTA;
⑶ “
”插孔和8259的3号中断IR3插孔相连,“
”端初
始为低电平;
⑷ 8259的CS端接FF80H孔。
2.在PC机和实验系统联机状态下,新建实验程序,编辑完成后进行保存
(保存后缀为.asm文件);
3.编译下载;
4.全速运行,运行程序。
七、实验程序
DATASEGMENT
BUFDB6DUP(?
)
CONTDB?
DATA1:
DB0c0h,0f9h,0a4h,0b0h,99h,
DB92h,82h,0f8h,80h,90h,
DB88h,83h,0c6h,0a1h,86h,
DB8eh,0ffh,0ch,89h,0deh,
DB0c7h,8ch,0f3h,0bfh,8fh
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
INT_1EQU0FF80H
INT_2EQU0FF81H
INT_IR3EQUADD1_IR3
INT_IR7EQUERR_IR7
MAINPROCFAR
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
CLD
CALLBUF1
CALLINIT_8259
CALLWRI_INTE
MOVCONT,1
STI
WATING:
CALLDISP
JMPWATING
MAINENDP
INIT_8259PROCNEAR
MOVDX,INT_1
MOVAL,13H
OUTDX,AL
MOVDX,INT_2
MOVAL,08H
OUTDX,AL
MOVAL,09H
OUTDX,AL
MOVAL,F7H
OUTDX,AL
RET
;BUF用于存需显示数据
;存放中断次数
;存放数码管显示码
;设置数据段与附加段段基址
;清方向标志
;初始化8259
;写入中断向量表
;开中断
;循环扫描显示并等待中断到来
;设置ICW1,边沿触发,单级使用
;设置ICW2,表示中断类型码是08H
;设置ICW4,缓冲方式,8086/88配置
;设置OCW1,开IR3中断
INIT_8259ENDP
WRI_INTEPROCNEAR
MOVAX,0
MOVES,AX
MOVDI,002CH
LEAAX,INT_IR3
STOSW
MOVAX,0
STOSW
MOVDI,003CH
LEAAX,INT_IR7
STOSW
MOVAX,0
STOSW
RET
WRI_INTEENDP
ADD1_IR3PROCNEAR
CTI
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAL,CONT
ANDAL,0FH
MOVBX,OFFSETBUF
MOV[BUF+5],AL
MOVAL,10H
MOVCX,5
R_DIS:
MOV[BX],AL
INCBX
LOOPR_DIS
MOVAL,20H
MOVDX,INT_1
OUTDX,AL
ADDCONT,1
CMPCONT,7
JNZR_CON
MOVCONT,1
CALLBUF2
INT_R:
POPDX
POPCX
POPBX
;ES指向中断向量表段地址0000H
;DI=IR3的偏移地址
;取中断服务子程序偏移地址
;放入中断向量表
;写中断服务子程序段地址
;放入中断向量表
;DI=IR7的偏移地址
;取中断服务子程序偏移地址
;放入中断向量表
;写中断服务子程序段地址
;放入中断向量表
;IR3中断服务子程序
;关中断,不允许中断嵌套
;保护现场
;取中断次数
;截取低四位
;取BUF偏移地址
;将AL的值放入BUF[5]
;清除显示
;六位数码管只显示CONT一位
;OCW2的EOI命令
;发EOI命令,结束中断
;记录本次中断
;判断中断次数是否达到5次
;达到,CONT置1
;显示“555555”
POPAX
STI
IRET
ADD1_IR3ENDP
ERR_IR7PROCNEAR
CLI
MOVAL,20H
MOVDX,INT_1
OUTDX,AL
CALLBUF3
STI
IRET
ERR_IR7ENDP
DISPPROCNEAR
MOVAL,0FFH
MOVDX,PA
OUTDX,AL
MOVCL,0DFH
MOVBX,OFFSETBUF
DIS1:
MOVAL,[BX]
MOVAH,00H
PUSHBX
MOVBX,OFFSETDATA1
ADDBX,AX
MOVAL,[BX]
POPBX
MOVDX,PB
OUTDX,AL
MOVAL,CL
MOVDX,PA
OUTDX,AL
PUSHCX
DIS2:
MOVCX,00A0H
LOOP$
POPCX
CMPCL,0FEH
JZLX1
INCBX
RORCL,1
JMPDIS1
LX1:
MOVAL,0FFH
MOVDX,PB
;恢复现场
;开中断
;中断返回
;IR7中断服务子程序
;关中断,不允许中断嵌套
;OCW2的EOI命令
;发EOI命令,结束中断
;开中断
;中断返回
;显示子程序
OUTDX,AL
RET
DISPENDP
BUF1PROCNEAR
MOVBUF,08H
MOVBUF+1,02H
MOVBUF+2,05H
MOVBUF+3,09H
MOVBUF+4,17H
MOVBUF+5,01H
RET
BUF1ENDP
BUF2PROCNEAR
MOVBUF,05H
MOVBUF+1,05H
MOVBUF+2,05H
MOVBUF+3,05H
MOVBUF+4,05H
MOVBUF+5,05H
RET
BUF2ENDP
BUF3PROCNEAR
MOVBUF,0eH
MOVBUF+1,18H
MOVBUF+2,18H
MOVBUF+3,10H
MOVBUF+4,10H
MOVBUF+5,10H
RET
BUF3ENDP
CODEENDS
ENDSTART
;在BUF中存放显示“8259-1”的数据
;在BUF中存放显示“555555”的数据
;在BUF中存放显示“ERR”的数据
八、实验结果
不拨动AN开关,显示“8259-1”每拨二次AN开关产生一次中断,满5次中断,显示“555555”,显示完“555555”后又从1开始计数中断次数,以此循环。
如果出现中断源电平信号不符合规定要求的情况,则自动转到7号中断,显示“Err”。
九、实验中遇到的问题及解决方式
问题:
程序编写过程中,不清楚实际情况下应该如何初始化8259及其向量表。
解决:
参考书中初始8259的程序以及初始向量表的程序,以及在实验过程中参
考其他同学程序,终于成功。
问题:
下好程序后拨动开关前,能够显示“8259-1”,但拨动两次后什么都不
再显示了。
解决:
猜测是程序大概是停在了中断子程序里。
检查程序后发现有一个跳转指
令存在逻辑错误,导致了中断内的死循环。
问题:
改好这个错误后,发现拨开关中断四次后就显示“555555”。
解决:
一定是比较的数据小了,应该是7。
因为DATA1中的显示码是从0开始
的,在AL=5时即显示为5。
但由于此程序的特殊结构,当AL=5,
CONT=6,因此,当再一次进入中断后CONT=7,所以比较的数据为7
才能让程序按照规定的方式运行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 定时器 计数器 实验 报告 记录