资源描述:
《实验六 定时器实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验六定时器实验一、实验目的1、学习8031内部计数器的使用和编程方法。 2、进一步掌握中断处理程序的编写方法。二、实验设备EL-8051-III型单片机实验箱三、实验原理1、定时常数的确定 定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。本实验中时钟频率为6.0MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。 时间常数可按下述方法确定:
2、 机器周期=12÷晶振频率=12/(6×106)=2us 设计数初值为X,则(2e+16-X)×2×106=0.1,可求得X=15535 化为十六进制则X=3CAFH,故初始值为TH1=3CH,TL1=AFH 2、初始化程序 包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行 正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP便不必设置。 3、设计中断服务程序和主程序 中断服务程序除了要完成计数减一工作外,还要将时间常
3、数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。四、实验题目由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。要求编写程序模拟一循环彩灯。彩灯变化花样可自行设计。例程给出的变化花样为:①L1、L2、…L8依次点亮;②L1、L2、…L8依次熄灭;③L1、L2、…L8全亮、全灭。各时序间隔为0.5秒。让发光二极管按以上规律循环显示下去。五、实验电路六、实验步骤P1.0~P1.7
4、分别接发光二极管L1~L8即可。七、程序框图开始主程序框图置首显示码(A)、初始地址偏移量(R1)、计数初值(R0)定时器1初始化,设计数初值开放EA,ET1及TR1R0为0否?装计数初值于R0指向下一个显示代码单元地址偏移量为15H?从表中取显示码输出显示中断入口中断入口关闭计数控制位计数值减一装入时间常数开放计数控制位中断返回装入初始偏移量03H八、参考程序NAMET6;定时器实验 OUTPORTEQU0CFB0H CSEGAT0000H LJMPS
5、TART CSEGAT401BH;定时器/计数器1中断程序入口地址 LJMPINT CSEGAT4100H START:MOVA,#01H;首显示码 MOVR1,#03H;03是偏移量,即从基址寄存器到表首的距离 MOVR0,#5H;05是计数值 MOVTMOD,#10H;计数器置为方式1 MOVTL1,#0AFH;装入时间常数 MOVTH1,#03CH O
6、RLIE,#88H;CPU中断开放标志位和定时器 ;1溢出中断允许位均置位 SETBTR1;开始计数 LOOP1:CJNER0,#00,DISP MOVR0,#5H;R0计数计完一个周期,重置初值 INCR1;表地址偏移量加1 CJNER1,#31H,LOOP2 MOVR1,#03H;如到表尾,则重置偏移量初值 LOOP2:MOVA,R1;从表中取显示码入累加器 MOVCA,@A+PC
7、 JMPDISP DB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH DB0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH DB0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H DISP:;MOVDPTR,#OUTPORT
8、 ;MOVX@DPTR,A MOVP1,A;将取得的显示码从P1口输出显示 JMPLOOP1 INT:CLRTR1;停止计数 DECR0;计数值减一 MOVTL1,#0AFH;重置时间常数初值 MOVTH1,#03CH SETBTR1;开始计数 RETI;中断返回 END