李红萍 马应魁
摘 要 介绍一种由8031单片机组成的自动报时控制器系统的硬件结构和程序设计。
关键词 单片机 定时器 中断 控制码
Single-chip Computer Automatic Chronopher
Li Hongping Ma Yingkui
Abstract:This paper presents the hardware composition and software design of automatic chronopher system controlled by 8031.
Key words:single-chip computer timer interruption control code
电脑时钟可模拟电子钟显示时、分、秒,此外还可根据学校的作息时间按时打铃,播放音乐和广播操节目。本系统设制了二个按钮,分别用来调时调分,以保证时钟与标准时间相吻合,打开电源开关即可运行。
本系统是通过MCS-51内部定时器T0产生中断来实现计时的。T0工作在定时器工作方式1,每100 ms产生一次中断,利用软件将基准100 ms(1/10 s)单元进行累加计数。当定时器产生10次中断后就产生了1秒信号,这时秒单元加1,同理,可对分单元和时单元计数,从而产生秒、分、时的时间值,并通过连接在8155A口、B口上的六位七段显示器进行显示。系统硬件框图如图1所示。
把学校的作息时间预先制成表格存入EPROM数据区中,利用软件每过1秒将当前时间与数据区时间相比较,相等说明要进行某一控制,从而可完成打铃、息铃、放广播操等控制。 数据区中每一项时间控制字需要占用8个存储单元:

8031单片机的P1.0用作电铃的开启和关闭,P1.4用作广播的开启和关闭,控制码的定义如表1。
表1
| 控制码 | 功 能 | 对应输出口 |
| FEH | 起动电铃 | P0.1控制电铃 |
| EFH | 起动广播操出 | P1.4控制广播 |
| FFH | 关闭装置 | P1.0 P1.4均输出关闭信号 |
| 00H | 数据区结束 | |

| 图1 参考源程序 ORG 0000H LJMP MAIN; 转主程序 ORG 0003H LJMP INT0; 转INT0中断 ORG 000BH LJMP CLOCK; 转定时器T0中断 ORG 0013H LJMP INT1; 转INT1中断 INT0中断服务程序: ORG 0050H INT0: CLR EX0 JNB P3.2,$ INC 28H MOV A,28H ADD A,#00H DA A MOV 28H,A SUBB A,#60H JC DSUP2 MOV 28H,#00H DSUP2:LCALL DSUP SETB EX0 RETI INT1中断服务程序: INT1:CLR EX1 JNB P3.3,$ INC 29H MOV A,29H ADD A,#00H DA A MOV 29H,A SUBB A,#24H编 JC DSUP3 MOV 29H,#00H DSUP3:LCALL DSUP SETB EX1 RETI 主程序: MAIN:MOV A,#03H MOV R0,#20H MOVX @R0,A MOV SP,#5AH MOV 2BH,#60H MOV 2CH,#60H MOV 2DH,#24H MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH MOV IE,#87H SETB TR0 LOOP:LCALL DSUP LJMP LOOP 显示程序: DSUP:MOV R0,#4FH MOV A,27H ACALL PTDS MOV A,28H ACALL PTDS MOV A,29H ACALL PTDS MOV R0,#4AH MOV R2,#0DFH MOV DPTR,#SEGPT DSUP1:MOV A,#00H MOV R1,#21H MOVX @R1,A MOV A,@R0 MOVC A,@A+DPTR MOVX @R1,A MOV A,R2 MOV R1,#22H MOVX @R1,A MOV R3,#00H DSUP4:DJNZ R3,DSUP4 INC R0 CLR C MOV A,R2 RR A MOV R2,A JB ACC.7,DSUP1 RET PTDS:MOV R1,A ACALL PTDS1 MOV A,R1 SWAP A PTDS1:ANL A,#OFH MOV @R0,A DEC R0 RET T0中断服务程序: CLOCK:PUSH PSW PUSH ACC SETB RS0 MOV TL0,#0B7H MOV TH0,#3CH INC 26H MOV A,26H CJNE A,#0AH,DONE MOV 26H,#00H MOV R0,#27H MOV R1,#28H MOV R3,#03H LOOP0:MOV A,@R0 ADD A,#01H DA A MOV @R0,A MOV 38H,@R1 CJNE A,38H,DONE0 MOV @R0,#00H INC R0 INC R1 DJNZ R3,LOOP0 DONE0:ACALL LOOP1 DONE:POP ACC POP PSW RETI 控制程序: LOOP1:MOV DPTR,#100CH MOV 2EH,DPL LOOP4:MOV DPL,2EH MOV R3,#04H MOV R1,#2AH LOOP2:INC DPTR DJNZ R3,LOOP2 MOV 2EH,DPL MOV R3,#03H CLR A MOVC A,@A+DPTR JZ LOOP3 MOV 3AH,A LOOP5:INC DPTR DEC R1 CLR A MOVC A,@A+DPTR MOV 3BH,A MOV A,@R1 CJNE A,3BH,LOOP4 DJNZ R3,LOOP5 MOV A,3AH CPL A MOV P1,A LOOP3:RET 李红萍(兰州石化职业技术学院 730060) 马应魁(兰州石化职业技术学院 730060) |