打印
[ZLG-MCU]

P89LPC952串口

[复制链接]
1996|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jishi79|  楼主 | 2011-4-1 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用ZLG的P89LPC952来编写串口程序,这个程序实现的功能:
将TX和RX直接连接起来,然后串口发送0xaa,如果接受到的也是0xaa,那么P4.7上接的LED就灭掉,如果接收到的不是0xaa那么等就亮着。但是。。。。
但是,灯一直亮着。并且用示波器看,发送的并不是一串占空比50%,脉宽104μ的矩形波。而是,一串脉宽不均匀,并3个50μ的与一个104μ的交替出现。

求真相!!!在线等。。。。。


#include"reg952.h" //包含头文件
#define uchar unsigned char
uchar temp;
void IniPort();//端口初始化
void UART_Init();//串口初始化
void send_char_com(uchar ch) ;//发送函数
void main(void)//主函数
{
IniPort();
UART_Init();
send_char_com(0x00) ;
while (1)
{
  if(temp==0xAA) P4=0xff;//等于就灭
  else P4=0x7f;//不等就亮
  send_char_com(0xAA) ;
  
}
}

void IniPort()//端口初始化
{
P0M1=0x30;P0M2=0xcf;//p0.4p0.5仅为输入,用于ICP
P1M1=0x20;P1M2=0xdc;//p1.5仅为输入,用于ICP;P1.0,P1.1设置为准双向口
P2M1=0x00;P2M2=0xff;//0X00,0XFF是推挽输出
P3M1=0x00;P3M2=0xff;
P5M1=0X00;P5M2=0XFF;  
P4M1=0x00;P4M2=0xff;

}
void UART_Init()
{
//IniPort();
S0CON=0x50;//使能接收,选择串口模式1
BRGCON_0=0x00;//清零初始化
S0STAT=0xe0;//选择独立的Tx Rx
//S0STAT=0x00;
BRGR0_0=0xf0;//波特率9600  7.37MHz
BRGR1_0=0x02;
BRGCON_0=0x03;//是能BRG

ES=1;//使能串口接收中断
EST=1;//使能串口发送中断
EA=1;//使能总中断
}

void  rec(void)   interrupt 4
{
EA=0;
//while(!RI_0);
temp=S0BUF;
RI_0=0;

//S0BUF=temp;
//S0BUF=0xaa;
//while(!TI_0);
//TI_0=0;


EA=1;
}


//向串口发送一个字符  
void send_char_com(uchar ch)  
{
S0BUF=ch;
while(TI_0==0);  
TI_0=0;  
}

相关帖子

沙发
jishi79|  楼主 | 2011-4-1 11:24 | 只看该作者
自己顶先

使用特权

评论回复
板凳
jishi79|  楼主 | 2011-4-1 13:55 | 只看该作者
再顶,各位老大们,小弟先谢谢了啊

使用特权

评论回复
地板
amini| | 2011-4-2 11:21 | 只看该作者
:P

使用特权

评论回复
5
FVJFIFE| | 2011-4-2 22:06 | 只看该作者
你选的串口模式是不是自回环模式?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

11

帖子

0

粉丝