打印
[技术问答]

SC92F8003串口通信用p1.5和p1.6为什么不能收发

[复制链接]
813|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#include "H/Function_Init.H"

void Uart0_Init(uint Freq,unsigned long int baud);
bit UartSendFlag = 0; //发送中断标志位
bit UartReceiveFlag = 0; //接收中断标志位
unsigned char redata=0;
/*****************************************************
*函数名称:void Uart0_Test(void)
*函数功能:Uart0测试
*入口参数:void
*出口参数:void
*****************************************************/
void delay1s(void)   //误差 0us
{
    unsigned char a,b,c,n;
    for(c=234;c>0;c--)
        for(b=213;b>0;b--)
            for(a=159;a>0;a--);
    for(n=6;n>0;n--);
}

void Uart0_Test(void)
{
        Uart0_Init(16,9600);
        while(1)
        {
//                SBUF = 0X55;
                if(UartReceiveFlag )
                {
                SBUF = redata;
                while(!UartSendFlag);
                UartSendFlag = 0;
                UartReceiveFlag=0;
                }
        }
}
/*****************************************************
*函数名称:void Uart0_Init(uint Freq,unsigned long int baud)
*函数功能:Uart0中断初始化
*入口参数:Freq-主频,baud-波特率
*出口参数:void
*****************************************************/
void Uart0_Init(uint Freq,unsigned long int baud)    //选择Timer1作为波特率信号发生器
{

        P1CON &= 0x9f;   //TX/RX设置为输入带上拉
        P1PH  |= 0x60;
       
        SCON  |= 0X50;   //设置通信方式为模式一,允许接收
        TMCON |= 0X02;
        TMOD  |= 0X20;
        PCON  |= 0X80;        //SMOD=1
        TH1 = (Freq*1000000/baud)>>8;          //波特率为T1的溢出时间;
        TL1 = Freq*1000000/baud;
        TR1 = 0;
        ET1 = 0;
        EUART = 1;     //开启Uart0中断
        EA = 1;
}

/*****************************************************
*函数名称:void UartInt(void) interrupt 4
*函数功能:Uart0中断函数
*入口参数:void
*出口参数:void
*****************************************************/
void UartInt(void) interrupt 4
{
        if(TI)
        {       
               
                TI = 0;       
                UartSendFlag = 1;               
        }
        if(RI)
        {       
       
                RI = 0;       
                UartReceiveFlag = 1;
                redata = SBUF;
        }       
}

使用特权

评论回复

相关帖子

沙发
赛元MCU3| | 2020-5-11 19:08 | 只看该作者
您好,这一段UART的程序我们这边测试没有问题,可以正常收发,建议您检查一下硬件部分是否有问题。

fca2d9e3b70d0af49044f59a10ee8e5.png (36.58 KB )

fca2d9e3b70d0af49044f59a10ee8e5.png

使用特权

评论回复
板凳
taobaofarmer| | 2020-5-12 10:58 | 只看该作者
看程序我也没看出来有问题,你先用示波器看下串口数据到底发到板子上没有

使用特权

评论回复
地板
磨砂| | 2020-6-6 18:27 | 只看该作者
先查一下自己的硬件连接吧

使用特权

评论回复
5
晓伍| | 2020-6-6 18:28 | 只看该作者
有没有可能两根线接反了啊

使用特权

评论回复
6
八层楼| | 2020-6-6 18:28 | 只看该作者
波特率一致了吗

使用特权

评论回复
7
观海| | 2020-6-6 18:28 | 只看该作者
是否可靠接地了呢

使用特权

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

本版积分规则

1

主题

2

帖子

0

粉丝