死太慘公司提供了的頭文件幾乎2K,里面1.6K全是廣告。而且因為定義不符合SDCC標(biāo)準(zhǔn)導(dǎo)致無法在SDCC下面通過編譯。我這一次極度壓縮了,900B達(dá)成!
/* * 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 萬致遠(yuǎn)@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區(qū) #define SEL_ISP IAP_CONTR=IAP_CONTR | 0x40 //SWBS=1,選擇ISP區(qū) #define RS_DOWN IAP_CONTR=0x60 //SWRST=1,SWBS=1,直接重啟進(jìn)ISP區(qū) #define RS_AP IAP_CONTR=0x20 //SWRST=1,SWBS=0,直接重啟進(jìn)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 //看門狗在空閑模式計數(shù) #define W_STOP_IDLE WDT_CONTR=WDT_CONTR | 0xF7 //看門狗不在空閑模式計數(shù) #define Set_WFre(x) WDT_CONTR=WDT_CONTR | (x & 0x08) //設(shè)置看門狗分頻率 //看門狗溢出時間=( 12 x Pre-scale x 32768) / Oscillator frequency #endif
以及數(shù)據(jù)定義type-def.h
/* * FILE:type-def.h * Write by 萬致遠(yuǎn)@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