大家好,我這個單片機新手又來麻煩大家了,我正在編寫一個紅綠燈在模擬板子上得程序,但數(shù)碼管顯示的部分始終實現(xiàn)不了,希望各位高手能指點一下,在下不勝感激。這是一個實現(xiàn)南北和東西方向的紅綠燈程序的一部分。其中東西方向紅燈延時30s,南北方向綠燈延時25s黃燈延時5s。我的問題主要是在東西方向在實現(xiàn)25s延時后剩下得5s,不知怎么和黃燈的5s取得統(tǒng)一。下面綠色部分即是在下困惑的地方,希望各位高手能個指點一二。謝謝 LED0 BIT P2.0 LED1 BIT P2.1 LED4 BIT P2.4 LED5 BIT P2.5 GRE0 EQU 30H RED0 EQU 31H YEL0 EQU 32H GRE1 EQU 33H RED1 EQU 34H YEL1 EQU 35H BUF_LED0 EQU 36H ;數(shù)碼存儲區(qū) BUF_LED1 EQU 37H BUF_LED4 EQU 38H BUF_LED5 EQU 39H BUF_LED3 EQU 40H LYEL0 EQU 51H ORG 00H AJMP MAIN ORG 0BH AJMP IT0P MAIN: MOV DPTR,#TABLE MOV TMOD,#01H MOV 21H,#100 MOV LYEL0,#0 MOV P1,#0FFH MOV P0,#0FFH MOV P2,#0FFH MOV BUF_LED0,#092H ;賦初值 5 MOV BUF_LED1,#0A4H ; 2 MOV BUF_LED4,#0C0H ; 0 MOV BUF_LED5,#0B0H ; 3 MOV SP,#60H MOV GRE0,#25 ;GRE0,RED0,YEL0南北方向燈的存儲區(qū) MOV RED0,#25 MOV YEL0,#5 MOV GRE1,#20 ;GRE1,RED1,YEL1東西方向燈的存儲區(qū) MOV RED1,#30 MOV YEL1,#5 MOV TH0,#0D8H ;賦初值1mS MOV TL0,#0F0H MOV IE,#82H SETB TR0 HERE: CALL XIANSHI SJMP HERE IT0P: PUSH Acc PUSH PSW MOV TH0,#0D8H MOV TL0,#0F0H DJNZ 21H,RETURN ;實現(xiàn)延時一秒 MOV 21H,#100 MOV A,RED1 ;東西燈30S DEC A MOV RED1,A ACALL FENLI MOVC A,@A+DPTR MOV BUF_LED5,A MOV A,B MOVC A,@A+DPTR MOV BUF_LED4,A MOV C,LYEL0 ;LYEL0作用是實現(xiàn)跳轉(zhuǎn)到黃燈,當C=1時跳到B1 JC B1 MOV A,GRE0 ;南北綠燈25S DEC A MOV GRE0,A ACALL FENLI MOVC A,@A+DPTR MOV BUF_LED1,A MOV A,B MOVC A,@A+DPTR MOV BUF_LED0,A MOV A,GRE0 CJNE A,#0FFH,B0 MOV LYEL0,#1 B1: MOV A,YEL0 ;南北黃燈5S DEC A MOV YEL0,A AJMP FENLI MOVC A,@A+DPTR MOV BUF_LED1,A MOV A,B MOVC A,@A+DPTR MOV BUF_LED0,A B0: MOV A,RED1 CJNE A,#0FFH,RETURN FENLI: MOV B,#10 ;實現(xiàn)個十位的分離 DIV AB RET RETURN: POP PSW POP Acc RETI XIANSHI:MOV P2,#11111110B ;數(shù)碼管1亮 MOV P0,BUF_LED0 ACALL DELAY MOV P2,#11111101B ;數(shù)碼管2亮 MOV P0,BUF_LED1 ACALL DELAY MOV P2,#11101111B ;數(shù)碼管4亮 MOV P0,BUF_LED4 ACALL DELAY MOV P2,#11011111B ;數(shù)碼管5亮 MOV P0,BUF_LED5 ACALL DELAY RET DELAY: MOV R6,#10 D2: MOV R7,#248 D3: DJNZ R7,D3 DJNZ R6,D2 RET TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END |