?? serial.c
字號:
/*
extern char getbyte(void);//從接收緩沖區取一個byte,如不想等待則在調用前檢測inbufsign是否為1。
extern putbyte(char c);//放入一個字節到發送緩沖區
extern putstring(uchar *puts);//發送一個字符串到串口
extern puthex(uchar c);//發送一個字節的hex碼,分成兩個字節發。
extern bit inbufsign;
#define CR putstring("\r\n")//發送一個回車換行
extern void serial_init (void);
extern putint(uint n);
*/
//*************************************************************************
#include "W77E516.H"
#define uchar unsigned char
#define uint unsigned int
//#define ILEN 16 //32 //設置串口中斷接收緩沖區大小
//idata uchar inbuf[ILEN];
//data uchar idata *inlast=inbuf; //最后由中斷進入接收緩沖區的字節位置
//data uchar idata *getlast=inbuf; //最后取走的字節位置
//bit inbufsign; //接收緩沖區非空標志 有=1
//bit inbufful; //輸入緩沖區滿標志 滿=1
#define CR putstring("\r\n") //CR=回車換行
//*************************************
//從接收緩沖區取一個byte,如不想等待則在調用前檢測inbufsign是否為1。
uchar getbyte (void)
{
while(!RI)P34=~P34;
P34=~P34;
RI=0;
return (SBUF); //取回數據
}
//**********************************
//放入一個字節到發送緩沖區
putbyte(unsigned char c)
{
SBUF=c;
while(!TI)P34=~P34;
P34=~P34;
TI=0;
}
//***************************************
//發送一個定義在程序存儲區的字符串到串口
putstring(uchar *puts)
{
for(;*puts!=0;puts++) //遇到停止符0結束
putbyte(*puts);
}
//*******************************************
uchar reputstring(uchar *puts)
{
uchar i;
i=0;
do{
for(;*(puts+i)!=0;i++) //遇到停止符0結束
putbyte(*(puts+i));
i=0;
}while(!RI);
RI=0;
return SBUF;
}
//*************************************
//發送一個字節的hex碼,分成兩個字節發。
uchar code hex_[]={"0123456789ABCDEF"};
puthex(unsigned char c)
{
int ch;
ch=(c>>4)&0x0f;
putbyte(hex_[ch]);
ch=c&0x0f;
putbyte(hex_[ch]);
}
//*****************************
//串口初始化 0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200 110592
void serial_init (void)
{
//用t1作波特
TR1 = 0;
SCON0 = 0x50; // mode 1: 8-bit UART, enable receiver
TMOD |= 0x21; // timer 1 mode 2: 8-Bit reload th0 1X16
PCON |= 0x80;
TH1 = 0xfa;//fd, //baud*2 /* reload value 19200 baud
TR1 = 1; // timer 1 run
// 0xf9=19200 0xf3=9600 0xe6=4800 0xcc=2400
/* //用t2作波特率
T2CON=0x30;
RCAP2H=0xFF;
RCAP2L=0xb8;//70=4800,b8=9600,dc=19200,ee=38400,f4=57600,fa=115200
TR2=1;ET2=1;
SCON0=0x50;//SCON0=0xd0;
*/
//ES = 1;
REN=1;
//EA=1;
SM2=1; //SM2=1時收到的第9位為1才置位RI標志
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -