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

📄 ld094.asm

📁 这是本人写的一款开关自动转换程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
               clrwdt       
               call          KEYSCAN         ;扫描按键
               btfss         AJBIAT,7
               GOTO          ZU_Down1 
               call          DebugKey
               btfsc         DebugModeTime,short          
               goto          ZU_UP                               
               btfsc         DebugModeTime,Long           
               goto          DEBUG_4 
               ;使用模式
ZU_UP  
                bsf           GASLED                   ;GAS状态灯(绿LED)
                movlw         1
                movwf         ZSKZ               ;把转速控制方式值写到EEPROM
                bcf           YOULED                   ;油状态灯 
                 call          AJPDOPEN            
ZU_UP1   
               call          KEYSCAN       
               btfss         AJBIAT,7
               GOTO          ZU_UP1 
               call          DebugKey
               btfsc         DebugModeTime,short           
               goto          ZU_Down                             
               btfsc         DebugModeTime,Long            
               goto          DEBUG_4 

;-------------------------------------------------------------------------
;--------------------- ;把所有新设置的值全部保存 -------------------
DEBUG_4
                clrf         DEBUG_FALG   
                call         LedInt         
                bsf          DEBUG_FALG,4       ;LED全闪
                call          AJPDOPEN            ;检查按键释放完成

             ;---------刷新液位传感器型号-----
                movfw        YEXH                ;把液位型号值写到EEPROM
                movwf        MOREN
                movlw        D'2'            ;地址
                call         WRITE_EE
          
             ;----------刷新安全时间---------
                call         DELAY
                call         DELAY
               
                movfw        NEW_RpmData                 ;新的时间数据
                movwf        MOREN
                movlw        D'4'            ;地址
                call         WRITE_EE
                 ;---------刷新浮动模式-----
                call         DELAY
                call         DELAY
                movfw        ZSKZ               ;把转速控制方式值写到EEPROM
                movwf        MOREN
                movlw        D'3'            ;地址
                call         WRITE_EE
DebugEnd
                clrwdt
                nop
                goto         DebugEnd
;*********************************************************************
;*********************************************************************
 AJPDOPEN 
               clrwdt       
                call        KEY_WAIT            ;等待按键松开
               btfss          AJBIAT,5 
               goto       AJPDOPEN 
               RETURN           
;*********************************************************************
;Name  使用按键时的时间检测 
;*********************************************************************
DebugKey 
               bsf          StatusFlag,KeyFlag           ;;按键定时入口标志 
               bcf          TIME_1S,KeyTime3sFlag 
               clrf         KeyDelay 
         
DebugKey_wait
               call         KEY_WAIT                     ;按键是否已释放?
               btfsc        AJBIAT,5
               goto         DebugKeyOk1                        ;释放!到第2种传感器模式
               btfss        TIME_1S,KeyTime3sFlag       
               goto         DebugKey_wait
               goto         DebugKeyOk2                     ;DELAY 到,进入第2步修改模式状态
DebugKeyOk1 
               clrf         DebugModeTime              
               bsf          DebugModeTime,short          
               goto         DebugKeyEnd
DebugKeyOk2 
               clrf         DebugModeTime              
               bsf          DebugModeTime,Long          
               goto         DebugKeyEnd
DebugKeyEnd
               bcf          StatusFlag,KeyFlag
               clrf         KeyDelay 
         
               bcf          TIME_1S,KeyTime3sFlag  
               return
;*********************************************************************
;Name  RAM清空
;*********************************************************************
RamInt
                MOVLW       0x20
                MOVWF       FSR         
RamIntLoop
                CLRWDT
                CLRF        INDF
                INCF        FSR,F
                BTFSS       FSR,7
                GOTO        RamIntLoop 
                return
;*********************************************************************
;Name  LED 初始化
;*********************************************************************
LedInt
           btfsc    INTCON,GIE
           bcf      INTCON,GIE
           bcf  	YOULED
         
           nop    
           bcf  	GASLED    
          
           nop
           bcf   	YWLED5   
         
           nop    
           bcf    	YWLED4
          
           nop     
           bcf  	YWLED3 
          
           nop   
           bcf  	YWLED2 
         
           nop   
           bcf  	YWLED1 
           bsf      INTCON,GIE
           return   
;*********************************************************************************   
;***************************     延时程序1  ************************************

DELAY1                                               ;廷时20us
               MOVLW       0AH
               MOVWF       COUNT1

L4             CLRWDT
               DECFSZ      COUNT1,1     
               GOTO        L4
               RETURN 
;*********************************************************************************   
;***************************     延时程序  ************************************

DELAY                                               ;廷时20us
               MOVLW       06H;0FFH;
               MOVWF       COUNT1
L2             CLRWDT
               MOVLW       0FFH;0FFH;
               MOVWF       COUNT2
L3             CLRWDT
               DECFSZ      COUNT2,1     
               GOTO        L3
               DECFSZ      COUNT1,1
               GOTO        L2
               RETLW       0 
;********************************************************************************* 
;**过滤**
;*********************************************************************************                
LEACH                                           ;采用6驵数据去掉最高最低数,中间四位取平均     
               MOVF     ADBUFF1,W
               SUBWF    ADBUFF6,W    
               BTFSS    STATUS,C
               GOTO     CHANGE1
BUFF2          MOVF     ADBUFF2,W
               SUBWF    ADBUFF6,W
               BTFSS    STATUS,C
               GOTO     CHANGE2
               MOVF     ADBUFF2,W
               SUBWF    ADBUFF1,W
               BTFSC    STATUS,C
               GOTO     CHANGE3
BUFF3          MOVF     ADBUFF3,W
               SUBWF    ADBUFF6,W
               BTFSS    STATUS,C
               GOTO     CHANGE4
               MOVF     ADBUFF3,W
               SUBWF    ADBUFF1,W
               BTFSC    STATUS,C
               GOTO     CHANGE5
BUFF4          MOVF     ADBUFF4,W
               SUBWF    ADBUFF6,W
               BTFSS    STATUS,C
               GOTO     CHANGE6
               MOVF     ADBUFF4,W
               SUBWF    ADBUFF1,W
               BTFSC    STATUS,C
               GOTO     CHANGE7
BUFF5          MOVF     ADBUFF5,W
               SUBWF    ADBUFF6,W
               BTFSS    STATUS,C
               GOTO     CHANGE8
               MOVF     ADBUFF5,W
               SUBWF    ADBUFF1,W
               BTFSC    STATUS,C
               GOTO     CHANGE9
          ;--------------平均--------------
AVERAGE             
               CLRF     ADBUFF1
               MOVF     ADBUFF2,W
               ADDWF    ADBUFF3,F
               BTFSC    STATUS,C
               INCF     ADBUFF1
               MOVF     ADBUFF4,W
               ADDWF    ADBUFF3,F
               BTFSC    STATUS,C
               INCF     ADBUFF1
               MOVF     ADBUFF5,W
               ADDWF    ADBUFF3,F
               BTFSC    STATUS,C
               INCF     ADBUFF1
               RRF      ADBUFF1
               RRF      ADBUFF3
               RRF      ADBUFF1
               RRF      ADBUFF3
               MOVF     ADBUFF3,W
               RETURN
;**********************互换***************************   
CHANGE1             

       ADDWF    ADBUFF1,F
       SUBWF    ADBUFF6,F
       GOTO     BUFF2      
CHANGE2
       ADDWF    ADBUFF2,F
       SUBWF    ADBUFF6,F 
       GOTO     BUFF3
CHANGE3
       ADDWF    ADBUFF2,F
       SUBWF    ADBUFF1,F 
       GOTO     BUFF3
CHANGE4
       ADDWF    ADBUFF3,F
       SUBWF    ADBUFF6,F 
       GOTO     BUFF4 
CHANGE5
       ADDWF    ADBUFF3,F
       SUBWF    ADBUFF1,F 
       GOTO     BUFF4 
CHANGE6
       ADDWF    ADBUFF4,F
       SUBWF    ADBUFF6,F
       GOTO     BUFF5 
CHANGE7
       ADDWF    ADBUFF4,F
       SUBWF    ADBUFF1,F
       GOTO     BUFF5
CHANGE8
       ADDWF    ADBUFF5,F
       SUBWF    ADBUFF6,F
       GOTO     AVERAGE 
CHANGE9
       ADDWF    ADBUFF5,F
       SUBWF    ADBUFF1,F
       GOTO     AVERAGE

;*********************************初始化程序**********************************
INITIAL         
               
               clrf        STATUS 
            
               clrf        PORTA 
               clrf        PORTC
                          
INITIAL1  
               BSF         STATUS,RP0        ;设置寄存器体1   
               MOVLW       B'1100'         ;端口设置
               MOVWF       TRISA         
               BSF         PIE1,TMR1IE       ;开放TMR1中断使能位
               MOVLW       B'1000000'         ;设置RA模拟输入端口,此处与873不同
               MOVWF       ANSEL             ;AD0设置为模拟端口
               MOVLW       B'00100000'       ;设置AD转换时钟比1:32
               MOVWF       ADCON1    
               MOVLW       B'000000'         ;RA端口弱上拉控制位,RA2弱上拉关闭(外部中断口)
               MOVWF       WPUA              ;弱上拉控制寄存器
            
               MOVLW       B'100'         ;RC2 input,其它全部选择输出
               MOVWF       TRISC  
               MOVLW       B'10000110'       ;上拉开,INT中断下降沿计数,内部指令周期记数
               MOVWF       OPTION_REG        ;预分频分给WDT;分频比为1:8
               MOVLW       B'100'
               MOVWF       IOCA              ;打开PORTA 2电平中断
                                
               clrf         STATUS        ;恢复寄存器体0 
               MOVLW       B'110000'         ;T1分频比设顶为1:8,暂不开启TMR1
               MOVWF       T1CON 
               movlw       0x07
               movwf       CMCON             ;关闭比较器
               RETURN

;*********************************************************
 
ErrRes 
               GOTO         ZHU1
               ORG      0X2100
 DE   0X00,0X00,0X02,0X01,0x02       ;定义默认值  2=2s                     
               END          

⌨️ 快捷键说明

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