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

📄 shf1.asm

📁 usb接口和msc51通信
💻 ASM
📖 第 1 页 / 共 5 页
字号:
             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
             jb      f0,chf3
             jc      chf4
chf3:        mov     r2,a
             mov     a,r1
             mov     r3,a
             inc     r5
chf4:        djnz    b,chf2
             sjmp    chf5
chf1:        mov     r4,#05h
             mov     r5,#0dch
chf5:        ret

;*********************************
ADMSD:        MOV       12H,#13H
              MOV       11H,#88H    ;1388h=5000d 满度
              MOV       A,@R0       ;结果在(r4r5)中
              MOV       R6,A        ;(r6r7)*(1388h=5000)=(r2r3r4r5)
              INC       R0
              MOV       A,@R0
              MOV       R7,A
              INC       R0
              MOV       A,R7
              MOV       B,11H
              MUL       AB
              MOV       R5,A
              MOV       R4,B
              MOV       A,R6
              MOV       B,11H
              MUL       AB
              ADD       A,R4
              MOV       R4,A
              MOV       A,B
              addc      a,#0
              MOV       R3,A
              MOV       A,R7
              MOV       B,12H
              MUL       AB
              ADD       A,R4
              MOV       R4,A
              MOV       A,R3
              addc      a,b
              MOV       R3,A
              clr       a
              addc      a,#0
              MOV       R2,A
              MOV       A,R6
              MOV       B,12H
              MUL       AB
              ADD       A,R3
              MOV       R3,A
              MOV       A,B
              addc      a,r2
              MOV       R2,A
ADLL0:        MOV       R6,#0FH     ;(r2r3r4r5)/(0fffh)->(r4r5)%(r2r3)
              MOV       R7,#0FFH
              clr       c
              MOV       A,R3
              subb      a,r7
              MOV       A,R2
              subb      a,r6
              JNC       ADLL1
              MOV       B,#16
adll2:        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
              JB        F0,ADLL3
              JC        ADLL4
ADLL3:        MOV       R2,A
              MOV       A,R1
              MOV       R3,A
              INC       R5
adll4:        djnz      b,adll2
              sjmp      adll5
ADLL1:        MOV       R4,#13H
              MOV       R5,#88H
ADLL5:        RET
;**********************************
CXPD:         MOV       R0,#ZUIDA1     ;超高限,超低限报警判断
              MOV       A,@R0
              MOV       R2,A
              INC       R0
              MOV       A,@R0
              MOV       R3,A        ;r2,r3最大值
              MOV       DPTR,#8002h;4002H
              movx      a,@dptr
              MOV       R4,A
              INC       DPTR
              movx      a,@dptr
              MOV       R5,A        ;r4,r5高限值
              MOV       A,R3        ;最大值减去高限值
              clr       c
              subb      a,r5
              MOV       R0,A
              MOV       A,R2
              subb      a,r4
              MOV       R1,A
              JC        CXPD0       ;有借位,则无超高限,转判超低限
              SETB      CGX
              SETB      FMQ
	      Sjmp   	cxpd1
cxpd0:        clr    	cgx
	      clr	fmq
CXPD1:        MOV       R0,#ZUIX1
              MOV       A,@R0
              MOV       R2,A
              INC       R0
              MOV       A,@R0
              MOV       R3,A        ;r2,r3最小值
              MOV       DPTR,#8004h;4004H
              movx      a,@dptr
              MOV       R4,A
              INC       DPTR
              movx      a,@dptr
              MOV       R5,A        ;r4,r5低限值
              MOV       A,R3        ;最小值减去低限值
              clr       c
              subb      a,r5
              MOV       R0,A
              MOV       A,R2
              subb      a,r4
              MOV       R1,A
              JNC       CXPD2
              SETB      CDX
              SETB      FMQ
              sjmp      cxpd3
cxpd2:        clr       cdx
              clr       fmq
CXPD3:        RET
;**********************************
BCD_HEX:      MOV       R0,#10H     ;四字节BCD码参数转化为
              MOV       R1,#00H     ;双字节十六进制参数
              MOV       DPH,#80h;40H
              MOV       R7,#6
B_HLOOP:      MOV       DPL,R0
              movx      a,@dptr
              MOV       R3,#00H
              MOV       R4,A
              MOV       R6,#3
LLL:          MOV       A,R4
              MOV       B,#10
              MUL       AB
              MOV       R4,A
              MOV       A,B
              xch       a,r3
              MOV       B,#10
              MUL       AB
              ADD       A,R3
              MOV       R3,A
              INC       R0
              MOV       DPL,R0
              movx      a,@dptr
              ADD       A,R4
              MOV       R4,A
              MOV       A,R3
              addc      a,#0
              MOV       R3,A
              djnz      r6,lll
              INC       R0
              MOV       DPL,R1
              MOV       A,R3
              movx      @dptr,a
              INC       R1
              MOV       DPL,R1
              MOV       A,R4
              movx      @dptr,a
              INC       R1
              djnz      r7,b_hloop
              RET
;****************************
HEXBCD:       MOV       A,@R0       ;r0 is the data first address
              MOV       R2,A        ;a,r0,r2,r3,r5,r6,r7 is used
              INC       R0          ;(r2r3) to (r5r6)
              MOV       A,@R0
              MOV       R3,A
              INC       R0
              clr       a
              MOV       R5,A
              MOV       R6,A
              MOV       R7,#16
het1:         clr       c
              MOV       A,R3
              rlc       a
              MOV       R3,A
              MOV       A,R2
              rlc       a
              MOV       R2,A
              MOV       A,R6
              addc      a,r6
              da        a
              MOV       R6,A
              MOV       A,R5
              addc      a,r5
              da        a
              MOV       R5,A
              djnz      r7,het1
              MOV       A,R5
              anl       a,#0f0h
              swap      a
              MOV       @R1,A
              INC       R1
              MOV       A,R5
              anl       a,#0fh
              MOV       @R1,A
              INC       R1
              MOV       A,R6
              anl       a,#0f0h
              swap      a
              MOV       @R1,A
              INC       R1
              MOV       A,R6
              anl       a,#0fh
              MOV       @R1,A
              INC       R1
              RET
;****************************
ALARM1:       MOV       DPTR,#PC8155    ;超高限报警
              MOV       A,05H
              movx      @dptr,a
              RET
;*********************************
alarm2:       mov      dptr,#pc8155       ;超低限报警
              mov      a,04h
              movx     @dptr,a
              ret
;**********************************
DDISPB:       MOV       A,R1        ;显示电路初始化子程序
              MOV       R6,A        ;用到的寄存器为a,r4,r5,r6,r1,r7
              MOV       R5,#4       ;r5,r7 为总体循环控制变量
              clr       load  ;r1 是参数的地址
DDP1:         MOV       A,R6        ;r6 保护 r1 原始的值
              MOV       R1,A        ;r4 为内部循环控制变量
              MOV       R4,#08H     ;程序运行结束,r1+2->r1,即指向下一参数
              MOV       A,@R1       ;r1的内容为下一个参数的首地址
ddp2:         clr       clk    ;运行结果是把(r1),(r1+1)的内容送显示电路
              clr       c
              rlc       a
              MOV       DIN,C
              SETB      CLK
              djnz      r4,ddp2
              MOV       R4,#08H
              INC       R1
              MOV       A,@R1
ddp3:         clr       clk
              clr       c
              rlc       a
              MOV       DIN,C
              SETB      CLK
              djnz      r4,ddp3
              djnz      r5,ddp1
              SETB      LOAD
              INC       R1
              RET
;****************************
DISPLAY:      MOV       USE5,R1
              MOV       R1,#XIANH1  ;数码显示子程序
              MOV       A,R1        ;用到的寄存器为a,r5,r6,r4,r3,r2,r1
              MOV       R6,A
              MOV       R4,#1
              MOV       R3,#8
ddi1:         clr       load
              MOV       R2,#1       ;7219 1p
DDI2:         MOV       R5,#8
              MOV       A,R4
ddi3:         clr       clk
              rlc       a
              MOV       DIN,C
              SETB      CLK
              djnz      r5,ddi3
              MOV       R5,#8
              MOV       A,@R1
ddi4:         clr       clk
              rlc       a
              MOV       DIN,C
              SETB      CLK
              djnz      r5,ddi4
              MOV       A,R1
              clr       c
              subb      a,#8
              MOV       R1,A
              djnz      r2,ddi2
              SETB      LOAD
              INC       R6
              MOV       A,R6
              MOV       R1,A
              INC       R4
              djnz      r3,ddi1
              MOV       R1,USE5
              RET
;*******************************
DELAY:        MOV       R6,#0FFH
DELAYA:       MOV       R7,#0FFH    ;延时
delayb:       djnz      r7,delayb
              djnz      r6,delaya
              RET
;*****************************
DELL:         MOV      R6,#0ffH
DDLL:         DJNZ     R6,DDLL
              RET
;**********************************
dela:         mov       r2,#04h
dela1:        mov       r6,#0ffh
dela2:        mov       r5,#0ffh
dela3:        djnz      r5,dela3
              djnz      r6,dela2
              djnz      r2,dela1
              ret
;***********************************
mDelay100mS:	MOV  	R7,#0C8H
mDelay100mS_1:	MOV  	R6,#0ffH
mDelay100mS_2:	NOP
				NOP
				NOP
				DJNZ 	R6,mDelay100mS_2
				DJNZ 	R7,mDelay100mS_1
				RET  
;************************************
              END

⌨️ 快捷键说明

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