Subject:
pic18f4455 - ACCESS flag on the device working or not?
From:
Sivaram Gowkanapalli ####@####.####
Date:
3 Jun 2011 06:28:15 -0000
Message-Id: <SNT125-W23A9214B87F6BCD60419F3D27F0@phx.gbl>
Hello,
This piece of code is not working on the pic18F4455. It has been compiled withXINST = ON and with the --extended flag of gpasm.
The expected result of _temp is 0xf+1+1+1, but it stays at 0xff, the valuefrom the instruction at address 180. As you can see that _temp has anaddress of 0x3 and it should not be affected by the BSR. I am not sure if thishas to do with the extended instruction set or if it could be something else.It seems to be something simple that I am missing as the below case is toostraightforward to be a bug. Is this how the instructions would be, with XINST= ON?
It works perfectly fine on gpsim. I see the value of _temp = 0xf+1+1+1. It is only on the device that it is not working.
from the .lst file:
00017e 0eff movlw 0xff movlw 0xff000180 cfe8 movff 0xfe8, 0x3 movff WREG,_temp000182 f003000184 0e0f movlw 0xf movlw 0x0f000186 6e03 movwf 0x3, 0 movwf _temp,ACCESS000188 2a03 incf 0x3, 0x1, 0 incf _temp,F,ACCESS00018a 2a03 incf 0x3, 0x1, 0 incf _temp,F,ACCESS00018c 2a03 incf 0x3, 0x1, 0 incf _temp,F,ACCESS
from the hex file which was downloaded from the pic (to confirm that the hexfile was written to the pic correctly, fromgpdasm -y -p p18f4455 from-pic.hex | less) :
000180: cfe8 movff 0xfe8, 0x3000182: f003000184: 0e0f movlw 0xf000186: 6e03 movwf 0x3, 0000188: 2a03 incf 0x3, 0x1, 000018a: 2a03 incf 0x3, 0x1, 000018c: 2a03 incf 0x3, 0x1, 0
output from gpsim when stepping through the code:
0x0000000000002FE9 p18f4455 0x017E 0x0EFF movlw 0xff Wrote: 0x00FF to W(0x0FE8) was 0x00080x0000000000002FEB p18f4455 0x0180 0xCFE8 movff W,REG003 Read: 0x00FF from W(0x0FE8) Wrote: 0x00FF to REG003(0x0003) was 0x00000x0000000000002FEC p18f4455 0x0184 0x0E0F movlw 0x0f Wrote: 0x000F to W(0x0FE8) was 0x00FF0x0000000000002FED p18f4455 0x0186 0x6E03 movwf REG003 Read: 0x000F from W(0x0FE8) Wrote: 0x000F to REG003(0x0003) was 0x00FF0x0000000000002FEE p18f4455 0x0188 0x2A03 incf REG003,f,0 Read: 0x000F from REG003(0x0003) Wrote: 0x0010 to REG003(0x0003) was 0x000F Wrote: 0x0002 to status(0x0FD8) was 0x00040x0000000000002FEF p18f4455 0x018A 0x2A03 incf REG003,f,0 Read: 0x0010 from REG003(0x0003) Wrote: 0x0011 to REG003(0x0003) was 0x0010 Wrote: 0x0000 to status(0x0FD8) was 0x00020x0000000000002FF0 p18f4455 0x018C 0x2A03 incf REG003,f,0 Read: 0x0011 from REG003(0x0003) Wrote: 0x0012 to REG003(0x0003) was 0x0011 Wrote: 0x0000 to status(0x0FD8) was 0x0000
Any thoughts, please?
ThanksSiva