本例中使用了INT0中断(80C196为EXTINT 中断),一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。本例的中断程序保护了 PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。 INT0(P32)端(80C196为EINT端)接单次脉冲发生器。P1.0接LED灯,以查看信号反转。
六、实验框图
图3 外中断程序流程图
七、思考题
1、中断的含义及作用?
2、MCS-51有中断源及其中断优先级? 3、MCS-51如何对中断进行响应和初始化?
4
实验三 定时器实验
实验学时:2
实验类型:设计/研究 实验要求:必修
一、实验要求
用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转.
二、实验目的
1、学习 8031内部计数器的使用和编程方法。 2、进一步掌握中断处理程序的编程方法。
三、实验电路及连线
四、实验说明
1、 关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。 内部计数器在单片机中主要有定时器和计数器两个功能。本实验使用的是定时器。 2、 定时器有关的寄存器有工作方式寄存器 TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式 0-3, 并确定用于定时还是用于计数。 TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 3、内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是 12个振荡器周期。 因为实验系统的晶振是6MHZ,本程序工作于方式 2,即 8位自动重装方式定时器, 定时器100us中断一次, 所以定时常数的设置可按以下方法计算: 机器周期=12÷6MHZ=2uS (256-定时常数)×2uS=100us
定时常数=206. 然后对 100us中断次数计数10000次,就是1秒钟.
5
4、 在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。 5、对于80C196,与定时器有关的寄存器为 IOC1.2和INT-MASK。IOC1.2为定时器1溢出中断允许/禁止位。INT-MASK的第 0位为定时器溢出屏蔽位。
6、对于 80C196,在设置中断定时常数时,要注意先设置窗口寄存器WSR,设置完常数后,再恢复原WSR值。
五、实验框图
6
实验四 键盘/数码管实验(人机接口)
实验学时:2
实验类型:设计/研究 实验要求:必修
一、实验目的
1、了解数码管动态显示的原理; 2、了解总线控制方式控制数码管显示; 3、掌握键盘和显示器的接口方法和编程方法; 4、掌握键盘扫描和LED八段数码显示器的工作原理。
二、实验要求
1、学会数码管动态显示的工作原理;
2、了解键盘和现实器的接口方式及其编程原理;
3、利用实验仪提供的键盘扫描电路和显示电路,完成扫描键盘和数码显示实验,把按键输入的键码在六位数码管上显示出来;
三、实验设备
1、带有伟福单片机调试环境的PC机一台 2、仿真试验仪一套 3、导线若干
四、实验电路及连线
7
图4 人机接口实验接线原理图 表1 八段数码管字形代码表
五、实验说明
本实验程序可分为三个模块:
1、键输入模块:扫描键盘、读取一次键盘并将按键值存入键值缓冲单元; 2、显示模块:将显示单元的内容在显示器上动态显示; 3、主程序:调用键输入模块和显示模块。
本实验仪提供了一个6x4的小键盘,向列扫描码地址(OX002H)逐列输出低
8