/*******************************************************************************
* 标题: RS232串口通信试验(发送) *
* 1.通过本例程了解串口的基本原理及使用 ,理解并掌握对串口进行初始化
2.请使用串口调试助手(Baud 4800、数据位8、停止位1、效验位无)做为上位机来接收单片机串口所发的信息。
观察串口调试助手接收窗口
*
* 请学员认真消化本例程,学会用C语言操作串口 *
********************************************************************************/
#include <REG52.H>
#include <stdio.h>
void delay(unsigned int i); //函数声明
char code MESSAGE[]= "普中科技助您学习RS232 ,请使用串口调试助手: ";
unsigned char a;
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式2
TMOD|= 0x20; //定时器工作方式2
PCON|= 0x80; //波特率提高一倍
// TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无(11.0592)
TH1 = 0xF3; // //baud*2 /* 波特率4800、数据位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接受/发送缓冲器(又叫串行通信特殊功能寄存器)
while(!TI); // 等特数据传送 (TI发送中断标志)
TI = 0; // 清除数据传送标志
a++; // 下一个字符
}
delay(1000);
}
}
/**************************************************
延时处理程序
**************************************************/
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--) ;
}
|