[工学]单片机交通灯汇编代码.docVIP

  • 17
  • 0
  • 约1.07万字
  • 约 10页
  • 2018-02-16 发布于浙江
  • 举报
[工学]单片机交通灯汇编代码

1、倒计时交通灯 源程序: CMD_8279 EQU 0BF01 DATA_8279 EQU 0BF00 ORG OOOOH LJMP MAIN ORG 000BH LJMP INT_T0 ORG 0040H MAIN: MOV SP,#50H LCALL INIT8279 MOV 30H,#16 MOV 31H,#16 MOV 20H,#0 MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H MOV IE,#82H CLR TR0 MOV 40H,#00H ;主循环用于检测有没有键按下,并取键值 STAR: LCALL DISPLAY STAR0: LCALL SCAN_KEY JNC STAR0 STAR1: LCALL KEY_NUM CJNE A,#0AH,NEQ MOV A,30H SWAP A ADD A,31H MOV 50H,A LCALL JIAOTONG NEQ: JNC KEY_B SJMP DATAKEY KEY_B: CJNE A,#0BH,STAR0 SETB 20H.1 LJMP STAR DATAKEY: MOV 30H,31H MOV 31H,A LJMP STAR ;交通灯控制程序 JIAOTONG:MOV P1,#7EH LCALL DISPLAY30S JB 20H.1,MAIN MOV P1,#0BDH LCALL DISPLAY2S JB 20H.1,MAIN MOV P1,#0DBH LCALL DISPLAY30S JB 20H.1,MAIN MOV P1,#0BDH LCALL DISPLAY2S JB 20H.1,MAIN SJMP JIAOTONG ;8279初始化程序 INIT8279:MOV DPTR,#CMD_8279 MOV A,#34H MOVX @DPTR,A MOV A,#90H MOVX @DPTR,A INIT8279_1:LCALL CLEAR MOV A,#90H MOVX @DPTR,A RET CLEAR: MOV A,#0DEH MOV DPTR,#CMD_8279 MOVX @DPTR,A WAIT1: MOVX A,@DPTR JB ACC.7,WAIT1 RET ;扫描键盘并取键值子程序 ;键值存放在A中 SCAN_KEY:MOV DPTR,#CMD_8279 MOVX A,@DPTR READ_FIFO:ANL A,#7 JZ NO_KEY READ: MOV A,#40H MOVX @DPTR,A MOV DPTR,#DATA_8279 MOVX A,@DPTR SETB C SCAN_KEY1:RET NO_KEY: CLR C SJMP SCAN_KEY1 KEY_NUM:ANL A,#3FH RET ;显示子程序 DISPLAY:PUSH 07H MOV R0,#30H MOV DPTR,#LED_TAB MOV P2,#0BFH MOV R1,#01H MOV A,#90H MOVX @R1,A MOV R1,#00H MOV R7,#2 DISPLAY1:MOV A,@R0 MOVC A,@A+DPTR MOVX @R1,A INC R0 DJNZ R7,DISPLAY1 POP 07H RET ;共阳极LED字形码表 LED_TAB: DB 0C0H,0F9H,0A4H,0b0h,99h,92h,82h,0f8h; DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH; DB 0FFH; ;中断服务子程序 INT_T0: PUSH ACC MOV TH0,#3CH MOV TL0,#0B0H INC 40H MOV A,40H CJNE A,#20,INT_T01 MOV 40H,#00H CLR C CLR A MOV A,#9AH SUBB A,#01H ADD A,60H DA A MOV 60H,A INT_T01: POP ACC RETI ;延时30S并显示子程序 DISPLAY30S:MOV 60H,50H LCALL DECSEC RET ;延时2S并显示子程序 DISPLAY2S:MOV 60H,#02H LCALL DECSEC RET ;自减1子程序 DECSEC: SETB TR0 MOV A,60H MOV R0,#31H LCALL P_BCD LCALL DISPLAY LCALL SCAN_KEY JC

文档评论(0)

1亿VIP精品文档

相关文档