⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldxs.asm

📁 4方向倒车雷达程序,主芯片为PIC16F73A,显示用2051,10米开始报警,显示障碍物距离.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        MOV R7,#3
        LCALL D457
        MOV A,7BH
        SUBB A,R3
        MOV R3,A
        SJMP YUT

  RUB1: CLR C             ;小于70时需要用70减去它然后再除以3结果再加上原数
        MOV A,#70
        MOV 7AH,R3
        SUBB A,R3
        MOV R5,A
        MOV R4,#0
        MOV R7,#3
        LCALL D457
        MOV A,R3
        ADD A,7AH
        MOV R3,A


  ;      MOV 7FH,R3
 YUT:   MOV 7DH,R3           ;修正后的数据存7DH

        MOV A,R2
        MOV R6,A
        MOV A,R3
        MOV R7,A

        MOV A,R6
        JNZ XSA22         ;R6不为0则超过150CM转处理程序

        CLR C
        MOV A,R7
        SUBB A,#34
        JNC FAR1
        MOV 30H,#0
        MOV 31H,#0
        SETB 00H          ;0通道小于34CM标志
        LJMP XSA2

        SJMP JJ1          ;屏蔽两侧通道处理程序



FAR1:   CLR C             ;判断是否超过150CM?
        MOV A,#150
        SUBB A,R7
        JNC JJ1       ;不超过150CM转



XSA22:  MOV 30H,#10      ;超过150CM处理程序
        MOV 31H,#10
        CLR 02H
        SETB 01H         ;0通道大于150CM标志

        SJMP XSA2


 JJ1:  ; CLR 00H
       ; CLR 01H
        LCALL HB2

        MOV A,R4
        JNZ XSA1

        MOV A,R5       ;显示十位和个位
        ANL A,#0FH
        MOV 31H,A
        MOV A,R5
        ANL A,#0F0H
        SWAP A
        MOV 30H,A

        CLR 02H        ;关闭小数点

        SJMP XSA2

  XSA1: MOV A,R5          ;显示百位和十位
        ANL A,#0F0H
        SWAP A
        MOV 31H,A
        MOV A,R4
        ANL A,#0FH
        MOV 30H,A
        SETB 02H        ;打开小数点

 XSA2:  JNB 03H,KKI
        ;MOV 32H,#0FFH   ;无效数关闭灯
        LJMP LOOP

 KKI:   JNB 01H,LD01     ;通道判断
        MOV A,5CH
        SETB ACC.6    ;左1超过150CM,关灯
        SETB ACC.0
       ; CLR ACC.6
        MOV 5CH,A     ;全灭
        SJMP LD1B


  LD01: JNB 04H,LD02
        MOV A,5CH     ;左1超过90CM
        CLR ACC.0
        MOV 5CH,A       ;左1绿
     ;   LJMP LOOP
        SJMP LD1B

   LD02:MOV A,5CH      ;关左1绿
        SETB ACC.0
        MOV 5CH,A
  LD02B:JNB 00H,LD1
        MOV A,5CH        ;左1小于34CM
        CLR ACC.6
        MOV 5CH,A        ;左1红
    ;    LJMP LOOP
        SJMP LD1B

   LD1: ;CJNE A,#1,LD2
        MOV A,5CH
        CLR ACC.6          ;左1大于34CM小于90CM则亮黄灯
        CLR ACC.0
        MOV 5CH,A
        
  LD1B: JNB 05H,LD11
        MOV A,5CH         ; 左2红
        CLR ACC.4
        MOV 5CH,A
     ;   LJMP LOOP
        SJMP LD2B

  LD11: MOV A,5CH        ;关左2红
        SETB ACC.4
        MOV 5CH,A

  LD11B:JNB 06H,LD12
        MOV 5CH,A       ;左2灭
        SETB ACC.4
        SETB ACC.3
        MOV 5CH,A
      ;  LJMP LOOP
        SJMP LD2B

   LD12:JNB 07H,LD2
        MOV A,5CH
        CLR ACC.3
        MOV 5CH,A        ;左2绿
      ;  LJMP LOOP
        SJMP LD2B

   LD2: MOV A,5CH       ;左2黄
        CLR ACC.4
        CLR ACC.3
        MOV 5CH,A
      ;  CJNE A,#2,LD3
  LD2B: JNB 08H,LD21
        MOV A,5CH        ;右1红
        CLR ACC.1
        MOV 5CH,A
     ;   LJMP LOOP
        SJMP LD3B

  LD21: MOV A,5CH         ;关右1红
        SETB ACC.1
        MOV 5CH,A
 LD21B: JNB 09H,LD22
        MOV A,5CH         ;右1灭
        SETB ACC.1
        SETB ACC.7
        MOV 5CH,A
     ;   LJMP LOOP
        SJMP LD3B

  LD22: JNB 0AH,LD3        ;右1绿
        MOV A,5CH
        CLR ACC.7
        MOV 5CH,A
      ;  LJMP LOOP
        SJMP LD3B

  LD3: ; CJNE A,#3,LD4
        MOV A,5CH         ;右1黄
        CLR ACC.7
        CLR ACC.1
        MOV 5CH,A
  LD3B: JNB 0BH,LD31
        MOV A,5CH        ;右2红
        CLR ACC.2
        MOV 5CH,A
      ;  LJMP LOOP
        SJMP LD4B

  LD31: MOV A,5CH       ;关右2红
        SETB ACC.2
        MOV 5CH,A
  LD31B:JNB 0CH,LD32
        MOV A,5CH    ;右2灭
        SETB ACC.2
        SETB ACC.5
        MOV 5CH,A
     ;   LJMP LOOP
        SJMP LD4B

  LD32: JNB 0DH,LD4
        MOV A,5CH    ;右2绿
        CLR ACC.5
        MOV 5CH,A
     ;   LJMP LOOP
        LJMP LOOP

   LD4: MOV A,5CH     ;关右2绿
        CLR ACC.5
        CLR ACC.2
        MOV 5CH,A
        LJMP LOOP

  LD4B: LJMP LOOP


;        入口条件:被除数在R4、R5中,除数在R7中。
;出口信息:OV=0 时,单字节商在R3中,OV=1 时溢出。
;影响资源:PSW、A、R3~R7    堆栈需求:  2字节

D457:	CLR	C
	MOV	A,R4
	SUBB	A,R7
	JC	DV50
	SETB	OV	;商溢出
	RET
DV50:	MOV	R6,#8	;求平均值(R4R5/R7-→R3)
DV51:	MOV	A,R5
	RLC	A
	MOV	R5,A
	MOV	A,R4
	RLC	A
	MOV	R4,A
	MOV	F0,C
	CLR	C
	SUBB	A,R7
	ANL	C,/F0
	JC	DV52
	MOV	R4,A
DV52:	CPL	C
	MOV	A,R3
	RLC	A
	MOV	R3,A
	DJNZ	R6,DV51
	MOV	A,R4	;四舍五入
	ADD	A,R4
	JC	DV53
	SUBB	A,R7
	JC	DV54
DV53:	INC	R3
DV54:	CLR	OV
	RET



 ;入口条件:被除数在R2、R3、R4、R5中,除数在R6、R7中。
 ;出口信息:OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
 ;影响资源:PSW、A、B、R1~R7    堆栈需求:  2字节

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	;计算(R2R3-R6R7)
	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	;计算完十六位商(R4R5)
	MOV	A,R4	;将商移到R2R3中
	MOV	R2,A
	MOV	A,R5
	MOV	R3,A
	CLR	OV	;设立成功标志
	RET

;入口条件:待转换的双字节十六进制整数在R6、R7中。
 ;出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
 ;影响资源:PSW、A、R2~R7    堆栈需求:  2字节

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	;双字节十六进制数的万位数不超过6,不用调整
	DJNZ	R2,HB3	;处理完16bit
	RET

 YSZ1:  MOV 5FH,#20
 YSZZ:  MOV 5EH,#250
        DJNZ 5EH,$
        DJNZ 5FH,YSZZ
        RET


 TIMER: PUSH ACC
        PUSH PSW
        CLR TR0
        JNB 00H,HOP2
        SETB P3.1
        SJMP KKK
 HOP2:  JNB 01H,HOP1
        CLR P3.1
        SJMP KKK
 HOP1:  DJNZ 7EH,KKK
        MOV 7EH,#2
        DJNZ 7FH,KKK
        CPL P3.1
        MOV 7FH,7DH

 KKK:   JB P3.7,NEXT1
        SETB P3.4
        SETB P3.7
        MOV A,31H
        MOV DPTR,#BRT
        MOVC A,@A+DPTR
        JNB 02H,XS1
        CLR ACC.5
 XS1:   MOV P1,A
        NOP
        CLR P3.3
        SJMP BAK1

 NEXT1: JB P3.3,NEXT2
        SETB P3.3
        SETB P3.7
        MOV A,32H
        MOV P1,A
        NOP
        CLR P3.4
        SJMP BAK1

NEXT2:  JB P3.4,NEXT3
        SETB P3.3
        SETB P3.4
        MOV A,30H
        MOV DPTR,#BRT
        MOVC A,@A+DPTR
     ;   JNB 02H,XS2
     ;   CLR ACC.5
        SETB ACC.5
XS2:    MOV P1,A
        NOP
        CLR P3.7
        SJMP BAK1

 NEXT3:

 BAK1:  POP PSW
        POP ACC
        MOV TH0,#0FAH
        MOV TL0,#0AAH
        SETB TR0
        RETI

 BRT:   DB 24H
        DB 0EEH
        DB 0B0H
        DB 0A2H
        DB 6AH
        DB 23H
        DB 21H
        DB 0AEH
        DB 20H
        DB 2AH
        DB 0FBH        ;-
        DB 39H         ;F
        DB 75H         ;L



        END







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -