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

📄 liu1.asm

📁 一个跑灯的简单汇编程序.单片机为PIC16F628
💻 ASM
字号:
;-----------------
;定义所用到的各寄存器地址
;-----------------------
      TMR0         EQU  01H
      PCL          EQU  02H
      STATUS       EQU  03H
      OPTION_REG   EQU  81H
      INTCON       EQU  0BH
      PORTB        EQU  06H
      TRISB        EQU  86H
      TMR0B        EQU  06H
      PINTER       EQU  20H
      BTEMP        EQU  21H
      ATEMP        EQU  22H
      TEMP         EQU  23H
      RP0          EQU  05H
      RP1          EQU  06H
      TRISA        EQU  85H
      CMCON        EQU  1FH
      PORTA        EQU  05H
      W_TEMP       EQU  24H
      STATUS_TEMP  EQU  25H
      COUNT        EQU  26H
      T0IF         EQU  02H
;--------------------
;主程序
;-----------------------
      ORG          0000H
      NOP
      GOTO MAIN
      ORG          0004H
      GOTO         INT_PROG
MAIN  NOP 
      CLRF       COUNT
      BSF          STATUS,RP0
      MOVLW        01H
      MOVWF        TRISB
INITA BCF    STATUS,RP0
      BCF    STATUS,RP1
      CLRF   PORTA
      MOVLW 0X07
      MOVWF CMCON
      BCF  STATUS,RP1
      BSF  STATUS,RP0
      MOVLW  0X1E
      MOVWF  TRISA
INITB BSF  TRISB,0
           
      MOVLW        07H
      MOVWF        OPTION_REG
      
      BCF  STATUS,RP0
      CLRF INTCON
      BSF INTCON,4
      BSF  INTCON,7

      BCF          STATUS,RP0
      CLRF         PINTER
LOOP  
      MOVLW   01H
      XORWF   COUNT,W
      BTFSC   STATUS,2   
      GOTO   TEST   ;COUNT=1
      MOVF         PINTER,W
      CALL TABLE 
      GOTO TEST1
TEST  

      MOVF         PINTER,W
      CALL TABLE1
TEST1      
      MOVWF        TEMP
      ANDLW        0FEH
      MOVWF        PORTB
      MOVF         TEMP,W
      ANDLW        01H
      MOVWF        PORTA
      INCF         PINTER,F
      
      MOVLW        07H
      ANDWF        PINTER,F
      CALL         DELAY
      CALL         DELAY
      CALL         DELAY
      CALL         DELAY
      CALL         DELAY
      CALL         DELAY
      CALL         DELAY
      CALL         DELAY
      GOTO         LOOP
;-----------------------------
;TMR0延时64ms
;--------------------------
DELAY  BCF          INTCON,T0IF
       MOVLW        TMR0B
       MOVWF        TMR0
LOOP1  BTFSS        INTCON,T0IF
       GOTO         LOOP1
       RETURN
;---------------------
;RC口显示查表子程序
;-----------------------
TABLE  
        ADDWF        PCL,F
        RETLW        B'00000001'
        RETLW        B'00000010'
        RETLW        B'00000100'
        RETLW        B'00001000'
        RETLW        B'00010000'
        RETLW        B'00100000'
        RETLW        B'01000000'
        RETLW        B'10000000'

TABLE1  ADDWF        PCL,F
        RETLW        B'00000001'
        RETLW        B'00000100'
        RETLW        B'00010000'
        RETLW        B'01000000'
        RETLW        B'00000010'
        RETLW        B'00001000'
        RETLW        B'00100000'
        RETLW        B'10000000'

INT_PROG
     MOVWF   W_TEMP
     MOVF    STATUS,W
     MOVWF   STATUS_TEMP

     BCF     INTCON,4 ; clear INTE
     BCF     INTCON,1 ; clear INTF
     MOVLW   01H
     XORWF   COUNT,W
     BTFSC   STATUS,2 
     GOTO  COUNTCLR
     GOTO  COUNTADD
     
COUNTCLR
     CLRF    COUNT
     GOTO    NEXT

COUNTADD
     INCF    COUNT 
NEXT   
     CLRF    PINTER

     CLRF   STATUS
     MOVF  STATUS_TEMP,W
     MOVWF  STATUS
     SWAPF W_TEMP,F
     SWAPF W_TEMP,W
     
     BSF  INTCON,4;  open INTE
     RETFIE
;----------------------------
END
;-----------------------------

⌨️ 快捷键说明

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