 ;********WAVE-E6000/T******************************* ;*MCU: AT89C51 * ;*MCU-crystal: 12M * ;*Version: 00 * ;*Last Updata: * ;*Author: www.picavr.com * ;*Description: 超聲波測距 ;晶振采用6M,P1口為數(shù)碼管段輸出口,P3.0~P3.2為 * ;數(shù)碼管位輸出口,P3.5超聲波;發(fā)送輸出,P3.7超聲波收 * ;*************************************************** ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 中斷入口程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG 0000H ljmp start ORG 002BH ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 主 程 序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; START: MOV R0,#70H MOV R7,#0BH MOV 20H,#00H CLEARDISP: MOV @R0,#00H INC R0 DJNZ R7,CLEARDISP MOV TMOD,#99H cjzcx:MOV TL0,#00H MOV TH0,#00H MOV R0,#0bH MOV r1,#0bh MOV 16h,#03H MOV 15h,#54H MOV 17h,#90h puzel:MOV 14h,#32h ;超聲波發(fā)射持續(xù)200ms here:cpl p3.5 ;輸出40kHz方波 nop nop nop djnz 14h,here setb tr0 setb p3.2 mq:djnz 15h,$ djnz 16h,mq QBA:JNB P3.7,QBC DJNZ R1,QBA DJNZ R0,QBA QBC:djnz 17h,QBC clr p3.2 clr tr0 MOV 70h,tl0 MOV 71h,th0 MOV r2,71h MOV r3,70h MOV r6,#22H MOV r7,#0H LCALL MULD MOV r6,#64H MOV r7,#0H LCALL DIVD MOV 73H,R2 MOV 74H,R3 CLR R3 CLR R4 CLR R5 MOV R6,73H MOV R7,74H LCALL HB2 MOV A,R4 MOV B,#10H DIV AB MOV 78H,A MOV 77H,B MOV A,R5 MOV B,#10H DIV AB MOV 76H,A MOV 75H,B MOV a,78h cjne a,#0h,pdcx MOV a,77h cjne a,#5h,pdcx MOV a,76h cjne a,#0h,pdcx MOV 78h,#0bh MOV 77h,#0bh MOV 76h,#0bh ajmp xxcx pdcx:MOV a,78h cjne a,#4h,xxcx MOV a,77h cjne a,#0h,xxcx MOV a,76H cjne a,#0h,xxcx MOV 78h,#0ah MOV 77h,#0ah MOV 76h,#0ah xxcx:MOV 7AH,#0EFH XXX:LCALL DISPLAY DJNZ 7AH,XXX ajmp cjzcx MULD:MOV A,R3 MOV B,R7 MUL AB MOV R4,B MOV R5,A MOV A,R3 MOV B,R6 MUL AB ADD A,R4 MOV R4,A CLR A ADDC A,B MOV R3,A MOV A,R2 MOV B,R7 MUL AB ADD A,R4 MOV R4,A MOV A,R3 ADDC A,B MOV R3,A CLR A RLC A XCH A,R2 MOV B,R6 MUL AB ADD A,R3 MOV R3,A MOV A,R2 ADDC A,B MOV R2,A RET DIVD:CLR C MOV A,R3 SUBB A,R7 MOV A,R2 SUBB A,R6 JC DVD1 SETB OV RET DVD1:MOV B,#10H DVD2:CLR C MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A XCH A,R2 RLC A XCH A,R2 MOV F0,C CLR C SUBB A,R7 MOV R1,A MOV A,R2 SUBB A,R6 ANL C,/F0 JC DVD3 MOV R2,A MOV A,R1 MOV R3,A INC R5 DVD3:DJNZ B,DVD2 MOV A,R4 MOV R2,A MOV A,R5 MOV R3,A CLR OV RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; BCD轉(zhuǎn)換 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; HB2:CLR A ;BCD碼初始化 MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H ;轉(zhuǎn)換雙字節(jié)十六進(jìn)制整數(shù) HB3:MOV A,R7 ;從高端移出待轉(zhuǎn)換數(shù)的一位到CY中 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ;BCD碼帶進(jìn)位自身相加,相當(dāng)于乘2 ADDC A,R5 DA A ;十進(jìn)制調(diào)整 MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 顯示程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISPLAY:MOV R1,#76H MOV R5,#0FEH PLAY:MOV A,R5 MOV P3,A ;累加器A中的數(shù)值送P3口 MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR ; MOV P1,A ;累加器A中的數(shù)值送P1口 MOV R6,#14H DL1:MOV R7,#19H DL2:DJNZ R7,DL2 DJNZ R6,DL1 INC R1 MOV A,R5 JNB ACC.2,ENDOUT RL A MOV R5,A AJMP PLAY ENDOUT:SETB P3.5 MOV P1,#0FFH ;立即數(shù)0FEH送P1口 RET TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0c6H,3fh END
|