求单片机C程序,实现功能:串口调试软件发送一个字符,接收区显示该字符

求单片机C程序,实现功能:串口调试软件发送一个字符,接收区显示该字符
由以下子程序及一个主程序完成该功能
void init();//串口初始化
void send(unsigned char ch);//向串口发送一个字符
void receive() interrupt 4;//从串口接收一个字符
void main(){}//调用子函数完成该功能
阁下需要做的是完善上面声明的各函数的功能,这句话的意思应该很明了了(AT89S52,11.0592M晶振)

试试下面的行不行,希望能帮到你,你用的是51单片机吧?
void init() //串口初始化
{
TMOD=0x20;//设置定时器1为工作方式2,8位自己重装用于产生波特率
TH1=0xfd; //波特率9600
TL1=0xfd;
TR1=1; //起动时器1
REN=1; //允许串口接收
SM0=0; //串口工作于方式1 8位
SM1=1;
ES=1; //开串口中断
EA=1; //开总中断
}

void send(unsigned char ch) //向串口发送一个字符
{
RI=0; //清除串口接收中断标志
SBUF=ch; //ch是待发送的数据
while(!TI); //等待发送完成
TI=0; //清除发送标志
}
void main()//调用子函数完成该功能
{
init();
send(unsigned char ch);

}

void receive() interrupt 4//从串口接收一个字符
{
//int a=0;
RI=0;//清零为下次中断做准备 否则得一次次复位
a=SBUF;//a是你收到的数据,等号右边的SBUF为接收缓冲器
flag=1;
}追问

又改了一下,不过返回的是乱码,而且如果只发一个字符就没有返回

追答

乱码是因为进制的缘故吧,改成16进制接收试试

追问

不是。。。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-27
"; //发送的字符串 uchar *Send=&Table; //----// // Init //-您好: 我看了你的程序,首先,你只开了总中断,没有开放串口中断,应该在追问

阁下需要做的是完善上面声明的各函数的功能,这句话的意思应该很明了了

相似回答