⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hexcodes.h

📁 FreeRTOS 是一个源码公开的免费的嵌入式实时操作系统
💻 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 + -