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

📄 20062131443381428.asm

📁 电动绕线机控制器程序 电动绕线机控制器程序 电动绕线机控制器程序
💻 ASM
字号:
TITLE "PIC16F84A COUNTING PROGRAM"
LIST   P=16F84A
#INCLUDE<P16F84A.INC>
;电动绕线机控制器程序
;-------------------------------------------------
DATE           EQU           11H
TEMP           EQU           12H 
TEMP1          EQU           13H
TEMP2          EQU           14H
COUNT0         EQU           15H
COUNT1         EQU           16H
COUNT2         EQU           17H
QIAN           EQU           18H
BAI            EQU           19H
SHI            EQU           1AH 
GE             EQU           1BH
TEMP3          EQU           1CH
W_TEMP         EQU           1EH
S_TEMP         EQU           1FH
BZ_TEMP        EQU           20H 
;----------------------------------------------------
               ORG           00H
               NOP
               GOTO          START
;--------------中断子程序----------------------------
               ORG           04H
               MOVWF         W_TEMP
               MOVF          STATUS,0
               MOVWF         S_TEMP
               BCF           INTCON,1
               BCF           INTCON,7
               BTFSC         BZ_TEMP,0
               GOTO          JIAN
;--------------
               MOVLW         09H
               XORWF         GE,0
               BTFSS         STATUS,2
               GOTO          GJY
               CLRF          GE
;---------------
               MOVLW         09H
               XORWF         SHI,0
               BTFSS         STATUS,2
               GOTO          SJY
               CLRF          SHI
;---------------
               MOVLW         09H
               XORWF         BAI,0
               BTFSS         STATUS,2
               GOTO          BJY
               CLRF          BAI
;---------------
               MOVLW         09H
               XORWF         QIAN,0
               BTFSS         STATUS,2
               GOTO          QJY
               CLRF          QIAN
               GOTO          JYW
;--------------
GJY            INCF          GE,1
               GOTO          JYW 
SJY            INCF          SHI,1
               GOTO          JYW
BJY            INCF          BAI,1
               GOTO          JYW
QJY            INCF          QIAN,1
               GOTO          JYW 
;--------------
JIAN           MOVF          GE,0
               BTFSS         STATUS,2
               GOTO          GCY
;--------------
               MOVF          SHI,0
               BTFSS         STATUS,2
               GOTO          SCY
;--------------
               MOVF          BAI,0
               BTFSS         STATUS,2
               GOTO          BCY
;--------------
               MOVF          QIAN,0
               BTFSS         STATUS,2
               GOTO          QCY
               BCF           PORTB,1         ;关电机
               BCF           BZ_TEMP,0       ;清预置标志位
               GOTO          JYW
;--------------
GCY            DECF          GE,1            ;寄存器执行减1
               GOTO          JYW
SCY            MOVLW         09H
               MOVWF         GE
               DECF          SHI,1
               GOTO          JYW
BCY            MOVLW         09H
               MOVLW         GE
               MOVLW         SHI
               DECF          BAI,1
               GOTO          JYW
QCY            MOVLW         09H
               MOVLW         GE
               MOVLW         SHI
               MOVLW         BAI
               DECF          QIAN,1 
;-------------------------------------
JYW            BSF           BZ_TEMP,1       ;置显示刷新标志位
               BSF           INTCON,7        ;开总中断
               MOVF          S_TEMP,0
               MOVWF         STATUS          ;恢复STATUS
               MOVF          W_TEMP,0         ;恢复W
;-------------------------------------        
               RETFIE                        ;中断返回
;--------------主程序---------------------------
               ORG           50H
START          CLRF          BZ_TEMP
               CLRF          TEMP            ;显示寄存器清零
               CLRF          GE
               CLRF          SHI
               CLRF          BAI   
               CLRF          QIAN
               BSF           STATUS,5
               MOVLW         01H              ;PB0作输入口
               MOVWF         TRISB            ;PA作输入口
               MOVWF         0FFH
               MOVWF         TRISA
               BCF           STATUS,5
               CLRF          PORTA
               CLRF          PORTB
               BSF           INTCON,4
               BSF           INTCON,7
               CALL          XIANSHI
;--------------主程序内核
LOOP           BTFSS         PORTA,0          ;预置键是否按下
               GOTO          NP_1
LOOP_1         BTFSC         PORTA,1          ;起停键是否按下
               GOTO          LOOP             ;无键按下返回
               CALL          DELAY20MS        ;延时去干扰
               BTFSC         PORTA,1
               GOTO          LOOP             ;是干扰,返回
LOOP_2         BTFSS         PORTA,1          ;起停键是否松开
               GOTO          $-1
               CALL          DELAY20MS
               BTFSS         PORTA,1
               GOTO          LOOP_2
               BSF           PORTA,1          ;开电机
;--------------起停键判断
NP             BTFSS         BZ_TEMP,1        ;判断是否需要刷新显示
               GOTO          $+3              ;不需刷新则转向起停键判断
               CALL          XIANSHI          ;调显示刷新
               BCF           BZ_TEMP,1        ;清刷新标志位
               BTFSC         PORTA,1
               GOTO          NP
               CALL          DELAY20MS
               BTFSC         PORTA,1
               GOTO          NP
               BCF           PORTB,1           ;关电机
OP             BTFSS         PORTA,1           ;判断起停键是否松开
               GOTO          $-1
               CALL          DELAY20MS
               BTFSS         PORTA,1
               GOTO          OP
               GOTO          LOOP              ;等待下一个循环
;--------------延时20MS子程序-------------------------------------
NP_1           CALL          DELAY20MS
               BTFSC         PORTA,0
               GOTO          LOOP_1
NP_2           BTFSS         PORTA,0
               GOTO          $-1
               CALL          DELAY20MS
               BTFSS         PORTA,0
               GOTO          NP_2
               CALL          YUZHI
               GOTO          LOOP_1
;---------------显示子程序-----------------------------------------
DELAY20MS      MOVLW         08H
               MOVWF         COUNT0
LP             MOVLW         5DH
               MOVWF         COUNT1
               DECFSZ        COUNT1,1
               GOTO          $-1
               DECFSZ        COUNT0,1
               GOTO          LP
               RETURN
;---------------
XIANSHI        MOVLW         18H
               MOVWF         TEMP1
XS             BTFSC         TEMP1,2
               GOTO          XIAN
               MOVF          TEMP1,0
               MOVWF         FSR
               MOVF          00H,0
               CALL          TB
               MOVWF         DATE
               CALL          FSBCD
               INCF          TEMP1,1
               GOTO          XS          
XIAN           RETURN
;**************BCD码发送子程序****************************
FSBCD          MOVLW     08H             ;发送循环次数
               MOVWF     COUNT2
               BCF       PORTB,4         ;关显示
               BCF       STATUS,0
BP             BCF       PORTB,3
               RLF       DATE,1
               BTFSS     STATUS,0
               GOTO      BP1
               BSF       PORTB,2
               GOTO      BP2
BP1            BCF       PORTB,2
               NOP
BP2            BSF       PORTB,3        ;产生时钟上升沿
               DECFSZ    COUNT2,1       ;发送完毕否?   
               GOTO      BP
               BSF       PORTB,4        ;开显示
               RETURN       
;--------------显示代码表-------------------------------
TB             ADDWF         PCL,1
               RETLW         03H           ;0
               RETLW         9FH           ;1
               RETLW         25H           ;2
               RETLW         0DH           ;3
               RETLW         99H           ;4
               RETLW         49H           ;5
               RETLW         0C1H          ;6
               RETLW         1FH           ;7
               RETLW         01H           ;8
               RETLW         19H           ;9
               RETURN
;--------------预置子程序-------------------------------------
YUZHI          BSF           BZ_TEMP,0        ;置预置标志位
               MOVLW         18H              
               MOVWF         TEMP3            ;置移位寄存器初值
ZHI            BTFSS         PORTA,2          ;位选键是否按下
               GOTO          YIWEI            ;按下
ZHI_1          BTFSS         PORTA,3          ;加减键是否按下
               GOTO          JIA              ;按下
ZHI_2          BTFSC         PORTA,0          ;预置键是否按下
               GOTO          ZHI
               CALL          DELAY20MS
               BTFSC         PORTA,0
               GOTO          ZHI
ZHI_3          BTFSS         PORTA,0          ;预置键是否松开
               GOTO          $-1
               CALL          DELAY20MS
               BTFSS         PORTA,0
               GOTO          ZHI_3
               GOTO          YU               ;预置完毕,返回
;--------------位选程序
YIWEI          CALL          DELAY20MS
               BTFSC         PORTA,2
               GOTO          ZHI_1
               CLRF          TEMP            ;加减中间寄存器清零
               BTFSS         TEMP3,2         ;间址地址是否溢出
               GOTO          YIWEI_0
               MOVLW         18H
               MOVWF         TEMP3
               GOTO          YIWEI_1
YIWEI_0        INCF          TEMP3,1         ;间址寄存器加1
YIWEI_1        BTFSS         PORTA,2         ;判断位选键是否松开
               GOTO          $-1
               CALL          DELAY20MS
               BTFSS         PORTA,2
               GOTO          YIWEI_1
               GOTO          ZHI_1
;--------------加减程序
JIA            CALL          DELAY20MS
               BTFSC         PORTA,3
               GOTO          ZHI_2
               MOVF          TEMP,0
               XORLW         09H
               BTFSS         STATUS,2         ;判断数据是否为9
               GOTO          $+3
               CLRF          TEMP
               GOTO          $+2
               INCF          TEMP,1
               MOVF          TEMP3,0
               MOVWF         FSR
               MOVF          TEMP,0           ;将数据写入间址
               MOVWF         00H
               CALL          XIANSHI          ;调显示刷新
JIA_1          BTFSS         PORTA,3          ;判断加减键是否松开     
               GOTO          $-1
               CALL          DELAY20MS
               BTFSS         PORTA,3
               GOTO          JIA_1
               GOTO          ZHI_2
;-------------
YU             RETURN
;---------------------------------------------------------
               END

⌨️ 快捷键说明

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