Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PC寄存器显示高于最后一个指令号的值_C_Assembly_Pic - Fatal编程技术网

PC寄存器显示高于最后一个指令号的值

PC寄存器显示高于最后一个指令号的值,c,assembly,pic,C,Assembly,Pic,我是CCS C编程新手,我在书上做了一个练习。我从我的书中复制了完全相同的代码到编译器中,但程序不起作用。我对寄存器和指令进行了一些检查,在代码末尾发现: .................... enable_interrupts(0X0BC0); 00A4: MOVLW C0 00A5: IORWF 0B,F .................... .................... .................... } .................

我是CCS C编程新手,我在书上做了一个练习。我从我的书中复制了完全相同的代码到编译器中,但程序不起作用。我对寄存器和指令进行了一些检查,在代码末尾发现:

.................... enable_interrupts(0X0BC0); 
00A4:  MOVLW  C0
00A5:  IORWF  0B,F
....................  
....................  
.................... } 
....................  
00A6:  SLEEP
但Proteus上的注册信息显示:

PC: $00A7
INSTR.:ADDLW 0x1FF

输出文件中没有类似的指令。这里发生了什么?

闪存不能真的“空”,但它要么是0x0000,要么是0xFFFF(如果它有ECC位,则无法读取,而PIC16没有)

显然,在PIC16上,“空”闪存包含值0xFFFF

指令“ADDLW 0x1FF”由该数字表示,因此CPU将解释“空”闪存,就像它被指令“ADDLW 0x1FF”填充一样


据我所知,SLEEP指令在下一条指令(这是“ADDLW 0x1FF”)时停止CPU,然后等待某个中断事件发生。

这个程序的目标是什么?使用外部中断启用睡眠和唤醒PIC,更改时中断????