我开始研究PIC18f4550的组装,并且我一直在尝试做一些活动,但我不知道如何解决。根据活动“使用MPLABX”,我应该对2个16位变量求和并将结果存储在第三个16位变量中。
我能够将结果求和并存储在第三个变量中,但是我不知道如何在16位中声明这些变量。
; TODO INSERT CONFIG CODE HERE USING CONFIG BITS GENERATOR
INCLUDE
RES_VECT CODE 0x0000 ; processor reset vector GOTO START ; go to beginning of program
; TODO ADD INTERRUPTS HERE IF USED
MAIN_PROG CODE ; let linker place main program
START
clrw ;clear the w register
num1 equ 00000 ;declares 3 variables and their initial values
num2 equ 00001
result equ 00002
movlw H'4F'
movwf num1
movlw H'8A'
movwf num2
movf num1,W ;moves num1 value to w register
addwf num2,W ;sums num2 and w and stores it in w itself
movwf resultado ;moves w to the result register
END
我需要检查我的代码是否正确(在组装时是全新的),以及如何以16位格式声明这3个变量。预先感谢!
答案 0 :(得分:0)
PIC18是一个8位控制器。如果要添加两个16位变量,则必须逐字节进行操作。
也许您不想使用绝对地址并使用链接器:
udata_acs H'000'
num1_LSB RES 1 ;reserve one byte on the access bank
num1_MSB RES 1 ;
您还可以为名称保留两个字节:
udata_acs H'000'
num1 RES 2 ;reserve two bytes on the access bank
知道您可以使用:
访问第二个字节movwf num1+1
并且始终记得检查进位以获取加法的MSB。