📄 csb.asm
字号:
;********WAVE-E6000/T*******************************
;*MCU: AT89C51 *
;*MCU-crystal: 12M *
;*Version: 00 *
;*Last Updata: *
;*Author: www.picavr.com *
;*Description: 超声波测距
;晶振采用6M,P1口为数码管段输出口,P3.0~P3.2为 *
;数码管位输出口,P3.5超声波;发送输出,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 ;超声波发射持续200ms
here:cpl p1.0 ;输出40kHz方波
nop
nop
nop
djnz 14h,here
setb tr0
setb p2.6
mq:djnz 15h,$
djnz 16h,mq
QBA:JNB P3.2,QBC
DJNZ R1,QBA
DJNZ R0,QBA
QBC:djnz 17h,QBC
clr p2.6
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,#0FEH
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转换 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HB2:CLR A ;BCD码初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;转换双字节十六进制整数
HB3:MOV A,R7 ;从高端移出待转换数的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD码带进位自身相加,相当于乘2
ADDC A,R5
DA A ;十进制调整
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,#0EFH
PLAY:MOV A,R5
MOV P2,A ;累加器A中的数值送P2口?????????????????????????
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR ;
MOV P0,A ;累加器A中的数值送P0口
MOV R6,#14H
DL1:MOV R7,#19H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
INC R1
MOV A,R5
JNB ACC.6,ENDOUT
RR A
MOV R5,A
AJMP PLAY
ENDOUT:SETB P1.0
MOV P0,#0FFH ;立即数0FEH送P0口
RET
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -