STC8H1K28串口1发送信息到pc代码
时间: 2024-05-04 09:19:16 浏览: 94
串口发送数据到电脑C的源代码
5星 · 资源好评率100%
下面是STC8H1K28串口1发送信息到PC的代码示例:
```
#include <reg52.h>
// 定义波特率为9600
#define BAUDRATE 9600
// 定义串口发送函数
void send_data(char dat);
void main()
{
// 定义波特率计算公式的中间变量
unsigned int baud;
// P3.0为TXD1输出口
P3M0 = 0x01;
P3M1 = 0x00;
// 定时器1工作方式2,自动重装载
TMOD &= 0x0F;
TMOD |= 0x20;
// 定时器1的重载值
TH1 = TL1 = -(FOSC/12/16/BAUDRATE);
// 开启定时器1
TR1 = 1;
// 串口1工作方式1,允许接收
SCON = 0x50;
// 使能全局中断和串口中断
EA = 1;
ES = 1;
// 主循环
while(1)
{
// 发送一串字符
send_data('H');
send_data('e');
send_data('l');
send_data('l');
send_data('o');
send_data('\r');
send_data('\n');
// 延时
for(baud=0; baud<60000; baud++);
}
}
// 串口发送函数
void send_data(char dat)
{
// 等待发送寄存器为空
while(!TI);
// 把数据写入发送寄存器
SBUF = dat;
// 清除发送寄存器标志位
TI = 0;
}
// 串口中断处理函数
void serial_isr() interrupt 4
{
// 接收中断
if(RI)
{
// 清除接收标志位
RI = 0;
}
}
```
在上述代码中,我们首先定义了波特率为9600,并实现了一个名为send_data的函数,用于将字符发送到串口。然后,在主循环中,我们发送了一串字符,然后延时一段时间。在send_data函数中,我们等待发送寄存器为空,然后将数据写入发送寄存器,并清除发送寄存器标志位。最后,我们还实现了一个名为serial_isr的中断处理函数,用于处理串口接收中断。
阅读全文