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

📄 ad.asm

📁 AD检测按键
💻 ASM
📖 第 1 页 / 共 3 页
字号:
       MOVWF  LSD
       INCF   MSD,1
       GOTO   OVER
OVER1       
       MOVF   LSD,0
       MOVWF  LSD1
       RETLW  0                          
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EEPSTART                 ;EEPROM启动
        BSF      PORTC,2
        BSF      PORTC,3
        BSF      STATUS,5
        MOVLW    B'00000011'
        MOVWF    TRISC
        BCF      STATUS,5
        NOP
        NOP
        NOP
        NOP
        NOP
        BCF      PORTC,2
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        BCF      PORTC,3
        NOP
        NOP
        NOP
        NOP
        RETLW    0
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@        
EEPSTOP              ;EEPROM停止
        BCF      PORTC,3
        BCF      PORTC,2
        BSF      STATUS,5
        MOVLW    B'00000011'
        MOVWF    TRISC
        BCF      STATUS,5
        NOP
        NOP
        NOP
        NOP
        BSF      PORTC,3
        NOP
        NOP
        NOP
        NOP
        BSF      PORTC,2
        NOP
        NOP
        NOP
        NOP
        BCF      PORTC,3
        NOP
        NOP
        RETLW    0
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
EEPOUT                    ;送8位数据
        MOVLW    D'8'
        MOVWF    EEPCNT
        BSF      STATUS,5
        MOVLW    B'00000011'
        MOVWF    TRISC
        BCF      STATUS,5
OUTLOOP
        BCF      PORTC,3
        NOP
        NOP
        NOP
        BTFSS    EEPDATA,7
        GOTO     PULL_DOWN_SDAT
        BSF      PORTC,2
        GOTO     OUT_NEXT_BIT
PULL_DOWN_SDAT
        BCF      PORTC,2
OUT_NEXT_BIT
        RLF      EEPDATA,1
        NOP
        NOP
        BSF      PORTC,3
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        DECFSZ   EEPCNT,1
        GOTO     OUTLOOP
        BCF      PORTC,3
        BSF      STATUS,5
        MOVLW    B'00000111'
        MOVWF    TRISC
        BCF      STATUS,5
        NOP
        NOP
        BSF      PORTC,3
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
WAIT_ACK
        BTFSC    PORTC,2
        GOTO     WAIT_ACK
        BCF      PORTC,3
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        RETLW    0
;############################################################### 
EEPIN                       ;收8位数据
        MOVLW    D'8'
        MOVWF    EEPCNT
        CLRF     EEPDATA
        BSF      STATUS,5
        MOVLW    B'00000111'
        MOVWF    TRISC
        BCF      STATUS,5
        BCF      STATUS,0
INLOOP
        RLF      EEPDATA,1
        BCF      PORTC,3
        NOP
        NOP
        NOP
        NOP
        NOP
        BSF      PORTC,3
        NOP
        NOP
        NOP
        BTFSS    PORTC,2
        GOTO     REC_DOWN_SDAT
        BSF      EEPDATA,0
        GOTO     IN_NEXT_BIT
REC_DOWN_SDAT
        BCF      EEPDATA,0
IN_NEXT_BIT
        NOP
        NOP
        NOP
        BCF      PORTC,3
        NOP
        NOP
        NOP
        DECFSZ   EEPCNT,1
        GOTO     INLOOP
        NOP
        NOP
        NOP
        RETLW    0   
;####################################################################        
ADSHW                                 ;AD水位检测
        CLRF    ADRES
	      BSF     STATUS,RP0            ;重新定义模拟口
	      MOVLW   B'100'
	      MOVWF   ADCON1
	      BCF     STATUS,RP0
	      MOVLW   B'10011001'           ;32分频,选中RA3
	      MOVWF   ADCON0
	      MOVLW   D'8'
	      MOVWF   DCOUNT1               ;延时2TAD
DLOOP3
        DECFSZ  DCOUNT1
        GOTO    DLOOP3
        MOVLW   D'4'
        MOVWF   DCOUNT1               ;延时14微秒,采样时间
DLOOP4
        DECFSZ  DCOUNT1
        GOTO    DLOOP4
        BSF     ADCON0,GO
        NOP
        BTFSC   ADCON0,GO
        GOTO    $-1
        MOVF    ADRES,0  
;222222222222222222222222222222222222222222@@@@@@        
        ADDWF   SHUIWEI1,1                  
	      BTFSC   STATUS,C
	      INCF    SHUIWEI2                  ;保存进位值
	      DECFSZ  SHUIWEI3,1
	      RETLW   0                         ;不到4次,不做处理
	      MOVLW   D'4'
	      MOVWF   SHUIWEI3                  ;4次求平均值
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	      BCF     STATUS,C
	      RRF     SHUIWEI2,1
	      RRF     SHUIWEI1,1                   ;右移一次
	      NOP
	      BCF     STATUS,C
	      RRF     SHUIWEI2,1
	      RRF     SHUIWEI1,1                   ;右移二次
	      NOP
        MOVF    SHUIWEI1,0
        MOVWF   SHUIWEI                     ;确认AD值
        CLRF    SHUIWEI1
        CLRF    SHUIWEI2                
        RETLW   0 
;###########################################          
READ_EEPROM
        MOVLW    H'A0'
        MOVWF    EEPDATA
        CALL     EEPSTART
        CALL     EEPOUT         ;选定EEPROM
        MOVF     00H
        MOVWF    EEPDATA
        CALL     EEPOUT         ;要读的地址
        MOVLW    H'A1'          ;读00地址数据
        MOVWF    EEPDATA
        CALL     EEPSTART       
        CALL     EEPOUT         ;发读指令
        CALL     EEPIN          ;接收数据
        MOVF     EEPDATA,0
        MOVWF    ZDSS1           ;保存00地址数据
        NOP
        MOVLW    H'A1'          ;读01地址数据
        MOVWF    EEPDATA
        CALL     EEPSTART       
        CALL     EEPOUT         ;发读指令
        CALL     EEPIN          ;接收数据
        MOVF     EEPDATA,0
        MOVWF    ZDGS1          ;保存01地址数据 
        CALL     EEPSTOP        ;EEPROM停止
        RETLW    0                                  	         	
;-----------------------主程序开始-----------------------------------
START
	     CLRF   PORTA
	     CLRF   PORTB
	     CLRF   PORTC
	     BSF    STATUS,5
	     MOVLW  B'00011011'
	     MOVWF  TRISA            ;定义端口A
	     MOVLW  B'100'
	     MOVWF  ADCON1           ;定义A/D端口           
	     MOVLW  B'00000000'
	     MOVWF  TRISB            ;定义端口B
	     MOVLW  B'00000011'
	     MOVWF  TRISC            ;定义端口C
	     BCF    STATUS,5
	     MOVLW    H'F0'
	     MOVWF    PORTC       
       MOVLW    H'20'
       MOVWF    FSR
NEXT
       CLRF     INDF
       INCF     FSR,1         ;指针加1
       MOVLW    H'46'
       SUBWF    FSR,0
       BTFSS    STATUS,Z
       GOTO     NEXT 
       CLRF     JDYS44
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!读eeprom值
        CALL    READ_EEPROM   
        NOP      
        MOVLW    D'4'          ;4次求平均数重新负值
        MOVWF    SHUIWEI3
        MOVLW    D'3'
        MOVWF    ANJSC
        MOVLW    D'17'
        MOVWF    JDYS
        MOVLW    D'200'
        MOVWF    JDYS1
        MOVWF    JDYS2
        MOVWF    JDYS3
        MOVWF    JDYS4
        MOVLW    D'10'
        MOVWF    JDYS11
        MOVWF    JDYS22
        MOVWF    JDYS33
        MOVWF    JDYS44
        MOVLW    D'210'
        MOVWF    SHUIWEI
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@      
MAIN    
        CALL     ANJIAN         ;设置按键处理  
        CALL     SHUIWCL1       ;进水水位处理
        CALL     SHUIWCL2       ;关水水位处理
        CALL     SHOUDSS        ;手动上水
        CALL     SWZS           ;调用水位指示
        CALL     ZHSHD
        CALL     TINGJI
        CALL     SDSWXS
        GOTO     MAIN
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ANJIAN
        BTFSS    PORTA,4
        GOTO     ANJIAN1        ;设置按键处理
        BTFSS    PORTC,0
        GOTO     ANJIAN2        ;上水开按键处理
        BTFSS    PORTC,1
        GOTO     ANJIAN3        ;上水关按键处理
        CLRF     CHULI
        RETLW    0
ANJIAN1
        BTFSC    CHULI,0
        RETLW    0
        BTFSC    PORTA,4
        RETLW    0
        CALL     TIME5MS
        BTFSC    PORTA,4
        RETLW    0
        DECFSZ   ANJSC,1
        RETLW    0
        MOVLW    D'3'
        MOVWF    ANJSC
        BSF      CHULI,0
        INCF     SHEZHI,1
        BSF      ZHISHI,1         ;点亮设置指示灯
        MOVLW    D'4'
        SUBWF    SHEZHI,0
        BTFSC    STATUS,C
        GOTO     ANJIAN11
        MOVLW    D'1'
        SUBWF    SHEZHI,0
        BTFSC    STATUS,Z
        GOTO     XIANSSJ          ;显示进水设置
        MOVLW    D'2'
        SUBWF    SHEZHI,0
        BTFSC    STATUS,Z
        GOTO     XIANSSG          ;显示关水设置
        MOVLW    D'3'
        SUBWF    SHEZHI,0
        BTFSC    STATUS,Z
        GOTO     XIANSSAD
        RETLW    0
XIANSSJ
        BSF      ZHISHI,3
        BCF      ZHISHI,7
        RETLW    0
XIANSSG  
        BSF      ZHISHI,7
        BCF      ZHISHI,3
        RETLW    0  
XIANSSAD  
        BSF      ZHISHI,7
        BSF      ZHISHI,3        
        RETLW    0                       
ANJIAN11
        CLRF     SHEZHI
        BCF      ZHISHI,7
        BCF      ZHISHI,3
        BCF      ZHISHI,1
        RETLW    0 
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@               
ANJIAN2
        BTFSC    CHULI,0
        RETLW    0
        BTFSC    PORTC,0
        RETLW    0
        CALL     TIME5MS
        BTFSC    PORTC,0
        RETLW    0
        DECFSZ   ANJSC,1
        RETLW    0
        MOVLW    D'3'
        MOVWF    ANJSC
        BSF      CHULI,0
        MOVLW    D'1'        ;设置键未按下时设定自动上水不处理
        SUBWF    SHEZHI,0
        BTFSS    STATUS,Z        
        RETLW    0               
        BSF      ZHISHI,3        ;点亮上水设置指示
        MOVLW    D'7'            
        SUBWF    ZDSS1,0
        BTFSC    STATUS,C
        CLRF     ZDSS1           ;ZDSS1大于7 就清零
        BSF      STATUS,C
        RLF      ZDSS1,1         ;1为20%,3为50%,7位80%
        MOVLW    H'A0'           ;写EEPROM
        MOVWF    EEPDATA
        CALL     EEPSTART        ;EEPROM启动
        CALL     EEPOUT
        MOVLW    0               ;选择要写的地址00    
        MOVWF    EEPDATA
        CALL     EEPOUT
        MOVF     ZDSS1,0         ;送要写的数据
        MOVWF    ZDSS
        MOVF     ZDSS,0
        MOVWF    EEPDATA
        CALL     EEPOUT
        CALL     EEPSTOP         ;EEPROM停止
        RETLW    0        
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                        
ANJIAN3
        BTFSC    CHULI,0
        RETLW    0
        BTFSC    PORTC,1
        RETLW    0
        CALL     TIME5MS
        BTFSC    PORTC,1
        RETLW    0
        DECFSZ   ANJSC,1
        RETLW    0
        MOVLW    D'3'
        MOVWF    ANJSC
        BSF      CHULI,0
        MOVLW    D'2'        ;设置键未按下时设定自动关水不处理    
        SUBWF    SHEZHI,0
        BTFSS    STATUS,Z
        RETLW    0
        BSF      ZHISHI,7         ;点亮关水设置指示
        MOVLW    D'7'
        SUBWF    ZDGS1,0
        BTFSC    STATUS,C
        CLRF     ZDGS1 
        BSF      STATUS,C
        RLF      ZDGS1,1         ;1为50%,3为80%,7位100%
        MOVLW    H'A0'           ;写EEPROM
        MOVWF    EEPDATA
        CALL     EEPSTART        ;EEPROM启动
        CALL     EEPOUT
        MOVLW    D'1'            ;选择要写的地址01    
        MOVWF    EEPDATA
        CALL     EEPOUT
        MOVF     ZDGS1,0         ;送要写的数据
        MOVWF    ZDGS
        MOVF     ZDGS,0
        MOVWF    EEPDATA
        CALL     EEPOUT
        CALL     EEPSTOP         ;EEPROM停止
        RETLW    0                    
;##################################################
SHUIWCL1                         ;自动进水处理
        DECFSZ   JDYS,1
        RETLW    0
        MOVLW    D'17'
        MOVWF    JDYS
        BSF      PORTA,5
        CALL     TIME2MS        
        CALL     ADSHW           ;调用水位子程序
        CALL     TIME2MS
        BCF      PORTA,5
        BTFSC    SHOUDBZ,0
        RETLW    0
        MOVF     SHEZHI,0        ;在设置按下时泵不处理
        BTFSS    STATUS,Z
        RETLW    0
        MOVLW    D'1'
        SUBWF    ZDSS1,0
        BTFSC    STATUS,Z
        GOTO     ERSHIS          ;设定上水水位为20%
        MOVLW    D'3'
        SUBWF    ZDSS1,0
        BTFSC    STATUS,Z
        GOTO     WUSHIS          ;设定上水水位为50%        
        MOVLW    D'7'
        SUBWF    ZDSS1,0
        BTFSC    STATUS,Z
        GOTO     BASHIS          ;设定上水水位为80%
        RETLW    0
ERSHIS
        MOVLW    D'60'
        SUBWF    SHUIWEI,0
        BTFSC    STATUS,C
        RETLW    0        
        BSF      PORTA,2         ;低于20%要上水
        BSF      ZHISHI,0        ;点亮上水指示 
        BSF      SHANGSBZ,0      ;置上水标志

⌨️ 快捷键说明

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