按照題目要求,編寫了程序,用 PROTEUS 繪出了仿真電路圖。 ;============================================= ;題目:汽車轉(zhuǎn)向燈控制器的編程 ;1號鍵(左轉(zhuǎn)向)按下時(shí) 實(shí)現(xiàn)P3.6閃亮,P0-P2口左流水; ;2號鍵(右轉(zhuǎn)向)按下時(shí) 實(shí)現(xiàn)P3.7閃亮,P0-P2口右流水; ;3號鍵(剎車鍵)按下時(shí) 實(shí)現(xiàn)P0-P2口同時(shí)亮; ;4號鍵(緊急狀況鍵) 按下時(shí) 實(shí)現(xiàn)P3.6和P3.7同時(shí)閃亮。 ;按鍵按住時(shí),執(zhí)行上述程序,按鍵松開后關(guān)閉所有燈。 ;============================================= ;按照題目要求,編寫了程序,用 PROTEUS 繪出了仿真電路圖,運(yùn)行起來如下所示: ;程序如下: L_T BIT 00H ;按鍵標(biāo)志位 R_T BIT 01H S_T BIT 02H J_J BIT 03H SAME EQU 30H;按鍵緩沖區(qū) Runw EQU 31H ;31H 32H,共16位數(shù),當(dāng)做流水燈 SP_B EQU 33H ;棧底位置 ;-------------------------------- ORG 0000H SJMP START ORG 000BH SJMP T0_INT ;-------------------------------- START: MOV TMOD, #01H MOV TH0, #4CH ;定時(shí) MOV R3, #5 ;250ms閃爍一次 SETB TR0 MOV IE, #82H ;開中斷 MOV SP, #SP_B MOV Runw, #255 MOV Runw + 1, #0 ;-------------------------------- M_LOOP: MOV A, P1 ;讀一次按鍵 ANL A, #0FH MOV SAME, A ;保存 MOV R7, #40 ;延時(shí)約20ms MOV R6, #0 DJNZ R6, $ DJNZ R7, $ - 4 MOV A, P1 ;再讀一次按鍵 ANL A, #0FH CJNE A, SAME, M_LOOP ;兩次不等則是抖動 CPL A MOV C, ACC.3 ;保存按鍵信息 MOV R_T, C MOV C, ACC.2 MOV J_J, C MOV C, ACC.1 MOV S_T, C MOV C, ACC.0 MOV L_T, C SJMP M_LOOP ;繼續(xù)去讀 ;-------------------------------- T0_INT: MOV TH0, #4CH ;定時(shí) PUSH ACC DJNZ R3, T0_END ;不到5次就退出 MOV R3, #5 ;----------------------;以下每隔250ms執(zhí)行一次 LEFT: JNB L_T, RIGHT MOV A, Runw RRC A MOV Runw, A MOV A, Runw + 1 RRC A MOV Runw + 1, A MOV A, Runw MOV ACC.7, C MOV Runw, A MOV P2, Runw MOV P0, Runw + 1 SETB P3.7 CPL P3.6 JMP T0_END RIGHT: JNB R_T, STOP MOV A, Runw RLC A MOV Runw, A MOV A, Runw + 1 RLC A MOV Runw + 1, A MOV A, Runw MOV ACC.0, C MOV Runw, A MOV P2, Runw MOV P0, Runw + 1 CPL P3.7 SETB P3.6 JMP T0_END STOP: JNB S_T, JINJI MOV P2, #0 MOV P0, #0 SETB P3.7 SETB P3.6 JMP T0_END JINJI: JNB J_J, NOTHING MOV P2, #255 MOV P0, #255 CPL P3.7 CPL P3.6 JMP T0_END NOTHING: ;關(guān)閉所有的燈 MOV P2, #255 MOV P0, #255 SETB P3.7 SETB P3.6 T0_END: POP ACC RETI ;-------------------------------- END ;試驗(yàn)的時(shí)候,應(yīng)該釋放了前一個(gè)按鍵,再按下另一個(gè)按鍵,這才能有理想的結(jié)果。 |