51单片机串口通讯写一个字符

发布网友 发布时间:2022-04-24 09:06

我来回答

4个回答

热心网友 时间:2022-06-18 09:21

51单片机串口通讯写一个字符。
你主程序这么写,发送一个字符后,单片机并不停止。应该加一行无限循环语句,
while(1);才能停,如下

热心网友 时间:2022-06-18 09:21

#include <reg51.h>
#include <string.h>
unsigned char ch;

bit read_flag= 0 ;

void init_serialcom( void ) //串口通信初始设定

{

SCON = 0x50 ; //UART为模式1,8位数据,允许接收

TMOD |= 0x20 ; //定时器1为模式2,8位自动重装

PCON |= 0x80 ; //SMOD=1;

TH1 = 0xFD ; //Baud:19200 fosc="11".0592MHz

IE |= 0x90 ; //Enable Serial Interrupt

TR1 = 1 ; // timer 1 run

TI=1;

}

//向串口发送一个字符

void send_char_com( unsigned char ch)

{

SBUF=ch;

while (TI== 0);

TI= 0 ;

}

//串口接收中断函数

void serial () interrupt 4 using 3

{

if (RI)

{

RI = 0 ;

ch=SBUF;

read_flag= 1 ; //就置位取数标志

}

}

main()

{

init_serialcom(); //初始化串口

while ( 1 )

{

if (read_flag) //如果取数标志已置位,就将读到的数从串口发出

{

read_flag= 0 ; //取数标志清0

send_char_com(ch);

}

}

}

热心网友 时间:2022-06-18 09:22

程序没有停止,执行一次后会自动从头开始
在程序末尾加while(1);即可

热心网友 时间:2022-06-18 09:22

主函数在 ZF(‘2’);后要加一条语句:
while(1);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com