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

📄 shf1.asm

📁 usb接口和msc51通信
💻 ASM
📖 第 1 页 / 共 5 页
字号:
execcommand_wp2:    mov      a,@r0
                    movx     @dptr,a
                    inc      r0
                    djnz     r5,execcommand_wp2
execcommand_w02:    clr      ch375hm_sta
                    clr      ch375hm_sta
                    clr      ch375hm_sta
                    setb     ch375hm_sta
execcommandwait2:   jb       ch375hm_int,$
                    mov      dptr,#ch375hm_index
                    mov      a,#3fh
                    movx     @dptr,a
                    mov      dptr,#ch375hm_data
                    movx     a,@dptr
                    mov      r7,a
                    mov      dptr,#ch375hm_index
                    clr      a
                    movx     @dptr,a
                    mov      dptr,#ch375hm_data
                    clr      a
                    movx     @dptr,a
                    jnb      ch375hm_int,$
                    ret
;********************************************
baojing:       jnb      cgx,cdxpd        ;判断超高限报警
               mov      dptr,#pc8155
               mov      a,#05h
               movx     @dptr,a
               sjmp     st1               ;超高限报警
cdxpd:         jnb      cdx,st
               mov      dptr,#pc8155
               mov      a,#03h
               movx     @dptr,a
               sjmp     st1               ;超低限报警
st:            mov      dptr,#pc8155
               mov      a,#00h
               movx     @dptr,a
st1:           clr      cdx
               clr      cgx
               ret
;*****************************************
adcy:          mov     r0,#30h         ;a/d采样数据放入adzhi所指向的地址里
               MOV       A,#10001110B    ;第一路a/d
               lcall        adconve
               mov       r0,#32h
               MOV       A,#11001110B    ;第二路a/d
               lcall       adconve             
               ret
;*********************************
clrx:           mov     r0,#use1
                mov     r6,#8
                clr     a
clruse:         mov     @r0,a
                inc     r0
                djnz    r6,clruse
                mov    r0,#xianh1         ;按下stop键后,显示00000000
                mov    r6,#8
                clr    a
clrxianhuan:    mov    @r0,a
                inc    r0
                djnz   r6,clrxianhuan
                lcall  display
                ret
;*********************************

adconve:        clr     sdin
                clr     adcs
                clr     sclk
                mov     r7,#8
                clr     c
adloop1:        rlc     a                           ;adloop1 is send control word
                mov     sdin,c
                setb    sclk
                clr     sclk
                djnz    r7,adloop1
            ;    jnb     sstrb,$
                mov     r7,#8
                clr     sdin
adcycle1:       setb    sclk
                nop
                nop
                nop
                clr     sclk
                mov     c,dout
                rlc     a
                djnz    r7,adcycle1
                mov     @r0,a
                inc     r0                             ;r0+1
                mov     r7,#8
adcycle2:       setb    sclk
                clr     sclk
                mov     c,dout
                rlc     a
                djnz    r7,adcycle2
                setb    adcs
                mov     @r0,a
                swap    a                             ;每次采16位,最低4位无效,将最低4位移至最高位,只取低12位
                mov     @r0,a                         ;采样结果30h放12位数据的高四位,31h放12位数据低八位
                dec     r0                            
                mov     a,@r0                  
                swap    a                             
                inc     r0                            
                xchd    a,@r0                         
                xch     a,@r0                         
                dec     r0
                mov     @r0,a
                inc     r0
                inc     r0
                ret
;*****************************************
baocun:         mov      r7,#40
                mov      a,#80h
                orl      a,ramh
	        mov      dph,a
	        mov      dpl,raml
	        mov      r0,#30h
songshu:        mov      a,@r0
	        movx     @dptr,a
	        inc      r0
	        inc      dptr
                djnz     r7,songshu
	        mov      ramh,dph
	        mov      raml,dpl
	        ret
;**********************************
pjz:           mov      r0,#max11           ;分别求出两路最大值,最小值的平均值
               mov      a,@r0               ;最大值平均值存入22h23h中,最小值平均值存入24h25h中
	       mov      r3,a
	       mov      r0,#max21
	       mov      a,@r0
	       add      a,r3
	       mov      r3,a
	       mov      r0,#max10
	       mov      a,@r0
               mov      r2,a
	       mov      r0,#max20
	       mov      a,@r0
	       addc     a,r2
	       mov      r2,a
	       clr      c
	       mov      a,r2
	       rrc      a
	       mov      r2,a
	       mov      a,r3
	       rrc      a
	       mov      r3,a
               mov      22h,r2
               mov      23h,r3
	       mov      r0,#min11
	       mov      a,@r0
	       mov      r5,a
	       mov      r0,#min21
	       mov      a,@r0
	       add      a,r5
	       mov      r5,a
	       mov      r0,#min10
	       mov      a,@r0
	       mov      r4,a
	       mov      r0,#min20
	       mov      a,@r0
	       addc     a,r4
	       mov      r4,a
	       clr      c
	       mov      a,r4
	       clr      c
	       mov      a,r4
	       rrc      a
	       mov      r4,a
	       mov      a,r5
	       rrc      a
	       mov      r5,a
               mov      24h,r4
               mov      25h,r5
	       ret
;**********************************

keyset:        lcall	rdkey                   ;取得一键值存入A中
	       cjne	a,#80h,set0             ;开始
	       lcall	kaishi
	       ljmp	set00
set0:          cjne	a,#40h,set2             ;设置
	       lcall	csset
               JNB       GCLK,SET1
               lcall	setclk
set1:          mov      r6,#8
               mov      r0,#xianh1              ;清显缓
               clr      a
set3:          mov      @r0,a
               inc      r0
               djnz     r6,set3
               lcall    display
               lcall    delay
               ljmp	keyset
set2:          cjne	a,#01h,keyset
	       lcall	stop
               ljmp     clr11
SET00:         RET
;**********************************
RDKEY:         MOV       DPTR,#ZT8155            ;8155 设置
               MOV       A,#0CH                  ;PA intput(key)
               movx      @dptr,a                 ;PC OUT(ALARM)不用中断
               MOV       DPTR,#PA8155
	       Movx      a,@dptr
               cpl       a
	       JZ        RDKEY
	       lcall     delay
               JZ        RDKEY
               RET
;**********************************
kaishi:	      lcall 	wxh
	      lcall     display
	      lcall     rdclk
              lcall     tongx
              RET
;**********************************
stop:         lcall	rdclk
	      lcall	tongx
              RET
;**********************************
RDCLK:        mov       dptr,#400ah;#200ah
              mov       a,#70h
              movx      @dptr,a
              mov       dptr,#400bh;200bh
              mov       a,#10110010b
              movx      @dptr,a
              MOV       DPTR,#4000h;2000H
              
              movx      a,@dptr
              mov       R6,A
              ANL       A,#0FH
              MOV       DPTR,#402DH
              movx      @dptr,a
              mov       a,r6
              swap      a
              anl       a,#0fh
              mov       dptr,#402Ch
              movx      @dptr,a  
              
              MOV       DPTR,#4002h
	      movx      a,@dptr
              
              mov       r6,a
              anl       a,#0fh
              mov       dptr,#4027h;2027h
              movx      @dptr,a
              mov       a,r6
              swap      a
              anl       a,#0fh
              mov       dptr,#4026h;2026h
              movx      @dptr,a
              MOV       DPTR,#4004h;2004H
	      movx      a,@dptr
              
              mov       r6,a
              anl      a,#0fh
              mov       dptr,#4025h;2025h
              movx      @dptr,a
              mov       a,r6
              swap      a
              anl       a,#0fh
              mov       dptr,#4024h;2024h
              movx      @dptr,a
              MOV       DPTR,#4007h;2007H
	      movx      a,@dptr
             
              mov       r6,a
              anl       a,#0fh
              mov       dptr,#4023h;2023h
              movx      @dptr,a
              mov       a,r6
              swap      a
              anl       a,#0fh
              mov       dptr,#4022h;2022h
              movx      @dptr,a
              MOV       DPTR,#4008h;2008H
	      movx      a,@dptr
              
              mov       r6,a
              anl       a,#0fh
              mov       dptr,#4021h;2021h
              movx      @dptr,a
              mov       a,r6
              swap      a
              anl       a,#0fh
              mov       dptr,#4020h;2020h
              movx      @dptr,a
              MOV       DPTR,#4009h;2009H
	      movx	a,@dptr
              
              mov       r6,a
              anl       a,#0fh
              mov       dptr,#401fh;201fh
              movx      @dptr,a
              mov       a,r6
              swap      a
              anl       a,#0fh
              mov       dptr,#401eh;201eh
              movx      @dptr,a
              mov       dptr,#400ah;200ah
              mov       a,#2dh
              movx      @dptr,a
              mov       dptr,#400bh;200bh
              mov       a,#00110010b
              movx      @dptr,a
              RET
;**********************************
TONGX:        ;MOV       R7,#64
              ;MOV       R0,#BUFF0
              ;clr       ti
; TONGX0:     MOV       A,@R0
             ; INC       R0
              ;MOV       SBUF,A
              ;JNB       TI,$
              ;clr       ti
              ;djnz      r7,tongx0
              RET
;**********************************
SETCLK:       MOV       DPTR,#400ah;     ;时钟电路设置子程序
              MOV       A,#70h
              Movx      @dptr,a         ;分频器复位
              MOV       DPTR,#400bh;
              MOV       A,#10110010B
              Movx      @dptr,a         ;SET=1
              MOV       DPTR,#4001h;
              MOV       A,#00H
              Movx      @dptr,a         ;设秒闹00
              MOV       DPTR,#4003h;
              MOV       A,#0FFH
              movx      @dptr,a         ;设分闹FF
              MOV       DPTR,#4005h;
              MOV       A,#0FFh
              movx      @dptr,a         ;设时闹,每小时一次
              MOV       DPTR,#402DH     ;读秒
	      movx      a,@dptr
              MOV       B,A
              MOV       DPTR,#402cH
	      movx      a,@dptr
	      swap      a
	      orl       a,b
              MOV       DPTR,#4000h;
              Movx      @dptr,a         ;设秒

              MOV       DPTR,#4027h     ;读分
	      movx      a,@dptr
              MOV       B,A
              MOV       DPTR,#4026h;2026H

⌨️ 快捷键说明

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