当即数与操控操作指令
SLEEP 单片机进入低功耗休眠方法
语法方法:SLEEP
操作数:无
履行时刻:一个指令周期
履行进程:
看门狗计数器清0
看门狗计数器的预分频器清0
STATUS寄存器的“TO”标志方位1
STATUS寄存器的“PD”标志位清0
状况标志影响:TO PD
阐明:SLEEP指令能够让单片机中止一切的作业进入低功耗休眠方法,在休眠方法下芯片的功耗降至最低。在休眠状况下,单片机的主时钟振荡器将中止,一切内部寄存器的内容坚持不变,直到呈现某一条件将单片机从休眠状况下唤醒。
指令典范:
CALL PrepSleep ;封闭一切不需求的负载,预备进入休眠方法
SLEEP ;现在进入休眠方法
NOP ;唤醒后开端履行指令
CLRWDT 铲除看门狗计数器
语法方法:CLRWDT
操作数:无
履行时刻:一个指令周期
履行进程:
看门狗计数器清0
看门狗计数器的预分频器清0
STATUS寄存器的“TO”标志方位1
STATUS寄存器的“PD”标志方位1
状况标志影响:TO PD
阐明:假如芯片在编程烧写时启用了独立的片上看门狗电路,则在程序运转的进程中有必要隔一段时刻就履行这条铲除看门狗的指令。假如过了满足长的时刻而没有履行这条指令,到了看门狗计数器计数溢出时就会让单片机产生复位,程序将会从复位地址处从头运转。PIC单片机的看门狗一旦被翻开就不能经过软件的方法封闭,在芯片休眠的时分照样作业,故能够作为让单片机退出休眠的一个条件。经过启用看门狗能够防止软件死循环的毛病。需求着重的是在一个好的程序设计中CLRWDT这条指令只在程序的主循环中呈现一次,尽量防止处处放置清看门狗指令,绝对不能把这条指令放到中止服务程序中。
指令典范:
MainLoop:~~~ ;程序主循环
CLRWDT ;清看门狗
CALL KeyCheck ;查看按键
CALL Display ;显现改写
GOTO MainLoop ;重复主循环体
RETLW 子程序完毕回来并在W寄存器内赋一8位当即数
语法方法:RETLW k
操作数:k为8位当即数
履行时刻:2个指令周期
履行进程:弹出栈顶内容到PC
k→W
状况标志影响:无
阐明:除了在子程序回来时从W寄存器带出一个8位当即数外,其他的履行情况和指令“RETURN”完全相同。该指令经常被用于查表功用中。
指令典范:
MOVF Index,W ;W中设定查表索引值(0~3)
CALL Lookup ;调用查表子程序
…… ;其他指令
Lookup:ADDWF PCL,f ;对PC值作修正
RETLW ‘0’ ;回来0对应的ASCII码
RETLW ‘1’ ;回来1对应的ASCII码
RETLW ‘2’ ;回来2对应的ASCII码
RETLW ‘3’ ;回来3对应的ASCII码
RETFIE 中止服务程序完毕并回来
语法方法:RETFIE
操作数:无
履行时刻:2个指令周期
履行进程:弹出栈顶内容到PC
INTCON寄存器的第7位GIE主动置1
状况标志影响:无
阐明:该指令把硬件仓库栈顶的内容(中止产生时的回来地址)弹送到程序计数器PC内,对仓库的影响如下图所示
和指令“RETURN”的景象根本相同,要害区别是该指令会把INTCON寄存器的第7位大局中止使能位(GIE)置1(在呼应中止时该位主动清0)。然后回来到中止产生时的下一条指令处持续运转。
指令典范:
MOVF status_temp,w ;预备康复STATUS寄存器的内容
MOVWF STATUS ;STATUS寄存器被康复
SWAPF w_temp,f ;预备康复W寄存器内容
SWAPF w_temp,w ;W寄存器被康复
RETFIE ;中止回来并答应新的中止呼应
RETURN 子程序完毕回来
语法方法:RETURN
操作数:无
履行时刻:2个指令周期
履行进程:弹出栈顶内容到PC
状况标志影响:无
阐明:该指令将栈顶的内容(子程序调用时的回来地址)弹送到程序计数器PC内。留意特别寄存器PCLATH的内容不会因而改动。程序将会回到在子程序调用时的下一条指令处开端履行。
影响见该图
指令典范:
CALL Dly4Tcy ;延时4个指令周期
…… ;其他指令
Dly4Tcy:RETURN ;CALL和RETURN一共耗费4个指令周期