📄 hexcodes.h
字号:
/*
The following C macro's allow direct coding of instructions.
Note that direct coded instructions are different from inline
assembly seen from the compiler. The compiler will view the
instruction codes as values only and not as instructions. All high
level properties are lost. The compiler will reset optimization,
bank updating, etc. after a DW statement.
Example usage:
1. In DW statements.
#asm
DW __SLEEP // Enter sleep mode
DW __MOVWF(__INDF0,0) // Store indirectly
DW __ANDLW(0x80) // W = W & 0x80;
DW __DECF(__FSR0L,__F,0) // Decrement FSR0L (access bank)
DW __CLRF(0xFF,1) // Clear ram (banked access)
DW __BCF(__STATUS,__Carry,0) // Clear Carry bit
DW __MOVFF(__INDF0, __INDF1) // Move byte indirectly
DW __LFSR(0, 0x130) // Load 12 bit constant into FSR0
DW __GOTO(0) // Goto byte address 0
DW __BRA(3) // Branch 3 (+ current DW) words forward (total 4 words)
DW __BRA(0) // Branch 0 (+ current DW) words (equivalent to nop2();)
DW __BRA(-1) // Branch -1 (+ current DW) words ("back" to current DW)
DW __BC(-2) // Branch on Carry 2 words backwards (1 word from current DW)
#endasm
2. In cdata statements:
#pragma cdata[1] = __GOTO(0x3FF)
*/
#if __CoreSet__ == 1800
#define __F 1
#define __W 0
#define __TOSU 0xFFF
#define __TOSH 0xFFE
#define __TOSL 0xFFD
#define __STKPTR 0xFFC
#define __PCLATU 0xFFB
#define __PCLATH 0xFFA
#define __PCL 0xFF9
#define __TBLPTRU 0xFF8
#define __TBLPTRH 0xFF7
#define __TBLPTRL 0xFF6
#define __TBLPTR 0xFF6
#define __TABLAT 0xFF5
#define __PRODH 0xFF4
#define __PRODL 0xFF3
#define __INTCON 0xFF2
#define __INTCON2 0xFF1
#define __INTCON3 0xFF0
#define __INDF0 0xFEF
#define __POSTINC0 0xFEE
#define __POSTDEC0 0xFED
#define __PREINC0 0xFEC
#define __PLUSW0 0xFEB
#define __FSR0H 0xFEA
#define __FSR0L 0xFE9
#define __WREG 0xFE8
#define __INDF1 0xFE7
#define __POSTINC1 0xFE6
#define __POSTDEC1 0xFE5
#define __PREINC1 0xFE4
#define __PLUSW1 0xFE3
#define __FSR1H 0xFE2
#define __FSR1L 0xFE1
#define __BSR 0xFE0
#define __INDF2 0xFDF
#define __POSTINC2 0xFDE
#define __POSTDEC2 0xFDD
#define __PREINC2 0xFDC
#define __PLUSW2 0xFDB
#define __FSR2H 0xFDA
#define __FSR2L 0xFD9
#define __STATUS 0xFD8
#define __Carry 0
#define __DC 1
#define __Zero 2
#define __Overflow 3
#define __Negative 4
#define __NOP 0x0000
#define __MOVWF(f,a) 0x6E00+((f)&0xFF)+((a&1)<<8)
#define __CLRF(f,a) 0x6A00+((f)&0xFF)+((a&1)<<8)
#define __SUBWF(f,d,a) 0x5C00+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __DECF(f,d,a) 0x0400+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __IORWF(f,d,a) 0x1000+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __ANDWF(f,d,a) 0x1400+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __XORWF(f,d,a) 0x1800+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __ADDWF(f,d,a) 0x2400+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __MOVF(f,d,a) 0x5000+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __COMF(f,d,a) 0x1C00+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __INCF(f,d,a) 0x2800+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __DECFSZ(f,d,a) 0x2C00+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __RRCF(f,d,a) 0x3000+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __RLCF(f,d,a) 0x3400+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __SWAPF(f,d,a) 0x3800+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __INCFSZ(f,d,a) 0x3C00+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __BCF(f,b,a) 0x9000+((f)&0xFF)+(((b)&7)<<9)+((a&1)<<8)
#define __BSF(f,b,a) 0x8000+((f)&0xFF)+(((b)&7)<<9)+((a&1)<<8)
#define __BTFSC(f,b,a) 0xB000+((f)&0xFF)+(((b)&7)<<9)+((a&1)<<8)
#define __BTFSS(f,b,a) 0xA000+((f)&0xFF)+(((b)&7)<<9)+((a&1)<<8)
#define __SLEEP 0x0003
#define __CLRWDT 0x0004
#define __RETLW(k) 0x0C00+((k)&0xFF)
#define __CALL(a) 0xEC00+(((a)/2)&0xFF), 0xF000+(((a)/0x200)&0xFFF)
#define __GOTO(a) 0xEF00+(((a)/2)&0xFF), 0xF000+(((a)/0x200)&0xFFF)
#define __MOVLW(k) 0x0E00+((k)&0xFF)
#define __IORLW(k) 0x0900+((k)&0xFF)
#define __ANDLW(k) 0x0B00+((k)&0xFF)
#define __XORLW(k) 0x0A00+((k)&0xFF)
#define __ADDLW(k) 0x0F00+((k)&0xFF)
#define __RETFIE 0x0010
#define __RETURN 0x0012
#define __SUBLW(k) 0x0800+((k)&0xFF)
#define __ADDWFC(f,d,a) 0x2000+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __SUBWFB(f,d,a) 0x5800+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __RLNCF(f,d,a) 0x4400+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __RRNCF(f,d,a) 0x4000+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __DCFSNZ(f,d,a) 0x4C00+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __INFSNZ(f,d,a) 0x4800+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __CPFSEQ(f,a) 0x6200+((f)&0xFF)+((a&1)<<8)
#define __CPFSGT(f,a) 0x6400+((f)&0xFF)+((a&1)<<8)
#define __CPFSLT(f,a) 0x6000+((f)&0xFF)+((a&1)<<8)
#define __TSTFSZ(f,a) 0x6600+((f)&0xFF)+((a&1)<<8)
#define __BTG(f,b,a) 0x7000+((f)&0xFF)+(((b)&7)<<9)+((a&1)<<8)
#define __MOVLB(k) 0x0100+((k)&0xF)
#define __MULWF(f,a) 0x0200+((f)&0xFF)+((a&1)<<8)
#define __MULLW(k) 0x0D00+((k)&0xFF)
#define __BC(n) 0xE200+((n)&0xFF)
#define __BN(n) 0xE600+((n)&0xFF)
#define __BNC(n) 0xE300+((n)&0xFF)
#define __BNN(n) 0xE700+((n)&0xFF)
#define __BNOV(n) 0xE500+((n)&0xFF)
#define __BNZ(n) 0xE100+((n)&0xFF)
#define __BOV(n) 0xE400+((n)&0xFF)
#define __BRA(n) 0xD000+((n)&0x7FF)
#define __BZ(n) 0xE000+((n)&0xFF)
#define __RCALL(n) 0xD800+((n)&0x7FF)
#define __MOVFF(s,d) 0xC000+((s)&0xFFF), 0xF000+((d)&0xFFF)
#define __NEGF(f,a) 0x6C00+((f)&0xFF)+((a&1)<<8)
#define __SETF(f,a) 0x6800+((f)&0xFF)+((a&1)<<8)
#define __SUBFWB(f,d,a) 0x5400+((f)&0xFF)+((d&1)<<9)+((a&1)<<8)
#define __LFSR(r,k) 0xEE00+(((r)&3)<<4)+(((k)/0x100)&0xF), 0xF000+((k)&0xFF)
#define __DAW 0x0007
#define __PUSH 0x0005
#define __POP 0x0006
#define __RESET 0x00FF
#define __TBLRD 0x0008
#define __TBLRD__I 0x0009
#define __TBLRD__D 0x000A
#define __TBLRD_I_ 0x000B
#define __TBLWT 0x000C
#define __TBLWT__I 0x000D
#define __TBLWT__D 0x000E
#define __TBLWT_I_ 0x000F
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -