c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。 假设晶振为11.0592MHz,波特率为9600
1个回答
关注
展开全部
亲,您好。很高兴为您解答; 亲,要实现单片机向PC机不断发送0-9,利用串行口方式2并采用偶校验,可以按照以下步骤进行:1. 设置串行口2的波特率为9600。由于晶振频率为11.0592MHz,可以使用以下公式计算出波特率发生器的预分频器值: 波特率 = 晶振频率 / (分频器值 × 32) 分频器值 = 晶振频率 / (波特率 × 32) 在本例中,分频器值 = 11.0592MHz / (9600 × 32) ≈ 36.4583,选择最接近的整数值36作为分频器值。2. 设置串行口2的工作模式。根据需要发送的数据为0-9,并采用偶校验,可以设置为8位数据位,偶校验模式。3. 编写程序,循环发送0-9的数据。可以使用一个循环,每次发送一个数字,并在发送完毕后延迟一段时间。以下是C语言示例代码:```c#include #define BAUDRATE 9600void init_serial(){ SCON = 0x50; // 设置串行口2为8位数据位,偶校验模式 TMOD &= 0x0F; // 清零串行口2的计数器模式 TMOD |= 0x20; // 设置串行口2为定时器1的方式2 TH1 = 256 - BAUDRATE/32/36; // 设置波特率发生器的预分频器值 TL1 = TH1; // 初始化定时器1 TR1 = 1; // 启动定时器1}void serial_send(unsigned char data){ SBUF = data; // 将要发送的数据赋值给串行数据寄存器 while (!TI); // 等待数据发送完成 TI = 0; // 清除发送完成标志}void delay(){ unsigned int i, j; for (i = 0; i < 1000; i++) for (j = 0; j < 100; j++);}void main(){ unsigned char i;
咨询记录 · 回答于2023-07-09
假设晶振为11.0592MHz,波特率为9600
c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。
c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。
假设晶振为11.0592MHz,波特率为9600
c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。
那要是奇其他条件不变,变成奇校验呢
c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。
那怎么变呢
c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。
假设晶振为11.0592MHz,波特率为9600
c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。
假设晶振为11.0592MHz,波特率为9600
c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。
假设晶振为11.0592MHz,波特率为9600
c51程序欲实现单片机向PC机不断发送0-9,试利用串行口方式2实现,采用偶校验。