P1口——纯粹的I/O
作用:
- P1口只能可以直接作为输入口或输出口使用
注意:P1口做输出口时,内部数据经过锁存器送到P1.0---P1.7上
- 由于内部有上拉电阻,所以P1口作输出口使用时,不用外接上拉电阻
P2口——带半AB功能的I/O
作用:
- 外扩芯片时,P2口不再做I/O口使用,而是传送高8位地址
- 没有外扩芯片时,P2口可以直接作为输入口或输出口使用
注意:P2口做输出口时,内部数据经过锁存器送到P2.0---P2.7上
- 由于内部有上拉电阻,所以P2口作输出口使用时,不用外接上拉电阻
P0口——带DB和半AB的I/O
作用:
- 外扩芯片时,P0口不再做I/O口使用,而是先传送地址,后传送数据
- 没有外扩芯片时,P0口可以直接作为输入口或输出口使用
注意: P0口做输出口时,内部数据经过锁存器送到P0.0---P0.7上。必须外接上拉电阻
P3口——多功能(CB、通信、计数和中断)I/O
作用:
- P3口可以直接作为输入口或输出口使用,与P1口用法一致
- P3口的引脚又具有第二功能
- P3.0(RXD)、 P3.1(TXD) 串口的收发信号
- P3.2(INT0)、3.3(INT1) 外中断中断请求输入线
- P3.4(T0)、P3.5(T1) 定时器的计数脉冲输入线
- P3.6(/WR)、P3.7(/RD) 外扩RAM或I/O接口芯片的读写控制信号
I/O小结
中断系统的控制与实现
中断响应时间
最少需要3个机器周期
中断服务程序
在中断服务程序入口地址单元放一条长转移指令LJMP,这样中断服务程序能灵活地安排在64KB程序存储器的任何地方
中断服务程序的最后一条指令必须是中断返回指令RETI
中断标志的清除
中断服务程序的一般格式
对内部定时器的控制
串行通讯基础
每帧数据由4部分组成:起始位(占1位)、数据位(占5~8位)、奇偶校验位(占1位,也可以没有校验位)、停止位(占1或2位)
根据串行通信数据传输的方向,可将串行通信系统传输方式分为:单工方式、半双工方式和全双工方式
- 3种方式中,全双工方式的效率最高
- 半双工方式配置和编程相对灵活,传输成本较低
- 串行通信设备常选用半双工方式
波特率
波特率(Baud rate)即调制速率,指的是信号被调制以后在单位时间内的变化,即单位时间内载波参数变化的次数。单位是:符号/s
比特率(Bit rate)单位时间内传输或处理的比特的数量,单位是:(bps或kbps)
- 当数据没有压缩、调制时,波特率等于比特率
如每秒传送240个字符,而每个字符格式包含10位这时的比特率为10位(bit)×240个/s =
2400 bit/s,也可认为波特率为2400 bit/s串行接口的工作方式的设置
发送和接收均为8位数据,低位在先高位在后。波特率固定为
- PCON的地址为97H,不能位寻址,需要字节传送
- 由SCON中的SM0、SM1设置4种工作方式
方式0
方式0输出
当执行一条写SBUF的指令(MOV SBUF,A)时,就启动了串行接口的发送
当数据的最高位D7位移出后,停止发送数据和移位脉冲,就完成了1字节的输出,并把中断标志(TI)置“1”。再次发送,须用软件先将TI清“0”
方式0输入
当SCON中的接收允许位REN=1和 RI=0时,就会启动一次串行接口接收过程
当接收完一帧数据后,由硬件将输入移位寄存器中的内容写入SBUF,并把中断标志(RI)置“1”
如要再接收数据,就再用软件将RI清“0”
方式1(重点掌握)
串行接口为波特率可变的8位数据的异步通信接口
传送1帧数据为10位,其中,1位起始位(0),8位数据位(低位在先),1位停止位(1)
方式1的波特率由定时器(T1)的溢出率和SMOD的状态决定
方式1输出
执行一条写SBUF的指令就启动了发送过程
1帧10位数据发送完后,将中断标志(TI)置“1”,向CPU申请中断
如要再发送下一字节数据,必须用软件先将TI清“0”
方式1输入
软件使REN=1和RI=0时,就启动了接收过程
当RI=0,且SM2=0(或接收到的停止位为“1”)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。如要再接收数据,就再用软件将RI清“0”
- 方式3与方式1 的区别只是帧格式不同
- 方式2的波特率固定为晶振频率的1/64或1/32,方式3波特率由定时器(T1)的溢出率和SMOD的状态决定
波特率的设计
串口初始化
串口发送
串口接收
网友评论