作业2:甲乙两机进行双机通信。要求:甲机Pl口开关的状态通过串行口发送到乙机, 乙机接收到后,通过P2口的发光二极管显示:乙机PI口开关的状态通过串行口发送到甲机, 甲机接收到后,通过P2口的发光二极管显示。 甲、乙两机都选择方式1—8位异步通信方式,波特率为1200bit/s,甲、乙两机既发送又接收 ,因此甲、乙两机的串口控制字为50H。 由于选择的是方式1, 波特率由定时/计数器Tl的溢出率和电源控制寄存器PCON中的SMOD位决定, 则需对定时/计数器T1初始化。 设 SMOD=0,甲、乙两机的振荡频率为12MHz, 由于波特率为1200bit/s.定时/计数器Tl选择为方式2,则初值为: 初值=256 - fogr ×2SMOD/ (12×波特率×32) =256-12000000/(12×1200×32)~230-E6H根据要求定时/计数器T1的方式控制字为20H。 请根据题意,写出串行口初始化程序。
时间: 2024-02-13 13:02:45 浏览: 67
以下是针对甲、乙两机串行口的初始化程序:
甲机串行口初始化程序:
```
MOV PCON, #00H ; 设置SMOD=0
MOV SCON, #50H ; 设置串行口为8位异步通信,波特率为1200
MOV TMOD, #20H ; 设置定时/计数器T1为方式2
MOV TH1, #0E6H ; 设置定时/计数器T1初值为230
SETB TR1 ; 启动定时/计数器T1
```
乙机串行口初始化程序:
```
MOV PCON, #00H ; 设置SMOD=0
MOV SCON, #50H ; 设置串行口为8位异步通信,波特率为1200
MOV TMOD, #20H ; 设置定时/计数器T1为方式2
MOV TH1, #0E6H ; 设置定时/计数器T1初值为230
SETB TR1 ; 启动定时/计数器T1
```
初始化程序中,先设置SMOD为0,然后设置串行口为8位异步通信,波特率为1200,接着设置定时/计数器T1为方式2,再设置定时/计数器T1初值为230,最后启动定时/计数器T1。这样就完成了甲、乙两机串行口的初始化。
阅读全文
相关推荐















