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

📄 shf1.asm

📁 usb接口和msc51通信
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	      movx      a,@dptr
	      swap      a
	      orl       a,b
              MOV       DPTR,#4002h;2002H
              Movx      @dptr,a         ;设分
              MOV       DPTR,#4025h;2025H     ;读时
	      movx      a,@dptr
              MOV       B,A
              MOV       DPTR,#4024h;2024H
	      movx      a,@dptr
	      swap      a
	      orl       a,b
              MOV       DPTR,#4004h;2004H
              Movx      @dptr,a         ;设时
              MOV       DPTR,#4022h;2022H     ;读日
              Movx      a,@dptr
              swap      a
              MOV       B,A
              INC       DPTR
              movx      a,@dptr
              orl       a,b
              MOV       DPTR,#4007h;2007H
              movx      @dptr,a         ;设日
              MOV       DPTR,#4020h;2020H     ;读月
              Movx      a,@dptr
              swap      a
              MOV       B,A
              INC       DPTR
              movx      a,@dptr
              orl       a,b
              MOV       DPTR,#4008h;2008H
              movx      @dptr,a          ;设月
              MOV       DPTR,#401eh;201eH
              movx      a,@dptr
              swap      a
              MOV       B,A
              INC       DPTR
              movx      a,@dptr
              orl       a,b
              MOV       DPTR,#4009h;2009H
              Movx      @dptr,a
              MOV       DPTR,#400ah;200AH
              MOV       A,#2DH      ;选时基,32.768kHZ
	      Movx      @dptr,a
              MOV       DPTR,#400ch;200CH
              Movx      a,@dptr
              MOV       DPTR,#400dh;200DH
              Movx      a,@dptr
              MOV       DPTR,#400bh;200BH
              MOV       A,#00110010B            ;设中断允许位,BCD,24小时制
              Movx      @dptr,a         ;SET=0,时钟开始运行
              RET
;**********************************
CSSET:        MOV       XIANH1,#0EH           ;设置之前显示原来的值
              MOV       XIANH2,#0AH
              MOV       XIANH3,#0AH
              MOV       XIANH4,#01H
              MOV       DPTR,#4010h;2010H
	      movx      a,@dptr
              MOV       XIANH5,A
              INC       DPTR
	      movx      a,@dptr
              MOV       XIANH6,A
              INC       DPTR
	      movx      a,@dptr
              MOV       XIANH7,A
              INC       DPTR
	      movx      a,@dptr
              MOV       XIANH8,A
              MOV       USE1,#XIANH5            ;当前光标位置
              MOV       R0,#XIANH5
              MOV       A,@R0
              MOV       USE2,A      ;当前光标对应的值
              MOV       R0,#XIANH4
              MOV       A,@R0
              MOV       USE3,A      ;当前参数的序号
csset0:       lcall     display     ; 默认显示第一个参数
              lcall     delay
	      lcall     rdkey
	      cjne	a,#10h,csset1     ;增加
	      lcall     zengj
	      ljmp      csset0
csset1:	      cjne      a,#08h,csset2     ;减小
              LCALL     JIANX
	      ljmp      csset0
csset2:	      cjne      a,#20h,csset3     ;左移
	      lcall	zuoy
	      ljmp      csset0
csset3:	      cjne	a,#04h,csset4     ;右移
	      lcall     youy
	      ljmp	csset0
csset4:	      cjne	a,#02h,csset5     ;确定
	      lcall	quer
	      ljmp	csset0
csset5:       cjne      a,#40h,csset0     ;设置后退出
              RET
;*********************************
ZENGJ:        MOV       A,USE2
              INC       ACC
	      clr       c
	      cjne      a,#09h,zengj0
	      sjmp      zengj1
ZENGJ0:       JC        ZENGJ1
              MOV       A,#00H
ZENGJ1:       MOV       USE2,A
              MOV       R0,USE1
              MOV       @R0,A
              RET
;*********************************
JIANX:        MOV       A,USE2
              DEC       ACC
	      clr       c
              CJNE      A,#0FFH,JIANX1
	      MOV       A,#09H
              SJMP      JIANX1
JIANX1:       MOV       USE2,A
              MOV       R0,USE1
              MOV       @R0,A
              ret
;*********************************
ZUOY:         MOV       A,USE1
	      cjne      a,#xianh5,zuoy0
	      sjmp	zuoy1
ZUOY0:        DEC       A
ZUOY1:        MOV       USE1,A
              RET
;*********************************
YOUY:         MOV       A,USE1
	      cjne      a,#xianh8,youy0
	      sjmp     	youy1
YOUY0:        INC       A
YOUY1:        MOV       USE1,A
              RET
;*********************************
QUER:         MOV       A,USE3                 ;按下确认键显示下一个参数提示符
              MOV       B,#4
              MUL       AB
              ADD       A,#0CH
              MOV       DPL,A
              MOV       DPH,#40h;20H
              MOV       A,XIANH5
	      movx	@dptr,a
              INC       DPTR
              MOV       A,XIANH6
	      Movx     	@dptr,a
              INC       DPTR
              MOV       A,XIANH7
	      movx	@dptr,a
              INC       DPTR
              MOV       A,XIANH8
	      movx	@dptr,a
              MOV       A,USE3
	      clr	c
	      subb	a,#04h
              JC        QUER0
              SETB      GCLK
              MOV       A,USE3
	      cjne	a,#06h,quer0
              MOV       USE3,#01H
	      sjmp	quer1
QUER0:        INC       USE3
QUER1:        MOV       A,USE3
              MOV       XIANH4,A
              MOV       B,#4
              MUL       AB
              ADD       A,#0CH
              MOV       DPL,A
              MOV       DPH,#40h;20H
	      movx	a,@dptr
              MOV       XIANH5,A
              INC       DPTR
	      movx	a,@dptr
              MOV       XIANH6,A
              INC       DPTR
	      Movx    	a,@dptr
              MOV       XIANH7,A
              INC       DPTR
	      Movx   	a,@dptr
              MOV       XIANH8,A
              RET 
;*********************************
SJCL1:        mov      r0,#30h                     ;找出第一路最大最小值
              mov      a,@r0
              mov      r2,a
              inc      r0
              mov      a,@r0
              mov      r3,a
              clr      c
              mov      a,r3
              subb     a,max11
              mov      a,r2
              subb     a,max10
              jc       bjmin1
              mov      max10,r2
              mov      max11,r3
              sjmp     sjcl111
bjmin1:       clr      c
              mov      a,min11
              subb     a,r3
              mov      a,min10
              subb     a,r2
              jc       sjcl111
              mov      min10,r2
              mov      min11,r3
sjcl111:      ret
;*******************************
SJCL2:        mov      r0,#32h                            ;找出第二路最大最小值
              mov      a,@r0
	      mov      r2,a
	      inc      r0
	      mov      a,@r0
	      mov      r3,a
              clr      c
              mov      a,max21
              mov      a,r2
              subb     a,max20
              jc       bjmin2
              mov      max20,r2
              mov      max21,r3
              sjmp     sjcl222
bjmin2:       clr      c
              mov      a,min21
              subb     a,r3
              mov      a,min20
              subb     a,r2
              jc       sjcl222
              mov      min20,r2
              mov      min21,r3
sjcl222:      ret
;*********************************
communi:      reti
;*********************************
SHUAXIN:      PUSH      ACC
              mov       dptr,#400ch;200ch
	      movx      a,@dptr
              JNB       ACC.4,SHX
              SETB      BIAOZ
SHX:          POP       ACC
	      reti
;*********************************
ZDCY:         MOV       TH0,#0ffH         ;t0  1ms,置采样标志为1,采样结束
              MOV       TL0,#0feH
              setb      caiy
              reti
;**********************************
WXH:          MOV       R0,#ZUIDA1        ;最大最小值送显缓
              MOV       R1,#XIANH1
              lcall     hexbcd            ;最大值
              lcall     hexbcd            ;最小值
              orl       xianh1,#80h
              orl       xianh5,#80h
              RET
;**********************************
CSYD:         MOV       R0,#10H
              MOV       R1,#10H
              MOV       R7,#24
CSYD1:        MOV       DPH,#40h;20H
              MOV       DPL,R1
              movx      a,@dptr
              MOV       DPH,#80h;40H
              MOV       DPL,R0
              movx      @dptr,a
              INC       R0
              INC       R1
              djnz      r7,csyd1
              RET
;***********************************
AD_MSD:       MOV     R0,#22h   ;最大值数据存放始地址
              lcall   admsd        ;将A/D数据转化为密实度
              MOV     A,R4
              MOV     R6,A
              MOV     A,R5
              MOV     R7,A
              LCALL   CHF
              MOV     A,R4
              MOV     ZUIDA1,A
              MOV     A,R5
              MOV     ZUIDA2,A
              mov     r0,#24h
              lcall   admsd
              MOV     A,R4
              MOV     R6,A
              MOV     A,R5
              MOV     R7,A
              LCALL   CHF
              MOV     A,R4
              MOV     ZUIX1,A
              MOV     A,R5
              MOV     ZUIX2,A
              RET
;**********************************
chf:         MOV     DPTR,#8000H               ;乘修正值S,得最大最小值
             MOVX    A,@DPTR                   ;结果在(r4r5)中
             mov     12h,A
             MOV     DPTR,#8001H
             MOVX    A,@DPTR
             mov     11h,A     
             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
chf0:        mov     r6,#03h    ;(r2r3r4r5)/(03e8h=1000)->(r4r5)%(r2r3)
             mov     r7,#0e8h
             clr     c
             mov     a,r3
             subb    a,r7
             mov     a,r2
             subb    a,r6
             jnc     chf1
             mov     b,#16
chf2:        clr     c
             mov     a,r5
             rlc     a
             mov     r5,a
             mov     a,r4
             rlc     a
             mov     r4,a
             mov     a,r3

⌨️ 快捷键说明

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