我只有51单片机,是单个串口的,这里实现串口的接收,并在P1口通过LED显示
串口调试软件,接收和发送都选择16进制,发送数据:00~FF
单片机接收后,直接将值赋给P1口显示状态
#include
#include
unsigned char ch;
bit read_flag= 0 ;
void init_serialcom( void )//设置串口通信的波特率
{
SCON = 0x40 ;
//SCON: serail mode 1, 8-bit UART, enable ucvr
//UART为模式1,8位数据,允许接收
TMOD |= 0x20 ;
//TMOD: timer 1, mode 2, 8-bit reload
//定时器1为模式2,8位自动重装
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xFF ; //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 ; //就置位取数标志
用灯显示就是 LED=SBUF;//led是灯对应的口 P1 P0 都可以 如果不行求个反
}
}
main()
{
init_serialcom(); //初始化串口
while ( 1 )
{
if (read_flag) //如果取数标志已置位,就将读到的数从串口发出
{
read_flag= 0 ; //取数标志清0
send_char_com(ch);// 这一段写你需要传送的数据
}
}
}
不要再追问了 这些就够了 学习一下
自己写吧
这个要求仿真吗?