作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试学习使用 MPLAB X 和 PIC18F1320 微 Controller 进行汇编编程。我一直在遵循 MPASM 用户指南 (http://ww1.microchip.com/downloads/en/DeviceDoc/33014J.pdf),并从我的微 Controller 上的 RB0 引脚获得了一个闪烁的 LED。我写了一个程序让 LED 每 512 滴答闪烁一次。我无法弄清楚如何将延迟从 512 更改为可变数量,以便我可以在代码中的其他地方更改它。理想情况下,这条线
movf 0xFF,count1
将替换为
count1=delay1
其中 delay1 是代码前面设置为 0x20 的变量。
代码如下:
#include "p18F1320.inc"
CONFIG OSC = INTIO1 ; Oscillator Selection bits (Internal RC oscillator, CLKO function on RA6 and port function on RA7)
cblock 0x20 ;start of data section
count1 ;delay variable
delay1 ;length of delay
endc
org 00 ;\
movwf PORTB ; |
movlw 0x00 ; |
movwf TRISB ; |--Start program and configure I/O pins
movlw 0x00 ; |
movwf ADCON1 ; |
movlw b'00000110' ;/
movwf delay1 ; Set the variable delay1=0x20
movlw 0x20 ;/
loop call BLINKONCE ; Blink loop
goto loop ;/
BLINKONCE ;\
bsf PORTB,4 ; |
call DELAY ; |--makes I/O pin RB4 turn on and off once with a delay in between
bcf PORTB,4 ; |
call DELAY ;/
DELAY
movf 0xFF,count1 ;I want to be able to set count1=delay1 right here
loop2 decfsz count1, 1 ; Delay loop with length=count1
goto loop2 ;/
return ; end program
end ;/
谢谢!
最佳答案
在 PIC18 设备上,您可以使用 movff
指令来执行您想要的操作 - 在两个寄存器之间复制一个值。 movf
指令只允许您将值从寄存器复制到工作寄存器。
此外,程序开始时 movlw
和 movwf
指令的顺序也是从前到后。您调用 movlw
将常量值从程序内存加载到工作寄存器,然后调用 movwf
将该值从工作寄存器复制到数据内存。
这个网站有一个在线 PIC 模拟器和教程,更详细地解释了这一切是如何工作的:
关于assembly - 如何将变量的值移动到汇编中的另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29090083/
我是一名优秀的程序员,十分优秀!