[ZLG-MCU] P89LPC952串口

[复制链接]
2886|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 | 显示全部楼层
FVJFIFE 发表于 2011-4-2 22:06 | 显示全部楼层
你选的串口模式是不是自回环模式?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

11

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部