定时器及中断1秒基时Word文件下载.docx
《定时器及中断1秒基时Word文件下载.docx》由会员分享,可在线阅读,更多相关《定时器及中断1秒基时Word文件下载.docx(12页珍藏版)》请在冰点文库上搜索。
图4-4定时器0实验接线图
参考程序:
ORG8000H
AJMPMAIN
ORG800BH
AJMPT0S
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#4CH
MOVTL0,#00H
MOVR2,#00H
MOVIE,#10000010B
SETBTR0
CLRP1.4
SJMP$
T0S:
MOVTH0,#4CH
MOVTL0,#00H
INCR2
CJNER2,#20,NEXT
CPLP1.4
MOVR2,#00H
NEXT:
RETI
END
注:
机器LED1LED2LED3LED4损坏,因此用排线讲A2区的J61接口与D1区的J52接口相连,程序中P1.0改为P1.4(使LED5亮)
记录结果如下:
(红色表示改变的数值)
数值
R0
0xfe
R1
0x00
R2
0x0c
R3
Ox33
R4
0x2e
R5
R6
R7
0x06
实验结果:
LED灯间隔1秒钟灯闪亮一次
结果参照视频01
2)采用定时器0,方式1,定时50MS,查询方式,当1S时间到后,使P1.5闪亮。
参考程序:
AJMPMAIN
MOVTMOD,#01H;
T/C0定时,方式1。
MOVTH0,#4CH;
T0定时50MS。
MOVTL0,#00H
MOVR2,#00H;
软件计数器初值
SETBTR0
LOOP:
JBCTF0,T0S
SJMPLOOP
CJNER2,#20,NEXT;
1S使P1.5取反一次。
CPLP1.5
END
机器LED1LED2LED3LED4损坏,因此用排线讲A2区的J61接口与D1区的J52接口相连,程序中P1.0改为P1.5(使LED6亮)
结果参照视频02
3)采用GATE=1时,利用信号/INT0与TR0双重启动T/C0,产生1S延时。
用导线将A2区的P10与D1区的LED1相连,用导线将A2区的INT0与D1区的SW1相连,运行相面程序前先将SW1置在0位,程序运行后将SW1置在1位,观察LED1的闪亮情况,然后将SW1再置在0位,LED1将停止闪亮,再SW1置在1位,重复前述步骤,观察GATA与/INT0引脚信号的作用。
注意:
调试前,SW1一定处于0的位置。
参考程序:
ORG800BH
MOVTMOD,#09H;
T/C0定时,方式1,GATE=1。
T0定时50MS,中断一次。
MOVIE,#10000010B
SETBTR0
CLRP1.0
SJMP$
1S使P1.0取反一次。
CPLP1.0
MOVR2,#00H
1.当SW1置0时,现象如下:
八个灯(实际上仅后四个灯)常亮,但是不闪烁
2.当SW1置1时,现象如下:
八个灯(实际上仅后四个灯)闪烁
3.改变SW1的位置则继续按照上述规律变化
方案2:
采用T/C0与T/C1级联加软件计数的方法。
1)电路图如图4-5所示。
2)接线方法:
⑴断开DP-51PROC实验仪的电源,按图3-5接线,
使用排线将A2区的J61接口与D1区的J52接口相连,
⑵使用导线把A2区的P3.0与A2区T1(P3.5)相连。
3)参考程序:
ORG8000H
LJMPMAIN
LJMPTC0SV
ORG801BH
LJMPtc1SV
ORG8100H
MOVSP,#70H
MOVTMOD,#61H
MOVTH1,#0FBH
MOVTL1,#0FBH
MOVTH0,#4CH;
SETBET1
SETBET0
SETBEA
SETBTR1
SETBTR0
MOVR2,#0
SETBP3.0
MOVA,#0FH
MOVP1,A
SJMP$
TC1SV:
INCR2
CJNER2,#2,NEXT
CPLA
NEXT:
RETI
TC0SV:
MOVTH0,#4CH
CPLP3.0
END
四个灯为一组,交替闪烁,右边的灯首先开始
2、计数器实验
采用T/C0每计1个数,使8个LED全部点亮。
设计方案:
采用T/C0方式2,计数,每计1个数中断一次,在中断服务程序中,点亮/熄灭8个LED。
使用排线将A2区的J61接口与D1区的J52接口相连,用导线将A2区的T0与D1区的SW1相连,请自行画出电路。
调试前,SW1一定处于1的位置。
AJMPT0S
MOVTMOD,#06H;
T/C0定时,方式2。
MOVTH0,#0FFH;
计1个数,中断一次.
MOVTL0,#0FFH
SETBET0
SETBEA
MOVP1,#0FFH
SETB00H
JNB00H,MIEP1
MOVP1,#00H
CLR00H
MIEP1:
MOVP1,#0FFH
SETB00H
RETI
如下表
SW1值
灯的闪亮情况
1(初始)
灭
亮
1
三、思考题
1、将实验十一思考题2的软件延时修改为采用T/C0的硬件延时。
采用T/C0中断与/INT0中断方式实现8个LED循环点亮(左或右)。
设计程序如下
LJMPMAIN
ORG8003H
LJMPINTSV
LJMPTOS
MOVSP,#5FH
MOVTMOD,#01H
MOVIE,#83H
MOVA,#0FEH
SETBIT0
SETBPX0
CLRF0
SJMP$
TOS:
MOVTH0,#4CH+4
MOVTL0,#00H+4
INCR2
CJNER2,#255,NEXT
JBF0,TOS1
RRA
AJMPTOS2
TOS1:
RLA
NOP
TOS2:
MOVP1,A
INTSV:
CPLF0
END
LED从最后开始循环点亮
2、将实验1中T/C0定时改为25MS,软件计数应该为多少?
修改程序产生1S。
初值=65536-(25000*11.0592)/12=42496=0A600H
设计程序如下:
MOVSP,#5FH
MOVTH0,#A6H
MOVIE,#82H
CJNER2,#40,NEXT
CPLP1.4
MOVTH0,#A6H
END
LED4闪亮