定义和初始化EEPROM数据时,必须在0x2100处。
org 0x2100
nvData1 EQU $ //定义地址
DE "abcdefg" //定义内容
nvData2 EQU $
DE "Hello world"
MPASM的伪指令pagesel只操作PCLATH.4和PCLATH.3,故执行查表操作addwf
PCL时,如果表格不在前半页时会出错。
PIC中断入口/出口的现场保存/恢复:
保存:
movwf W_Temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf Status_Temp ; save off contents of STATUS register
movf PCLATH,W
movwf Pclath_Temp
movf FSR,w
movwf FSR_Temp
恢复:
movf FSR_Temp,w
movwf FSR
movf Pclath_Temp,W
movwf PCLATH
movf Status_Temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf W_Temp,f
swapf W_Temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
PIC16系列最令人头疼的是:程序也分页、数据也分页!
所以,调用子程序前要注意调整程序页指针。
每个子程序入口要重新设置数据页指针,可以由多个点跳转过去的节点也要重新设置数据页指针。
从子程序返回后,要重新调整数据页指针和程序页指针。
文章评论(0条评论)
登录后参与讨论