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

📄 16c711电压表.asm

📁 PIC 16c711 做电压表的源程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
           GOTO    DISPLAY        ;
           BSF     WEI1,6         ;有断路 快响
           BCF     WEI1,5         ;
           BCF     WEI1,7         ;
           GOTO    DISPLAY        ;
;-------------------------------------------------------------------------
V16:                              ;16V-19.9V           
           BSF     WEI1,6         ;快响
           BCF     WEI1,5         ;
           BCF     WEI1,7         ;
           GOTO    DISPLAY        ;
;-------------------------------------------------------------------------
V_20:
           BTFSC   WEI1,1         ;判断是否有断路
           GOTO    $+6            ;
           BSF     WEI1,7         ;无断路 长响
           BCF     WEI1,6         ;
           BCF     WEI1,5         ;
           CALL    HH             ;
           GOTO    START          ;
           BSF     WEI1,6         ;有断路 快响
           BCF     WEI1,5         ;
           BCF     WEI1,7         ;
           CALL    HH             ;
           GOTO    START          ;
;-------------------------------------------------------------------------
;运算“显示值”
DISPLAY:    
            NOP                   ;
HUN:        
            MOVF   WEI2,W         ;
            MOVWF  WEI3           ;WEI2-100D的余值传给WEI3作为“十位值运算”的启始值
            MOVLW  D’100’
            BCF    STATUS,C       ;清零“进位标志位”
            SUBWF  WEI2,F         ;WEI2-100D余值传给WEI2
            BTFSS  STATUS,C       ;判WEI2是否大于100D
            GOTO   TEN            ;小于100D 跳到“十位值运算”处
            INCF   WEI5,F         ;大于100D WEI5+1:百位值
            GOTO   HUN               
TEN:        
            MOVF   WEI3,W         ;
            MOVWF  WEI4           ;
            MOVLW  D’10’          ;WEI3-10D的余值传给WEI4作为“个位值运算”的启始值
            BCF    STATUS,C       ;清零“进位标志位”
            SUBWF  WEI3,F         ;WEI3-10D余值传给WEI3
            BTFSS  STATUS,C       ;判WEI2是否大于10D
            GOTO   NUMB           ;小于10D 跳到“个位值运算”处
            INCF   WEI6,F         ;大于10D WEI6+1:十位值
            GOTO   TEN
;------------------------------------------------------------------------
;显示“十位值”“小数点”
NUMB:      
            MOVF   WEI6,W
            CALL   TABLE         ;
            MOVWF  PORTB         ;设置“十位值”
            BCF    PORTA,DP      ;设置小数点 
            BCF    PORTA,L       ;打开显示“十位值”
            CALL   DELAY         ;
            MOVLW  B’11111111’   ; 
            MOVWF  PORTB         ;清除“十位值”
            BSF    PORTA,DP      ;清除小数点 
            BSF    PORTA,L       ;关闭显示“十位值”
;------------------------------------------------------------------------
;显示“个位值” “百位值”           
            MOVF   WEI4,W
            CALL   TABLE
            MOVWF  PORTB         ;设置“个位值”
            BCF    STATUS,Z      ;清除“零标志位”
            CLRW                 ;清除W
            IORWF  WEI5,W        ;
            BTFSS  STATUS,Z      ;判有无“百位值”
            BCF    PORTA,DP      ;显示“百位值”
            BCF    PORTA,R       ;打开显示“个位值”
            CALL   DELAY         ;
            MOVLW  B’11111111’   ;
            MOVWF  PORTB         ;清除“个位值”
            BSF    PORTA,DP      ;清除“百位值”
            BSF    PORTA,R       ;关闭显示“个位值”
            CLRF   WEI6          ;
            CLRF   WEI5          ;
            GOTO   START         ;        
;************************************************************************
;延时20MS秒程序
DELAY:
            MOVLW  D’10’         ;
            MOVWF  WEIE          ;
DELAY1: 
            MOVLW  D’10’         ;
            MOVWF  WEIF          ;
DELAY2:
            MOVLW  D’10’         ;
            MOVWF  WEIG          ;
DELAY3: 
            DECFSZ WEIG,F        ;
            GOTO   DELAY3        ;
            DECFSZ WEIF,F        ;
            GOTO   DELAY2        ;
            DECFSZ WEIE,F        ;
            GOTO   DELAY1        ;
            RETURN               ;
;------------------------------------------------------------------------
;延时0.5秒程序
DELAYP5:   
            CLRF   WEI9           ;
            CLRF   WEIA           ;
            BTFSS  WEIA,2         ;
            GOTO   $-1            ;
            CLRF   WEI9           ;
            CLRF   WEIA           ;
            RETURN                ;
;------------------------------------------------------------------------
;延时3秒程序
DELAY3S:
            CLRF   WEI9           ;
            CLRF   WEIA           ;
            BTFSS  WEIA,4         ;
            GOTO   $-1            ;
            CLRF   WEI9           ;
            CLRF   WEIA           ;
            RETURN                ;
;------------------------------------------------------------------------
CV:         
            BTFSS  WEI1,0          ;
            RETURN                 ;
            MOVLW   B’11100000’    ;
            ANDWF   WEI1,W         ;
            BTFSS   STATUS,Z       ;
            RETURN                 ;
            MOVF   ADRES,W         ;
            XORWF  WEI8,W          ;
            BTFSS  STATUS,Z        ;
            GOTO   CLEAR           ;
            BTFSS  WEIA,4          ;
            RETURN                 ;
            BSF    INTCON,RBIE     ;使能PORTB引脚电平变化中断
            BCF    INTCON,GIE      ;禁止全局中断
            BCF    INTCON,T0IE     ;
            MOVF   PORTB,F         ;读状态
            SLEEP                  ;进入休眠状态
            NOP                    ;
            CLRF   INTCON          ;
            BSF    INTCON,GIE      ;
            BSF    INTCON,T0IE     ;
            CLRF   WEI9            ;
            CLRF   WEIA            ;
            RETURN                 ;
CLEAR:
            CLRF  WEI9             ;
            CLRF  WEIA             ;
            RETURN                 ;
;------------------------------------------------------------------------
LL:
            MOVLW   B’11000111’    ;
            MOVWF   PORTB          ;
            BCF     PORTA,L        ;
            BCF     PORTA,R        ;
            CALL    DELAY          ;
            MOVLW   B’11111111’    ;
            MOVWF   PORTB          ;
            BSF     PORTA,L        ;
            BSF     PORTA,R        ;
            RETURN
;------------------------------------------------------------------------
HH:
            MOVLW   B’10001001’    ;
            MOVWF   PORTB          ;
            BCF     PORTA,L        ;
            BCF     PORTA,R        ;
            CALL    DELAY          ;
            MOVLW   B’11111111’    ;
            MOVWF   PORTB          ;
            BSF     PORTA,L        ;
            BSF     PORTA,R        ;
            RETURN
;************************************************************************
;TMR0中断    
INTER:  
            MOVWF   WEIH           ;W,STATUS压入堆栈
            SWAPF   STATUS,W       ;
            MOVWF   WEII           ;
            BCF     INTCON,T0IF    ;
            MOVLW   D’252’         ;
            MOVWF   TMR0           ;设置TMR0初始值  
            INCFSZ  WEI9,F         ;
            GOTO    $+2            ;
            INCF    WEIA,F         ;
            MOVLW   B’11100000’    ;
            ANDWF   WEI1,W         ;
            BTFSC   STATUS,Z       ;
            GOTO    OUT2           ;
            MOVLW   B’00001000’    ;
            XORWF   PORTA,F        ;
            BTFSS   WEI1,6         ;
            GOTO    $+D’10’        ;
            INCFSZ  WEIB,F         ;
            GOTO    OUT            ;
            BCF     PORTA,BUZZER   ;
            BSF     STATUS,RP0     ;
            MOVF    TRISA,W        ;
            XORLW   B’00001000’    ;
            MOVWF   TRISA          ;
            BCF     STATUS,RP0     ;
            GOTO    OUT            ;
;------------------------------------------------------------------------
            BTFSS   WEI1,5         ;
            GOTO    OUT1           ;
            INCFSZ  WEIC,F         ;
            GOTO    OUT            ;
            INCF    WEID,F         ;
            BTFSS   WEID,2         ;
            GOTO    OUT            ;
            CLRF    WEIC           ;
            CLRF    WEID           ;
            BCF     PORTA,BUZZER   ;
            BSF     STATUS,RP0     ;
            MOVF    TRISA,W        ;
            XORLW   B’00001000’    ;
            MOVWF   TRISA          ;
            BCF     STATUS,RP0     ;
            GOTO    OUT            ;
OUT1:       
            BSF     STATUS,RP0     ;
            MOVF    TRISA,W        ;
            ANDLW   B’11110111’    ;
            MOVWF   TRISA          ;
            BCF     STATUS,RP0     ;
            GOTO    OUT            ;
OUT2:        
            BCF     PORTA,BUZZER   ;
OUT:    
            SWAPF   WEII,W         ;W,STATUS弹出堆栈
            MOVWF   STATUS         ;
            SWAPF   WEIH,F         ;
            SWAPF   WEIH,W         ;
            RETFIE                 ;允许中断并返回
            END
;************************************************************************

⌨️ 快捷键说明

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