📄 print.c
字号:
/****************************************************************
* print Lite for 51 (#fal)
* printf51简化版(编译后代码体积小)
void print_init(void); //串口初始化
void print_Str(const char*p); //串口输出字符串
void print_Char(unsigned char c); //串口输出单个字符
void print_Dec(unsigned char n,unsigned char flag); //n:需要转换的数 flag:是否加回车
void print_Hex(unsigned char n,unsigned char flag); //串口输出16进数
* 占用串行口中断
* http://www.newmsg.com/bbs
****************************************************************/
#include "print.h"
#include "nRF905\nRF905.h"
#ifdef PRINT_USE
char *pUART; //字符串指针
unsigned char uRxUART;
void UART_INT(void) interrupt 4
{
if (RI)
{ //无线串口代码
uRxUART = SBUF;
TxRxBuf[0] = 0x01;
TxRxBuf[1] = uRxUART;
SetTxMode();
TxPacket();
SetRxMode();
P0=P0>>1;
if (P0==0x00) P0=0xff;
SBUF = uRxUART;
uRxUART = '\0';
pUART=&uRxUART;
RI = 0;
}
else //TI
{
TI=0; //发送中断标志位(SCON)
if (*pUART != '\0')
{
SBUF = *pUART;
pUART++;
}
else pUART=0; //不会启动下一次发送
}
}
void print_Str(const char*p)
{
pUART=p;
TI=1;
while (pUART!=0); //遇到 '\0',输出完毕
}
#ifdef PRINT_CHAR
void print_Char(unsigned char c)
{
SBUF = c;
c = '\0';
pUART=&c;
while (pUART!=0);
}
#endif
#define DEC_MAX 6
#ifdef PRINT_DEC
void print_Dec(unsigned char n,unsigned char flag) //n:需要转换的数 flag:回车标志符
{
unsigned char c[DEC_MAX+1];
unsigned char i;
c[DEC_MAX] = '\0';
i=DEC_MAX-1;
do
{
c[i]=n%10+48;
i--;
n=n/10;
}while (n!=0);
print_Str(c+i+1);
print_Str(" ");
if (flag!=0) print_Str("\n\r");
}
#endif
#ifdef PRINT_HEX
void print_Hex(unsigned char n,unsigned char flag)
{
unsigned char c[DEC_MAX+1];
unsigned char i;
c[DEC_MAX] = '\0';
i=DEC_MAX-1;
do
{
c[i]= (n&0x0f) >9? (n&0x0f)+87 : (n&0x0f)+48;
i--;
n=n>>4;
}while(n!=0);
if (i==DEC_MAX-2)
{
c[i]='0';
i--;
}
c[i]='x';
c[i-1]='0';
print_Str(c+i-1);
print_Str(" ");
if (flag!=0) print_Str("\n\r");
}
#endif
//<--串口初始化-->
void print_init(void)
{
SCON = 0x40; //串行口控制寄存器SCON 工作方式1: 10位UART 以定时器T1作为波特率发生器
TMOD = 0x21; //定时/计数控制器 T1:自动重装 T0:16位定时器
TH1 = 0xfd; //波特率9600
TL1 = 0xfd;
ET1 = 0; //T1 中断禁用
ES = 1; //串行中断允许
EA = 1; //所有中断允许
PS = 1; //串口中断高优先
REN = 1;
TR1 = 1; //T1启动
}
#endif //PRINT_USE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -