首页 > 解决方案 > 汇编/汇编语言中的二进制计时器。需要一些代码改进

问题描述

我正在尝试使用汇编语言创建二进制计时器。PORTA 中有 5 个 LED,PORTB 中有 8 个 LED。我编写了一个代码,在 PORTB 中输出二进制时间,当寄存器满时,程序重新开始。如何改进我的代码,在 PORTB 使所有 8 个 LED 都亮起(寄存器已满)后,程序继续计数到 A 寄存器(PORTA 中的 LED 亮起),并且在所有 13 个 LED 都亮起之后,程序重新开始?

LIST   p=16F84                  
#INCLUDE  <p16F84a.inc>             
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF       
Kint1 EQU 0Ch                       
ORG  0x000              
clrf  PORTA                         
clrf  PORTB                         
bsf  STATUS, 5                      
movlw  b'00000000'                  
movwf   TRISB                   
movlw   b'00000'                        
movwf  TRISA                        
movlw  b'00000111'                  
movwf OPTION_REG                    
bcf  STATUS, 5                  
;movlw  d'16'                       
;movlw  d'2'                        
movlw  d'80'                        
movwf  Kint1                        
Start1   movlw  d'11'                    
movwf  TMR0                         
Start2   btfss  INTCON,2        
goto  Start2                        
bcf INTCON,2                        
decfsz  Kint1,1                     
goto  Start1                     
incf  PORTB                         
;movlw  d'16'                       
;movlw  d'2'                        
movlw  d'80'                        
movwf   Kint1                       
goto  Start1                        
END    

标签: assemblypic

解决方案


此代码执行原始海报所要求的。

此示例使用与原始海报相同级别的评论制作。

    LIST    p=16F84a

#INCLUDE <p16F84a.inc>

    __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

Kint1: EQU  0Ch

    ORG     0x000
    clrw
    tris    PORTA
    tris    PORTB
    movlw   0x07
    option
    clrf    PORTA
    clrf    PORTB
CountLoop:
    movlw   0x80
    movwf   Kint1
WaitLoop:
    movlw   0x0b
    movwf   TMR0
    bcf     INTCON,TMR0IF
WaitTMR0:
    btfss   INTCON,TMR0IF
    goto    WaitTMR0
    decfsz  Kint1,F
    goto    WaitLoop
    incfsz  PORTB,F
    goto    CountLoop
    incf    PORTA,F
    goto    CountLoop

    END

推荐阅读