繁体   English   中英

汇编/汇编语言中的二进制计时器。 需要一些代码改进

[英]Binary timer in Assembly/Assembler language. Need some code improvement

我正在尝试使用汇编语言创建二进制计时器。 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    

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

这个例子是用与原始海报相同级别的评论制作的。

    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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM