基于MAX232C的89S52串口示例程序

MCU Add comments

串口没什么好说的,加了MAX232C的51串口控制起来就像几个LED灯一样简单。
下面的代码是最基础的串口通信程序。发送时使用堵塞,接收则通过中断进行。
这个示例的功能是把4800波特率下指定COM口接收到的单字节重新发回主控机,稍为修改就可用于传送多字节和自定义协议。

#include 
 
#define uchar unsigned char
 
//初始化定时器
void initSerial(void){
	SCON = 0x50; //模式1 可读REN
	TMOD = 0x20; //定时器1 模式2
	PCON = 0x80; //SMOD = 1
	TH1 = 0xF4; //波特率 4800  fosc=11.0592MHz
	IE = 0x90; //开启串口中断
	TR1 = 0x01; //打开定时器1
}
 
//传送一个字节
void sendByte(uchar send_data){
	SBUF = send_data;
	while(TI==0);  //发送没必要中断 堵塞等待
	TI=0; //软清零 取消中断
}
 
//接收中断
void receive() interrupt 4 using 3{
	if(RI){	  //接受到停止中断
		uchar receive_data;
		RI = 0; //中断中软清零
		receive_data = SBUF;
		sendByte(receive_data); //将接收到的代码发回对方
	}
 
}
 
void main(){
	initSerial();
	while(1){;}
}

Leave a Reply

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS 登录