![](/img/trans.png)
[英]Need help converting pseudo code to an 80x86 Assembly language program with the MASM assembler
[英]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.