SOUTH_RED EQU P1.0 SOUTH_YELLOW EQU P1.1 SOUTH_GREEN EQU P1.2 EAST_RED EQU P1.3 EAST_YELLOW EQU P1.4 EAST_GREEN EQU P1.5 SECOND_FLAG BIT 00H TIME_COUNT0 DATA 30H TIME_COUNT1 DATA 31H STATUS_FLAG DATA 32H SECOND_COUNT DATA 33H ORG 000H LJMP MAIN ORG 000BH LJMP T0_INT ORG 0100H MAIN:MOV SP,#60H LCALL INIT LCALL T0_INT LOOP: JNB SECOND_FLAG,LOOP LCALL STATUS_CHANGE CLR SECOND_FLAG SJMP LOOP STATUS_CHANGE:MOV A,STATUS_FLAG ADD A,STATUS_FLAG MOV DPTR,#STATUS_PROC_TABLE JMP @A+DPTR STATUS_PROC_TABLE:AJMP STATUS1 AJMP STATUS2 AJMP STATUS3 AJMP STATUS4 STATUS1:DJNZ SECOND_COUNT,STATUS1_EXIT MOV SECOND_COUNT,#10 MOV STATUS_FLAG,#01H STATUS1_EXIT: RET STATUS2:DJNZ SECOND_COUNT,STATUS2_EXIT MOV SECOND_COUNT,#40 MOV STATUS_FLAG,#02H SETB SOUTH_RED CLR SOUTH_YELLOW SETB SOUTH_GREEN CLR EAST_RED SETB EAST_YELLOW SETB EAST_GREEN RET STATUS2_EXIT: CPL SOUTH_GREEN RET STATUS3:DJNZ SECOND_COUNT,STATUS3_EXIT MOV SECOND_COUNT,#10 MOV STATUS_FLAG,#03H STATUS3_EXIT: RET STATUS4:DJNZ SECOND_COUNT,STATUS4_EXIT MOV SECOND_COUNT,#60 MOV STATUS_FLAG,#00H CLR SOUTH_RED SETB SOUTH_YELLOW SETB SOUTH_GREEN SETB EAST_RED CLR EAST_YELLOW SETB EAST_GREEN RET STATUS4_EXIT:CPL EAST_GREEN RET INIT:SETB SOUTH_RED SETB SOUTH_YELLOW CLR SOUTH_GREEN CLR EAST_RED SETB EAST_YELLOW SETB EAST_GREEN MOV TIME_COUNT0,#250 MOV TIME_COUNT1,#8 MOV SECOND_COUNT,#60 MOV STATUS_FLAG,#00H CLR SECOND_FLAG RET T0_INT:DJNZ TIME_COUNT0,T0_INT_EXIT MOV TIME_COUNT0,#250 DJNZ TIME_COUNT1,T0_INT_EXIT MOV TIME_COUNT1,#8 SETB SECOND_FLAG T0_INT_EXIT: RETI T0_INT_INIT: MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H MOV TCON,#10H SETB EA SETB ET0 RET END
頂!
我建議你現(xiàn)在不要寫這么長的程序,先把基本的如中斷,定時,流水燈等等!
加油,我也是初學(xué)者!
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |