ORG 0000H SJMP DISPLAY ORG 0003H LJMP BUTTON ; 外部0中斷入口地址 ORG 000BH LJMP DINGSHI ; 定時(shí)中斷T0入口地址 ORG 0030H ; LED顯示程序?yàn)橹鞒绦?nbsp; DISPLAY: SETB EA ; 打開中斷總開關(guān) SETB EX0 ; 打開外部中斷0開關(guān) SETB IT0 ; 打開外部中斷0下降沿觸發(fā) MOV TMOD,#51H ; 設(shè)置定時(shí)工作方式 MOV TL0,#0FFH ; 設(shè)置定時(shí)初值 MOV TH0,#0FFH MOV TH1,#00H T1清零 MOV TL1,#00H SETB P3.5 置T1為輸入方式 JB P3.5,$ 等待低電平 MOV IE,#88H CPU開中斷,T0開中斷 SETB TR0 啟動(dòng)T0定時(shí) SETB TR1 啟動(dòng)T1計(jì)數(shù) MOV SP,#30H 設(shè)置堆棧指針 CLR P0.5 CLR P0.6 CLR P0.7 MOV DPTR, TAB ; 夜晶顯示的字符首地址 MOV R0,#00H ; 脈寬的初值 MOV R3,#00H MOV R4,#00H MOV 60H,#200 MOV 70H,#200 LP1: LCALL DELAY DJNZ 60H,LP1 MOV 60H,#200 CLR TR1 停止T1計(jì)數(shù) MOV 31H,TH1 將T1計(jì)數(shù)值送31H,30H MOV A 31H MOV B,#10 A小,B送10 DIV AB 除,商在A中,余數(shù)在B中 MOV 50H,A 十位送50H MOV 51H,B 個(gè)位位送51H MOV R1,#50H 顯示緩沖區(qū)首地址如R1 MOV R2,#00DH 首位顯示字入R2 DISC: MOV A,@R1 查段碼,待查BCD碼送A中 MOV DPTR,#TAB 段碼表首地址送DPTR MOVC A,@A+DPTR 查段碼指令 MOV P1,#A 段碼送入P1 口 LCALL DELAY 延時(shí),使視覺暫留,延時(shí)1ms INC R1 指向下一個(gè)顯示單元 MOV A,R2 判斷位輪流顯示完 JNB ACC.0,DEND 2位完,轉(zhuǎn)結(jié)束 RR A 2位未完,右移使下一顯示控制口為0 MOV R2,A AJMP DISC 2位未完,繼續(xù)顯示 DEND:RET 2位完,程序借宿 ORG 2000H DINGSHI: ; 定時(shí)中斷服務(wù)程序 CPL P0.7 JNB P0.7,Z1 ; 周期一定 MOV A,#0FFH SUBB A,R0 MOV TH0,A SETB TR0 RETI Z1: MOV TH0,R0 ; 脈寬 SETB TR0 RETI BUTTON: ; 從控制鍵盤中讀取操作命令 PUSH ACC CLR EX0 CLR EA INC R7 ; MOV A,#0FFH MOV P2,A MOV A,P2 JNB ACC.7,AA0 JNB ACC.6,KK0 JNB ACC.5,ZZ JNB ACC.4,FF JNB ACC.3,WW0 AJMP QQ AA0: CJNE R0,#0FFH,AA1 ; 加速操作(相等順序執(zhí)行) AJMP QQ AA1: MOV A,R0 ADD A,#5 MOV R0,A AJMP QQ KK0: CJNE R0,#00H,MM ; 減速操作(相等順序執(zhí)行) AJMP QQ MM: MOV A,R0 SUBB A,#5 MOV R0,A AJMP QQ QQ: SETB EX0 LCALL DELAY LCALL DELAY LCALL DELAY SETB EA POP ACC RETI ZZ: SETB P0.5 ; 正轉(zhuǎn)操作 CLR P0.6 LCALL DELAY LCALL DELAY LCALL DELAY SETB EX0 SETB EA POP ACC RETI FF: CLR P0.5 ; 反轉(zhuǎn)操作 SETB P0.6 LCALL DELAY LCALL DELAY LCALL DELAY SETB EX0 SETB EA POP ACC RETI WW0: CLR P0.5 ; 停止操作 CLR P0.6 LCALL DELAY LCALL DELAY LCALL DELAY SETB EX0 SETB EA POP ACC RETI TAB:DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH “0” “1” “2” “3” “4” “5” “6” “7” “8” “9” DELAY: MOV R5,#50 延時(shí)5ms DL7: MIV R6,#50 DL6: DJNZ R6,DL6 DJNZ R5,DL7 RET
|