1. 单片机中的串口通信—51单片机中串行t通信的波特率发生器由定时器1来产生—()
电脑发送USB信号
单片机发送TTL信号
1.1 单片机向电脑发送信息
单片机由P3.1 TxD 向电脑发送TTL电平信号,TTL信号经过CH340转化为USB信号发送到电脑上
1.2 电脑向单片机发送信息
电脑由P3.0 RxD 单片机发送USB电平信号,USB信号经过CH340转化为TTL信号发送到单片机上
1.3 单片机通过串口通信给电脑发送数据
#include <reg51.h>
#include <string.h>
void init_uart(void)
{
SCON &= ~(1 << 7); //工作方式选择
SCON |= ((1 << 6) | (1 << 4));//允许接收1 << 4
PCON |= (1 << 7); //波特率加倍
TMOD &= ~(1 << 4); //定时器1工作模式选择
TMOD |= (1 << 5);
TH1 = 204; //根据波特率计算的定时器初值(定时器的作用是产生需要发送数据的波特率)
TL1 = 204;
TCON |= (1 << 6); //打开定时器1
}
void send_char(char ch)
{
SBUF = ch;
while (0 == (SCON & (1 << 1)));//判断发送第八位数据是否结束
SCON &= ~(1 << 1); //手动复原发送中断请求标志
}
void send_buffer(unsigned char *s, unsigned int len)
{
unsigned int i = 0;
for (i = 0; i < len; i++)
{
send_char(s[i]);
}
}
void delay(unsigned int n)
{
while (n--);
}
int main(void)
{
const char *s = "hello world!";
init_uart();
while (1)
{
send_buffer(s, strlen(s));
delay(0xffff);
}
return 0;
}