
单片机应用技术 串行接口 4串行口应用 、顾筠
串 行 接 口 单片机应用技术 4 串 行 口 应 用 顾 筠

串行接口 串行通信基础 串行口结构及功能 串行口工作方式 串行口应用
串行接口 1 串行通信基础 2 串行口结构及功能 串行口工作方式 串行口应用 3 4

4串行口应用 口串行口应用编程 >串行口初始化编程 >查询方式编程 >中断方式编程 >串行口综合应用
4 串行口应用 p串行口应用编程 Ø串行口初始化编程 Ø查询方式编程 Ø中断方式编程 Ø串行口综合应用

1.串行口初始化编程 >MCS-51单片机内部有一个全双工的异步串行接口,可 同时发送和接收数据。有4种工作方式,波特率可由软 件设置。接收、发送均可工作在查询方式或中断方式。 >串行口编程包括: ·初始化程序 ·发送子程序 ●接收子程序 ●或者:发送/接收中断服务程序
1. 串行口初始化编程 ØMCS-51单片机内部有一个全双工的异步串行接口,可 同时发送和接收数据。有4种工作方式,波特率可由软 件设置。接收、发送均可工作在查询方式或中断方式。 Ø串行口编程包括: l初始化程序 l发送子程序 l接收子程序 l或者:发送/接收中断服务程序

初始化编程 >初始化编程主要包括: (1)设定串行口的工作方式和控制(SCON)。 (2)设置波特率(定时器T1作为串行口的波特率发生器时, 初始化定时器T1)(TMOD、TCON、TH1、TL1)。 (3)如果串行口采用中断控制方式,则在初始化程序中应打 开总中断和串行口中断(E、P)。 >一般在主程序中安排串行口的初始化程序
初始化编程 Ø初始化编程主要包括: (1)设定串行口的工作方式和控制(SCON)。 (2)设置波特率(定时器T1作为串行口的波特率发生器时, 初始化定时器T1)(TMOD、TCON、TH1、TL1)。 (3)如果串行口采用中断控制方式,则在初始化程序中应打 开总中断和串行口中断(IE、IP)。 Ø一般在主程序中安排串行口的初始化程序

串行口中断入口与中断标志 若串行口采用中断控制方式,则应编写串行口发送或接 收中断服务程序。 >由于串行口的发送中断和接收中断是同一个中断入口,所 以在中断服务程序中首先应判断是发送中断(T=1)、还 是接收中断(RI=1)。 >由于在CPU响应串行口中断时并不清“O”TI和RI中断标 志,所以在中断服务程序中还应该用指令清除TI或RI
串行口中断入口与中断标志 若串行口采用中断控制方式,则应编写串行口发送或接 收中断服务程序。 Ø由于串行口的发送中断和接收中断是同一个中断入口,所 以在中断服务程序中首先应判断是发送中断(TI=1)、还 是接收中断(RI=1)。 Ø由于在CPU响应串行口中断时并不清“0”TI和RI中断标 志,所以在中断服务程序中还应该用指令清除TI或RI

复习:SCON格式 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H SCON SMOSM1 SM2 REN TB8 RB8 ti RI 工作方式选择 接收中断标志 00:方式0,同步移位 发送中断标志 01:方式1,8位UART 10:方式2,9位UART 接收数据第9位 11:方式3,9位UARI 发送数据第9位 0:禁止 接收控制 1:允许 多机通信 0:双机 串行▣控制寄存器SCON 1:多机
复习:SCON格式 工作方式选择 00:方式0,同步移位 01:方式1,8位UART 10:方式2,9位UART 11:方式3,9位UART 串行口控制寄存器SCON 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 接收中断标志 发送中断标志 接收数据第9位 发送数据第9位 接收控制 0:禁止 1:允许 多机通信 0:双机 1:多机

复习:串行口各方式的波特率 >方式0,2的波特率固定。方式1,3的波特率可变,相同。 ◆(SMOD=0或1,a:定时器T1计数初值,n:计数器位数) 方式0波特率=fosc/12 ① 2SMODxfosc 方式1波特率= ② 32x12×(2n-a) 方式2波特率=2sMOD×fosc/64 ③ 2SMODxfosc 方式3波特率= ④(与方式1相同) 32×12x(2n-a)
方式1波特率= 32×12× (2 n -a) 2 SMOD×fosc 复习:串行口各方式的波特率 Ø方式0,2的波特率固定。方式1,3的波特率可变,相同。 u(SMOD=0或1,a:定时器T1计数初值, n:计数器位数) 方式2波特率=2 SMOD×fosc/64 ③ 方式3波特率= 32×12× (2 n -a) 2 SMOD×fosc 方式0波特率=fosc/12 ① ④ (与方式1相同) ②

串口的波特率设置 >方式2波特率固定,只需设置$MOD位。 >方式1和3的波特率由T1的溢出率决定,所以对于方式1和 方式3,其波特率的设置需对定时器T1进行初始化编程。 ●定时器的工作方式一般设置为方式2,即8位自动重装载 方式。 ●定时器T1的初值根据所要求的波特率算出T1的溢出率即 可求得初值
串口的波特率设置 Ø方式2波特率固定,只需设置SMOD位。 Ø方式1和3的波特率由T1的溢出率决定,所以对于方式1和 方式3,其波特率的设置需对定时器T1进行初始化编程。 l定时器的工作方式一般设置为方式2,即8位自动重装载 方式。 l定时器T1的初值根据所要求的波特率算出T1的溢出率即 可求得初值

波特率计算 【例1】设fosc=12MHZ,串行口工作在方式1,定时器T1工 作方式2,波特率=2400bit/s,若SMOD=0,求计数初值a。 若SMOD=1呢? 【解】 2SMODxfosc 方式1波特率 32×12×(2n-a) ② 2400=(1×12×106)/[32×12×(28-a)] a=242.98≈243=F3H 若SMOD=1,则a230=E6H
波特率计算 【例1】设fosc=12MHZ,串行口工作在方式1,定时器T1工 作方式2,波特率=2400bit/s,若SMOD=0,求计数初值a。 若SMOD=1呢? 【解】 2400=(1×12×106)/[32×12×(28-a)] a=242.98≈243=F3H 若SMOD=1,则 a≈230=E6H 方式1波特率= 32×12× (2 n -a) 2 SMOD×fosc ②