指令PIC的指令详解
指令PIC的指令详解
伪指令
#include p16f877a.inc
list p=16f877a,r=dec
__config
__idlocs(用户利用它存放程序版本或日期等) __idlocs 0x1234
errorlevel 0,-302,-305 (编译信息输出显示等级及对对某些信息的单独设定)
#define/#undefine #define KEY1 PORTB,7
equ w_temp equ 0x20
cblock+endc: cblock 0x20 w_temp buffer:8 var1 endc
org 0x00
dt(定义表格数据 代替retlw)table addwf pcl,f
dt 0
dt 1,2,3;retlw 1 ;retlw 2
;retlw 0x33(3)
dt abc ;retlw a ;retlw b
;retlw c
de(源程序中定义片内eeprom的初值 其实地址0x2100) org 0x2100
de 0,1,2,3
de ABCD;定义8个字节
fill(填充程序空间) fill 0x0000,5
fill (goto $),next_bloclk-$ (从当前填充至标号next)死循环
end
宏指令
banksel、pagesel、bankisel、clrc、setc、clrz、setz、clrdc、setdc、skpc、skpnc、skpdc、skpndc、bc、bnc、bz、bnz、bdc、bndc
macro自定义宏
1.ADD LITERAL TO W
ADDLW K (W)+K-W加立即数至W
ADDLW 0X15
W=0X10-0X25
2.ADD W TO F
ADDWF F,D ((W)+(F)-W/F)
ADDWF REG1,0 ADDWF FSR,1
3.ADD W AND CARRY D TO F
ADDWFC F,D
ADDWFC FSR,1 (W+FSR+C-FSR)
4.AND LITERAL AND W
ANDLW K
ANDLW 0x5F((W)并0x5F-W)
5.AND W WITH F
ANDWF F,D
ANDWF FSR 1 (W并FSR-W/F)
6.BIT CLEAR F
BCF F,B
BCF FLAG_REG,7 将FLAG_REG的D7清0
7.BIT SET F
BSF F,B
BSF PROTA,0 PROTA的D0置1
8.BIT TEST,SKIP IF CLEAR
BTFSC F,B
BTFSC FLAG,1 FALSE TRUE位测试 0跳转
9.BIT TEST,SKIP IF SET
BTFSS F,B
BTFSS FLAG,1 FALSE TRUE位测试 1跳转
10.BIT TOGGLE F
BTG F,B
BTG PROTC,4 位取反 PORTC=0111 0101-0110 0101
11.SUBROUTINE CALL
CALL 调用子程序
12.CLEAR F
CLRF FLAG_REG (F清零 置Z=1)
13.CLEAR W REGISTER
CLRW (W清零 置Z=1)
14.CLEAR WATCHDOG TIMER
CLRWDT(监视定时器清零 00h-WDT 0-WDT预定标器 1-TO 1-PD)
15.COMPLEMENT F
COMF REG1,0(寄存器内容取反-W/F)
16.COMPARE F WITH W,SHIP IF F=W
CPFSEQ REG
17.COMPARE F WITH W,SHIP IF FW
CPFSGT REG
18.COMPARE F WITH W,SHIP IF FW
CPFSLT REG
19.DECIMAL ADJUST W REGISTER
DAW REG1,0 (对F中内容进行10进制调整-F/W+F)
REG1=0XA5 C=0 DC=0-0X05 C=1 DC=0
20.DECREMENT F
DECF CNT,1(寄存器内容减1-W/F)
21.DECREMENT F,SHIP IF 0
DECFSZ CNT,1
GOTO ...
CONTINUE ...(减1后为0跳转至CONTINUE)
22.DECREMENT F,SHIO IF NOT 0
DECFSNZ CNT,0
GOTO ...
CONTINUE ...(减1后不为0跳转至CONTINUE)
23.UNCONDITIONAL BRANCH
GOTO 地址
原创力文档

文档评论(0)