英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
232
[打印本页]
作者:
winnie
时间:
2009-3-21 14:08
标题:
232
RS232
通信方式是常用的单片机与
PC
通信的方式,
PIC16F87X
系列芯片可以通过
SCI
(串行通信接口)来实现与
PC
的通信。以下我们将通过
ICDDEMO
演示实验板上的
RS232
通信电路来调试与
PC
的通信,其电路如下图所示:
其中
TX
和
RX
分别为
PIC16F877
的发送和接收引脚,由于
PC
的串口输出的是
12V
电压,因此要实现
PIC
芯片和
PC
的通信,还需要进行电平转换,该板使用的电平转换芯片是
MAX232
。在调试之前请将
PC
与
ICDDEMO
演示实验板用
9
芯串行电缆连接好并锁紧,并且将
DIP6
(
S10
)的第
2
、
4
开关拨至“
ON
”的位置上。调试时
PC
用的上位机程序可以采用
WINDOWS
带的超级终端(启动方式:开始
-
)程序
-
)附件
-
)通讯
-
)超级终端),或者使用网上很容易找到的串口调试软件。
1、
串行通信的波特率设置:
要启动串口通讯首先要选择合适的波特率,
PIC
的
SCI
接口有一个
8
位的波特率发生器,它根据
SPBRG
寄存器的值来决定周期;另外在异步通信的方式下波特率还和
BRGH
位的状态有关,当
BRGH=1
时是高速方式。
异步方式下波特率的计算公式为:波特率
=Fosc/[64(X+1)](
低速方式
)
或波特率
=Fosc/[16(X+1)](
高速方式
)
。其中
Fosc
是芯片振荡频率,
X
是
SPBRG
寄存器的值。通过这个公式我们可以计算出在特定波特率下,需要写入
SPBRG
寄存器的初始值。例如如果我们采取高速的方式使用
9600
的波特率,那么当芯片振荡频率是
4MHz
时,
SPBRG=4000000/
(
9600*16
)
-1=25
(实际是
25.042
,取最接近的整数值)。
2、
异步方式下的数据发送:
异步发送时,如果
TSR
和
TXREG
都为空,那么当数据写入
TXREG
之后会马上被转移到
TSR
寄存器。这时
TXREG
为空,
TXIF=1
,表明可以再往
TXREG
中写数据。注意此时发送并未完成,如果要知道数据是否发送完成则需要查询
TRMT
位。
3、
异步方式下数据的接收:
异步接收时,当接收到停止位时如果
RCREG
是空的,
RSR
就会将数据转移至
RCREG
,传送完成后,置
RCIF
为
1
。
RCIF
是只读位,当
RCREG
的数据被读出后将由硬件清
0
。
RCREG
寄存器实际上是
2
级的
FIFO
(先进先出)存储器,如果
RSR
中接收到了第
3
个数据的停止位,而
RCREG
寄存器
2
级都是满的,那么将会导致数据溢出,硬件将置
OERR
为
1
。请注意必须清除
OERR
位之后才能重新接收数据,用户可以通过对
CREN
清
0
的方式来清除
OERR
位。
4、
异步通信的数据格式:
在异步工作方式下,串行通信接口采用的是标准不归零(
NRZ
)格式,即
1
位起始位、
8
位或
9
位的数据位和
1
位停止位。最常用的是
8
位数据的格式。
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2