?? 串口通信.txt
字號:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
/**************************************************************/
//串口測試程序,采用11.0592M晶振
//使用定時器1
//Write by CW
//要接收須置位EA=1
/**************************************************************/
//初值設定:
RCAP2H=0xFb; //波特率設定 :300
RCAP2L=0x80;
/***600*****
RCAP2H=0xFD; //波特率設定 :600
RCAP2L=0xC0;
***1200******/
/***************
RCAP2H=0xFE; //波特率設定 :1200
RCAP2L=0xE0;
*****************/
/****2400*****
RCAP2H=0xFF; //波特率設定 :2400
RCAP2L=0x70;
*****************/
/****4800******
RCAP2H=0xFF; //波特率設定 :4800
RCAP2L=0xB8;
*****************/
/****9600******
RCAP2H=0xFF; //波特率設定 :9600
RCAP2L=0xDC;
*****************/
/****19200******
RCAP2H=0xFF; //波特率設定 :19200
RCAP2L=0xEE;
*****************/
/****38400******
RCAP2H=0xFF; //波特率設定 :38400
RCAP2L=0xF7;
*****************/
/****57600******
RCAP2H=0xFF; //波特率設定 :57600
RCAP2L=0xFA;
*****************/
uchar data t0_count, t0_cntbuff, set_dotps, set_dotpsbefore, cnt_data;
bit bdata flag_ready, rx_ready;
uint temp;
/******************聲明*******************/
void initInt0(void);
void initTimer(void);
void initUart(void);
void txdata(uchar tt);
/****************************************/
void initUart(void) //串口初始化
{
TMOD|=0x20; //計數方式2
SCON=0x50; //8(10)位串口波特率方式1
TH1=0xfd; //波特率設定 :600
TL1=0xfd;
TR1=1; //開定時計數器1
}
void txdata(uchar tt) /*Uart發送一字節*/
{
ES=0; //禁止串口中斷
SBUF=tt; //發送接收緩沖器
while(!TI) ; //發送中斷標志位,只能由程序清零
TI=0;
ES=1;
}
void SCON_int (void) interrupt 4
{
ES=0;
if(RI) ////接收中斷標志位,只能由程序清零
{
RI=0;
txdata(0x55);
txdata(SBUF);
}
ES=1;
}
/*************************************************/
void main(void)
{
initUart();
txdata(0x12);
txdata(0x13);
txdata(0x14);
EA=1;
while(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -