OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4794|回复: 2

C8051F020串口接不到数据,就一点点意思,请解释一下下

[复制链接]

4

主题

14

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-10-2
在线时间
4 小时
发表于 2018-10-3 11:53:05 | 显示全部楼层 |阅读模式
1金钱
我产品上的程序,一直收不到数据,我从网上随便下了几个例程,也是不行,请问大家是为什么?我用的是串口助手,可以发送数据,就是接收进不了中断。例程如下。#include "c8051f020.h"
  unsigned char data1;
void SYSCLK_Init();
void PORT_Init();
void UART0_Init();
void SYSCLK_Init()
{   
    unsigned int i;
    OSCXCN=0X67;         //0X67=0110,0111
for(i=0;i<256;i++);         //等待>1ms
while(!(OSCXCN&0X80));      //等待XTLVLD变为1
OSCICN=0X88;         //时钟失效监测器,选择外部时钟源作为系统时钟
}

void PORT_Init()
{
    XBR0 = 0x27;/*交叉开关配置,URAT总线TX0置到P0.0口,RX0置到P0.1口, SPI总线SCK配置到P0.2口,
             MOSI为P0.4口, NSS为P0.5,MISO配置到P0.3口,IIC总线SDA置到P0.6口?SCK置到P0.7 TX1,RX1配置到P1.0,P1.1,    CEX0,CEX1,配置到P1.2,P1.3,外部中断int0配置到P1.4 */
    XBR1 = 0x04;  
XBR2 = 0x44;   /*允许功能选择开关有效*/
    P0MDOUT = 0x1A;/*SCK、MOSI和NSS为推拉式输出,MISO为开漏式.*/
P74OUT   =0xff;

}

void UART0_Init()
{
    SCON0=0x50;            //串口方式1
    TMOD=0X20;             //选用定时器1作为波特率发生器
TH1=0xF4;              //波特率为4800
TL1=0xF4;
ES0=1;               //开启串口中断0
TF1=0;
TR1=1;               //定时器启动
    PCON=0X80; //波特率加倍 波特率为9600
    TI0=1;  
}

void UART0_ISR() interrupt 4 using 1
{


    if(RI0)
{
    RI0=0;//中断接收标志清零
       data1=SBUF0;//接收数据

    SBUF0=data1;//发送数据

       while(TI0==0);
       TI0=0;//发送标志清零
}

}





main()
{   
    WDTCN=0XDE;
WDTCN=0XAD;
SYSCLK_Init();
PORT_Init();
UART0_Init();
    EA=1;


while(1)

   {

           SBUF0=0X32;//发送数据

       while(TI0==0);
       TI0=0;//发送标志清零

    }


}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

120

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
356
金钱
356
注册时间
2017-1-19
在线时间
112 小时
发表于 2018-10-4 17:30:59 | 显示全部楼层
1,检查串口初始化是否正确
2,检查波特率是否一致
3,检查TX和RX是否连接正确
4,检查发送和接收代码是否正确
5,以上都不行,那么检查硬件是否有问题,是不是线什么的有问题
6,一般来说,使用例程的话,代码应该都没问题,主要检查寄存器是否一样,是不是同一款芯片,是否需要移植性改动
回复

使用道具 举报

4

主题

14

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2018-10-2
在线时间
4 小时
 楼主| 发表于 2018-10-4 21:14:32 | 显示全部楼层
一群猪 发表于 2018-10-4 17:30
1,检查串口初始化是否正确
2,检查波特率是否一致
3,检查TX和RX是否连接正确

以上应该都没问题,每个片子都是这样的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 16:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表