搜索

[技术问答] SC92F8003串口通信用p1.5和p1.6为什么不能收发

[复制链接]
197|2
 楼主 | 2020-5-11 16:47 | 显示全部楼层 |阅读模式
#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;
        }       
}

使用特权

评论回复
| 2020-5-11 19:08 | 显示全部楼层
您好,这一段UART的程序我们这边测试没有问题,可以正常收发,建议您检查一下硬件部分是否有问题。
fca2d9e3b70d0af49044f59a10ee8e5.png

使用特权

评论回复
| 2020-5-12 10:58 | 显示全部楼层
看程序我也没看出来有问题,你先用示波器看下串口数据到底发到板子上没有

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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