📄 iosfr86.h
字号:
/************************************************/
/* I/O管脚定义及特别寄存器定义 */
/************************************************/
//io_field __io(0x0000) ; // R/W reserved
//io_field __io(0x0001) P1DR; // R/W P1 Port output latch
//io_field __io(0x0002) P2DR; // R/W P2 Port output latch
//io_field __io(0x0003) P3DR; // R/W P3 Port output latch
//io_field __io(0x0004) P3OUTCR; // R P3 Port output circuit control
//io_field __io(0x0005) P5DR; // R/W P5 Port output latch
//io_field __io(0x0006) P6DR; // R/W P6 Port output latch
//io_field __io(0x0007) P7DR; // R/W P7 Port output latch
//io_field __io(0x0008) P1PRD; // R P1 Terminal input
//io_field __io(0x0009) P2PRD; // R P2 Terminal input
//io_field __io(0x000A) P3PRD; // R P3 Terminal input
//io_field __io(0x000B) P5PRD; // R P5 Terminal input
//io_field __io(0x000C) P6CR; // R/W P6 Port input/output control
//io_field __io(0x000D) P7PRD; // R P7 Terminal input
//unsigned char __io(0x000E) ADCCR1; // R/W AD control register 1
//unsigned char __io(0x000F) ADCCR2; // R/W AD control register 2
//unsigned char __io(0x0010) TREG1AL; // R/W Timer register 1A
//unsigned char __io(0x0011) TREG1AM; // R/W Timer register 1A
//unsigned char __io(0x0012) TREG1AH; // R/W Timer register 1A
//unsigned char __io(0x0013) TREG1B; // R/W Timer register 1B
//unsigned char __io(0x0014) TC1CR1; // R/W Timer Counter control 1
//unsigned char __io(0x0015) TC1CR2; // R/W Timer Counter control 2
//unsigned char __io(0x0016) TC1SR; // R TC1 Status
//unsigned char __io(0x0017) ; // R/W reserved
//unsigned char __io(0x0018) TC3CR; // R/W Timer Counter 3 control
//unsigned char __io(0x0019) TC4CR; // R/W Timer Counter 4 control
//unsigned char __io(0x001A) TC5CR; // R/W Timer Counter 5 control
//unsigned char __io(0x001B) TC6CR; // R/W Timer Counter 6 control
//unsigned char __io(0x001C) TTREG3; // R/W Timer register 3
//unsigned char __io(0x001D) TTREG4; // R/W Timer register 4
//unsigned char __io(0x001E) TTREG5; // R/W Timer register 5
//unsigned char __io(0x001F) TTREG6; // R/W Timer register 6
//unsigned char __io(0x0020) ADCDR1; // R AD converter register 1
//unsigned char __io(0x0021) ADCDR2; // R AD converter register 2
//unsigned char __io(0x0022) ; // R/W reserved
//unsigned char __io(0x0023) ; // R/W reserved
//unsigned char __io(0x0024) ; // R/W reserved
//unsigned char __io(0x0025) UARTSR; // R UART Status register
//unsigned char __io(0x0025) UARTCR1; // W UART control register 1
//unsigned char __io(0x0026) UARTCR2; // W UART control register 2
//unsigned char __io(0x0027) ; // R/W reserved
//unsigned char __io(0x0028) LCDCR; // R/W LCD Control register
//unsigned char __io(0x0029) P1LCR; // R/W P1 segment output control
//unsigned char __io(0x002A) P5LCR; // R/W P5 segment output control
//unsigned char __io(0x002B) P7LCR; // R/W P7 segment output control
//unsigned char __io(0x002C) PWREG3; // R/W Timer register 3
//unsigned char __io(0x002D) PWREG4; // R/W Timer register 4
//unsigned char __io(0x002E) PWREG5; // R/W Timer register 5
//unsigned char __io(0x002F) PWREG6; // R/W Timer register 6
//unsigned char __io(0x0030) ; // R/W reserved
//unsigned char __io(0x0031) ; // R/W reserved
//unsigned char __io(0x0032) ; // R/W reserved
//unsigned char __io(0x0033) ; // R/W reserved
//unsigned char __io(0x0034) WDTCR1; // W Watchdog timer control 1
//unsigned char __io(0x0035) WDTCR2; // W Watchdog timer control 2
//unsigned char __io(0x0036) TBTCR; // R/W TBT/TG/DVO control
//unsigned char __io(0x0037) EINTCR; // R/W External interrupt control
//unsigned char __io(0x0038) SYSCR1; // R/W System control 1
//unsigned char __io(0x0039) SYSCR2; // R/W System control 2
//unsigned char __io(0x003A) EIRL; // R/W Interrupt enable register L
//unsigned char __io(0x003B) EIRH; // R/W Interrupt enable register H
//unsigned char __io(0x003C) ILL; // R/W Interrupt latch L
//unsigned char __io(0x003D) ILH; // R/W Interrupt latch H
//unsigned char __io(0x003E) INTSEL; // R/W Interrupt source selector
//unsigned char __io(0x003F) PSW; // R/W Program Status word
typedef struct byte_format
{
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
unsigned char bit3:1;
unsigned char bit4:1;
unsigned char bit5:1;
unsigned char bit6:1;
unsigned char bit7:1;
} byte_field;
typedef union io_format
{
unsigned char io_byte;
byte_field io_bit;
} io_field;
io_field __io(0x0001) P1DR; // R/W P1 Port output latch
// ===================== // P1
#define OP1 P1DR.io_byte // 可用作:I/O,外部中断输入,SIO输入/输出,UART输入/输出,LCD SEG管脚
#define OP10 P1DR.io_bit.bit0 // P10,SEG31
#define OP11 P1DR.io_bit.bit1 // P11,SEG30
#define OP12 P1DR.io_bit.bit2 // P12,SEG29,INT1
#define OP13 P1DR.io_bit.bit3 // P13,SEG28,INT2
#define OP14 P1DR.io_bit.bit4 // P14,SEG27,INT3
#define OP15 P1DR.io_bit.bit5 // P15,SEG26,RXD,SI
#define OP16 P1DR.io_bit.bit6 // P16,SEG25,TXD,SO
#define OP17 P1DR.io_bit.bit7 // P17,SEG24,/SCK
io_field __io(0x0002) P2DR; // R/W P2 Port output latch
// ===================== // P2
#define OP2 P2DR.io_byte // I/O,低频晶振,外部中断输入,STOP模式唤醒信号输入
#define OP20 P2DR.io_bit.bit0 // P20,/STOP,/INT5
#define OP21 P2DR.io_bit.bit1 // P21,XTIN
#define OP22 P2DR.io_bit.bit2 // P22,XTOUT
io_field __io(0x0003) P3DR; // R/W P3 Port output latch
// ===================== // P3
#define OP3 P3DR.io_byte // I/O,计时/计数,I/O,分频输出
#define OP30 P3DR.io_bit.bit0 // P30,/DVO
#define OP31 P3DR.io_bit.bit1 // P31,/PWM3,/PDO3,TC3
#define OP32 P3DR.io_bit.bit2 // P32,/PWM4,/PDO4,/PPG4,TC4
#define OP33 P3DR.io_bit.bit3 // P33,/PWM6,/PDO6,/PPG6,TC6
io_field __io(0x0004) P3OUTCR; // R P3 Port output circuit control
/*** P3OUTCR Port P3 Output circuit Control Register (0x0004 初始**** 0000 R)
0:Sink open-drain output 1:C-MOS output ***/
io_field __io(0x0005) P5DR; // R/W P5 Port output latch
// ===================== // P5
#define OP5 P5DR.io_byte // I/O,LCD SEG管脚
#define OP50 P5DR.io_bit.bit0 // P50,SEG23
#define OP51 P5DR.io_bit.bit1 // P51,SEG22
#define OP52 P5DR.io_bit.bit2 // P52,SEG21
#define OP53 P5DR.io_bit.bit3 // P53,SEG20
#define OP54 P5DR.io_bit.bit4 // P54,SEG19
#define OP55 P5DR.io_bit.bit5 // P55,SEG18
#define OP56 P5DR.io_bit.bit6 // P56,SEG17
#define OP57 P5DR.io_bit.bit7 // P57,SEG16
io_field __io(0x0006) P6DR; // R/W P6 Port output latch
// ===================== // P6
#define P6 P6DR.io_byte // I/O,A/D输入,外部中断输入,计时/计数输入,STOP模式唤醒信号输入
#define P60 P6DR.io_bit.bit0 // P60,AIN0
#define P61 P6DR.io_bit.bit1 // P61,AIN1,ECIN
#define P62 P6DR.io_bit.bit2 // P62,AIN2,ECNT
#define P63 P6DR.io_bit.bit3 // P63,AIN3,INT0
#define P64 P6DR.io_bit.bit4 // P64,AIN4,STOP2
#define P65 P6DR.io_bit.bit5 // P65,AIN5,STOP3
#define P66 P6DR.io_bit.bit6 // P66,AIN6,STOP4
#define P67 P6DR.io_bit.bit7 // P67,AIN7,STOP5
io_field __io(0x0007) P7DR; // R/W P7 Port output latch
// ===================== // P7
#define OP7 P7DR.io_byte // I/O,LCD SEG管脚
#define OP70 P7DR.io_bit.bit0 // P70,SEG15
#define OP71 P7DR.io_bit.bit1 // P71,SEG14
#define OP72 P7DR.io_bit.bit2 // P72,SEG13
#define OP73 P7DR.io_bit.bit3 // P73,SEG12
#define OP74 P7DR.io_bit.bit4 // P74,SEG11
#define OP75 P7DR.io_bit.bit5 // P75,SEG10
#define OP76 P7DR.io_bit.bit6 // P76,SEG9
#define OP77 P7DR.io_bit.bit7 // P77,SEG8
io_field __io(0x0008) P1PRD; // R P1 Terminal input
// ===================== // P1
#define IP1 P1PRD.io_byte // 可用作:I/O,外部中断输入,SIO输入/输出,UART输入/输出,LCD SEG管脚
#define IP10 P1PRD.io_bit.bit0 // P10,SEG31
#define IP11 P1PRD.io_bit.bit1 // P11,SEG30
#define IP12 P1PRD.io_bit.bit2 // P12,SEG29,INT1
#define IP13 P1PRD.io_bit.bit3 // P13,SEG28,INT2
#define IP14 P1PRD.io_bit.bit4 // P14,SEG27,INT3
#define IP15 P1PRD.io_bit.bit5 // P15,SEG26,RXD,SI
#define IP16 P1PRD.io_bit.bit6 // P16,SEG25,TXD,SO
#define IP17 P1PRD.io_bit.bit7 // P17,SEG24,/SCK
io_field __io(0x0009) P2PRD; // R P2 Terminal input
// ===================== // P2
#define IP2 P2PRD.io_byte // I/O,低频晶振,外部中断输入,STOP模式唤醒信号输入
#define IP20 P2PRD.io_bit.bit0 // P20,/STOP,/INT5
#define IP21 P2PRD.io_bit.bit1 // P21,XTIN
#define IP22 P2PRD.io_bit.bit2 // P22,XTOUT
io_field __io(0x000A) P3PRD; // R P3 Terminal input
// ===================== // P3
#define IP3 P3PRD.io_byte // I/O,计时/计数,I/O,分频输出
#define IP30 P3PRD.io_bit.bit0 // P30,/DVO
#define IP31 P3PRD.io_bit.bit1 // P31,/PWM3,/PDO3,TC3
#define IP32 P3PRD.io_bit.bit2 // P32,/PWM4,/PDO4,/PPG4,TC4
#define IP33 P3PRD.io_bit.bit3 // P33,/PWM6,/PDO6,/PPG6,TC6
io_field __io(0x000B) P5PRD; // R P5 Terminal input
// ===================== // P5
#define IP5 P5PRD.io_byte // I/O,LCD SEG管脚
#define IP50 P5PRD.io_bit.bit0 // P50,SEG23
#define IP51 P5PRD.io_bit.bit1 // P51,SEG22
#define IP52 P5PRD.io_bit.bit2 // P52,SEG21
#define IP53 P5PRD.io_bit.bit3 // P53,SEG20
#define IP54 P5PRD.io_bit.bit4 // P54,SEG19
#define IP55 P5PRD.io_bit.bit5 // P55,SEG18
#define IP56 P5PRD.io_bit.bit6 // P56,SEG17
#define IP57 P5PRD.io_bit.bit7 // P57,SEG16
io_field __io(0x000C) P6CR; // R/W P6 Port input/output control
/*** P6CR I/O Control for P6 (0x000C 初始为0000 0000 R/W) ***/
io_field __io(0x000D) P7PRD; // R P7 Terminal input
// ===================== // P7
#define IP7 P7DR.io_byte // I/O,LCD SEG管脚
#define IP70 P7DR.io_bit.bit0 // P70,SEG15
#define IP71 P7DR.io_bit.bit1 // P71,SEG14
#define IP72 P7DR.io_bit.bit2 // P72,SEG13
#define IP73 P7DR.io_bit.bit3 // P73,SEG12
#define IP74 P7DR.io_bit.bit4 // P74,SEG11
#define IP75 P7DR.io_bit.bit5 // P75,SEG10
#define IP76 P7DR.io_bit.bit6 // P76,SEG9
#define IP77 P7DR.io_bit.bit7 // P77,SEG8
/**** 关于管脚在前面已定义,这里管脚就不再需要定义 ****/
/*** 如果SFR需要定义的话,我想也一样的处理 ***/
/*** Format !!! Control Register (0x00xx 初始**** **** R/W)
7 6 5 4 3 2 1 0
| | | | | | | +-- :
| | | | | | +---- :
| | | | | +------ :
| | | | +-------- :
| | | +---------- :
| | +------------ :
| +-------------- :
+---------------- : ***/
unsigned char __io(0x000E) ADCCR1; // R/W AD control register 1
/*** ADCCR1 AD Converter Control Register 1 (0x000E 初始0001 0000 R/W)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -