ko/0511串口的问题--通信没有成功。【恢复】
我用UART0做串口,使用内部8M晶振。
内部晶振,初始化。
EXCLK=0;
OSCSEL=0;
EXCLKS=0;
OSCSELS=0;
AMPH=0; // 时钟操作模式选择寄存器.内部时钟,X1\X2做I/O口.时钟频率:10M以下.
PCC=0; // 处理器时钟控制寄存器. 时钟不分频,默认是2分频.
RCM=0x00; // 内部高速振荡稳定好,D7-RSTS =1;
LSRSTOP=0; // 内部低速振荡器
RSTOP=0; // 内部高速振荡器
MOC=80; // X1振荡器停止.禁止使用外部输入时钟.
MCM=0; // 主时钟模式寄存器,使用内部高速时钟.
OSTS=0x05; // 振荡稳定时间选择寄存器.
while(RSTS==0); // 等?内部启动完成.
void UART9600INI0(void)
{
ASIM0=0; //ReSet Must keep TXE0=0 RXE0=0
PM1.0=0; //P10/TxD0/SCK10 out data PIN
P1.0=1;
PM1.1=1; //when P11/RxD0/SI10 input data PIN
P1.1=0;
BRGC0=0xDA; //Buard contron DA--9600 8/32=500K 500K/2*26=9615 ERR 0.15%
ASIM0=0XFD; //
TXE0=1;
RXE0=1;
}
为什么发送数据,电脑上接收不到呢?
先不接电脑,用示波器看单片机串口输出的波特率是否正确! 涉及到的寄存器有:
1、异步串行接口操作模式寄存器0 (ASIM0)
2、异步串行接口接收错误状态寄存器0 (ASIS0)
3、波特率发生器控制寄存器0 (BRGC0)
4、端口模式寄存器1 (PM1)
5、端口寄存器1 (P1)
在UART 模式中设置操作的基本过程如下。
<1> 设置BRGC0寄存器
<2> 设置ASIM0的1~4位 (SL0、CL0、PS00和PS01)
<3> 将ASIM0的第7位(POWER0)置 1。
<4> 将ASIM0的第6位 (TXE0)置 1。 —>允许发送。
将ASIM0的第 5位(RXE0)置1。 -> 允许接收。
<5> 对TXS0 寄存器赋值。 ->开始发送数据。
寄存器设置细节请参照数据手册。并且注意波特率设置是否正确。
页:
[1]