/*******************************************************************************
* 標題: RS232串口通信試驗(發(fā)送) *
* 1.通過本例程了解串口的基本原理及使用 ,理解并掌握對串口進行初始化
2.請使用串口調(diào)試助手(Baud 4800、數(shù)據(jù)位8、停止位1、效驗位無)做為上位機來接收單片機串口所發(fā)的信息。
觀察串口調(diào)試助手接收窗口
*
* 請學員認真消化本例程,學會用C語言操作串口 *
********************************************************************************/
#include <REG52.H>
#include <stdio.h>
void delay(unsigned int i); //函數(shù)聲明
char code MESSAGE[]= "普中科技助您學習RS232 ,請使用串口調(diào)試助手: ";
unsigned char a;
void main (void) {
SCON = 0x50; //REN=1允許串行接受狀態(tài),串口工作模式2
TMOD|= 0x20; //定時器工作方式2
PCON|= 0x80; //波特率提高一倍
// TH1 = 0xFD; //baud*2 /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗位無(11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、數(shù)據(jù)位8、停止位1。效驗位無 (12M)
TL1 = 0xF3;
TR1 = 1; //開啟定時器1
ES = 1; //開串口中斷
EA = 1; // 開總中斷
// IE = 0x0;
while(1)
{ a=0;
while(MESSAGE[a] != '\0')
{
SBUF = MESSAGE[a]; //SUBF接受/發(fā)送緩沖器(又叫串行通信特殊功能寄存器)
while(!TI); // 等特數(shù)據(jù)傳送 (TI發(fā)送中斷標志)
TI = 0; // 清除數(shù)據(jù)傳送標志
a++; // 下一個字符
}
delay(1000);
}
}
/**************************************************
延時處理程序
**************************************************/
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--) ;
}
|