|
//.c文件
static void (*INIT)(void)=NULL;
static void (*PUTC)(const uint8_t)=NULL;
//static uint8_t (*GETC)(void)=NULL;
static void IO_init(void)
{
INIT();
}
static void IO_putc(const uint8_t ch)
{
PUTC(ch);
}
static void IO_puts(const uint8_t *str)
{
while(*str)
{
PUTC(*str++);
}
}
static uint32_t Ex(uint8_t N)
{
uint32_t Num=1;
if(N==0)
return 1;
while(N)
{
Num*=10;
N--;
}
return Num;
}
static void IO_putn(const uint32_t Num)
{
uint32_t temp=Num;
uint8_t Length=0,cnt;
if(Num==0)
{
PUTC('0');
return ;
}
while(temp)
{
temp/=10;
Length++;
}
temp=Num;
for(cnt=0;cnt<Length;cnt++)
{
PUTC('0'+temp/Ex(Length-cnt-1));
temp%=Ex(Length-cnt-1);
}
}
void IO_InitFun(void (*Init)(void),void (*Putc)(uint8_t),pIOStruct pIO)
{
INIT=Init;
PUTC=Putc;
pIO->Init=IO_init;
pIO->SendChar=IO_putc;
pIO->SendString=IO_puts;
pIO->SendNum=IO_putn;
}
//.h文件
#define NULL (void*)0
typedef struct
{
void (*Init)(void);
void (*SendChar)(const uint8_t);
void (*SendString)(const uint8_t *);
void (*SendNum)(const uint32_t Num);
}IOStruct,*pIOStruct;
void IO_InitFun(void (*Init)(void),void (*Putc)(uint8_t),pIOStruct pIO);
|
|