assembly - 汇编/汇编语言中的二进制计时器。需要一些代码改进
问题描述
我正在尝试使用汇编语言创建二进制计时器。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
推荐阅读
- python - 在 tkinter 中,是否可以将相同的小部件放入多个框架中?
- python - 使用 pandas 从 Python 中的一个 csv 文件中仅读取一系列行
- jquery - AJAX 请求中没有发送数据
- python - XYZ 是此函数的无效关键字参数
- php - Laravel:将文件上传到服务器后显示特殊字符(黑色问号)
- node.js - 在 Nodejs 中使用 DynamoDB 中的多个条件获取记录
- python - Python 2 和 Python 3 中的 Lambda 映射行为
- php - supervisorctl 不使用 Sqs 我得到了错误
- ios - 条码扫描后屏幕冻结
- eclipse - Eclipse git 行差异状态