死太惨公司提供了的头文件几乎2K,里面1.6K全是广告。而且因为定义不符合SDCC标准导致无法在SDCC下面通过编译。我这一次极度压缩了,900B达成!
/* * FILE:STC89C5X.H * 此文件为STC89系列适用头文件 * Written By WanZhiYuan= */ #ifndef STC89C5X_H #define STC89C5X_H #include <at89x52.h> //STC兼容AT芯片 __sfr __at 0xE8 P4 ; __sbit __at 0xE8 P4_0 ; __sbit __at 0xE9 P4_1 ; __sbit __at 0xEA P4_2 ; __sbit __at 0xEB P4_3 ; __sbit __at 0xEC P4_4 ; __sbit __at 0xED P4_5 ; __sbit __at 0xEE P4_6 ; __sfr __at 0xE7 IAP_CONTR ; //注意和STC12系列不同 __sfr __at 0xE1 WDT_CONTR ; __sfr __at 0x8E AUXR ; __sfr __at 0xC0 XICON ; __sfr __at 0xE2 ISP_DATA ; __sfr __at 0xE3 ISP_ADDH ; __sfr __at 0xE4 ISP_ADDL ; __sfr __at 0xE5 ISP_CMD ; __sfr __at 0xE6 ISP_TRIG ; __sfr __at 0xA2 AUXR1 ; #define INT_0 0x0003 #define INT_T0 0x000B #define INT_1 0x0013 #define INT_T1 0x001B #define INT_UART 0x0023 #define INT_T2 0x002B #define INT_2 0x0033 #define INT_3 0x003B #include <stc_macro.h> #endif
顺便放一个 stc_macro.h ,这个里面定义了一些常用操作。只要记住助记符就OK啦~
/* * FILE STC_MACRO.H * STC方便使用宏 * Written by 万致远@rwzy.co.cc */ #ifndef STC_MACRO_H #define STC_MACRO_H 1 #define RESET IAP_CONTR=IAP_CONTR | 0x20 //SWRST=1,按下RESET #define SEL_AP IAP_CONTR=IAP_CONTR & 0xBF //SWBS=0,选择AP区 #define SEL_ISP IAP_CONTR=IAP_CONTR | 0x40 //SWBS=1,选择ISP区 #define RS_DOWN IAP_CONTR=0x60 //SWRST=1,SWBS=1,直接重启进ISP区 #define RS_AP IAP_CONTR=0x20 //SWRST=1,SWBS=0,直接重启进AP #define START_WDT WDT_CONTR=0x20 //启动WDT #define CLR_WDT WDT_CONTR=WDT_CONTR | 0x10 //喂狗 #define W_START_IDLE WDT_CONTR=WDT_CONTR | 0x08 //看门狗在空闲模式计数 #define W_STOP_IDLE WDT_CONTR=WDT_CONTR | 0xF7 //看门狗不在空闲模式计数 #define Set_WFre(x) WDT_CONTR=WDT_CONTR | (x & 0x08) //设置看门狗分频率 //看门狗溢出时间=( 12 x Pre-scale x 32768) / Oscillator frequency #endif
以及数据定义type-def.h
/* * FILE:type-def.h * Write by 万致远@rwzy.co.cc */ #ifndef TYPE_DEF_H #define TYPE_DEF_H typedef unsigned int UINT; typedef unsigned long ULONG; typedef unsigned char BYTE; typedef __bit BOOL; #define TRUE 1 #define FALSE 0 #define _nop_() __asm NOP __endasm #endif