关于单片机的问题,谢谢谢谢大家

 

已知MCS-51单片机晶振为11.0592M,波特率为9600bps,

SMOD=1;串行通信工作在串行方式1,

求(1)定时器1的初始值TH1=?

(2)编写串行通信工作于中断方式下的初始化程序。

(3)利用查询方式编写简单的串行通信得发送和接收程序。

 

参考GPT和自己的思路:

对于这个关于单片机的问题,下面是我的回答:

(1)根据波特率公式,波特率=晶振频率/(设定的定时器值*12),代入已知的参数9600=11.0592M/(TH1 * 12),解得TH1=90。

(2)中断方式下的串口通信初始化程序应包括以下内容:

  • 设置P3.0和P3.1为串行口输入和输出口。
  • 设置串行口工作方式为8位数据、无校验位、1位停止位。
  • 设置定时器1为工作模式2,并将TH1和TL1初始化为90。
  • 开启定时器1中断。
  • 开启总中断。

(3)查询方式下的串口通信发送程序应包括以下内容:

  • 将要发送的数据存储在SBUF寄存器中。
  • 等待T1中断发生,并将T1中断标志清零。
  • 将SBUF寄存器中的数据发送出去。

查询方式下的串口通信接收程序应包括以下内容:

  • 检测RI位(接收中断标志位)是否为1,如果为1则说明接收到了数据。
  • 将SBUF寄存器中的数据读取出来。
  • 清零RI标志位,准备接收下一个数据。