1.实验目的
(1)学习8031内部计数器的使用和编程方法。
(2)进一步掌握中断处理程序的编写方法。
2.实验设备
CPU挂箱、8031CPU模块等。
3.实验原理
1)定时常数的确定
定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。本实验中时钟频率为6MHz,现要采用中断方法来实现0.5s延时,要在定时器1中设置一个时间常数,使其每隔0.1s产生一次中断,CPU响应中断后将R0中计数值减1,令R0=05H,即可实现0.5s延时。时间常数可按下述方法确定:
机器周期=12÷晶振频率=12/(6×106)=2(μs)
设计数初值为X,则(216-X)×2×10-6=0.1,可求得X≈15 535,转化为十六进制,则X=3CAFH,故初始值为TH1=3CH,TL1=AFH。
2)初始化程序
初始化程序包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确设置,并将时间常数送入定时器中。由于只有定时器中断,因此IP不必设置。
3)设计中断服务程序和主程序
中断服务程序除了要完成计数减1工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制LED按要求顺序亮灭。其实验原理图同6.2.1节中的图6.13。(www.xing528.com)
4.实验内容
8031内部定时器T1按方式1工作,即作为16位定时器使用,每0.1s T1溢出中断一次。P1口的P1.0~P1.7分别接LED1~LED8。要求编写程序模拟一循环彩灯。彩灯变化顺序可自行设计。本实验给出的变化顺序如下:
(1)LED1、LED2、…、LED8依次点亮;
(2)LED1、LED2、…、LED8依次熄灭;
(3)LED1、LED2、…、LED8全亮、全灭。
各时序间隔为0.5s。使LED按以上规律循环显示。
5.实验步骤
P1.0~P1.7分别接LED1~LED8即可。编写程序,完成实验。
循环彩灯定时实验程序流程图如图6.29和图6.30所示。
图6.29 循环彩灯定时实验主程序流程图
图6.30 循环彩灯定时实验中断程序流程图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。