澳门赌场超级vip待遇: [技术问答] 赛元7250M 的UART通信,官方能给个正确的DEMO程序吗

永利游戏开户直营
397|8
楼主
本帖最后由 tanik 于 2019-9-9 09:52 编辑

这个是赛元官方的DEMO程序,复制到keil,编译后烧录到7250M中,然后用串口助手进行收发,数据不正确
bit flag;
bit RI_FLAG=0;

void IOinit(void )
{        
        P1CON |=0X08;             //P13设置为输出        
        P1CON &=0XFB;             //P12设置为输入        
        P1PH  &=0XF7;           //P13上拉电阻关闭
        P1PH  |=0X04;           //P12上拉电阻打开
        P13=1;
        P12=1;
}

void init_uart_mode1(void)
{
   SCON=0X50;   //方式1,允许接收数据
   PCON |=0X80; //方式1
   T2CON=0x00;  //使用定时器1作UART时钟
   TMOD=0X20;   //定时器1  8位自动重载
   TMCON=0X02;  //定时器1  4分频
   TL1=217;               
   TH1=217;                //UART 波特率9600;
   TR1=0;
   ET1=1;
   TR1=1;
   EUART=1;
}

void timer1()interrupt 3                //Timer1向量号 3
{
}

unsigned char i;
void uart()interrupt 4
{        
        if(TI)
        {
                TI=0;                           //中断进来要把TI清0
        }
        if(RI)                                   //接收中断
        {
                RI=0;                           //中断进来要把RI清0        
                i=SBUF;                          //把SBUF 数据赋值给i        
                RI_FLAG=1;
                flag=1;                        //收完一帧数据时则进行发送
        }
}

void main()
{
//        WDTCON  = 0x10;                                //清看门狗,500ms溢出
        EA=1;                       //开总中断;
        IOinit();
        init_uart_mode1();
        P21PM;
        P26PM;
        P27PM;
    P1CON = 0XFF;
        led2 = 1;
        while(1)
        {
        WDTCON |= 0x10;                        //清看门狗               
                if(RI_FLAG)                            //接收中断
                {
                        RI_FLAG=0;
                        i=SBUF;                        //把SBUF 数据赋值给i               
                        flag=1;                        //收完一帧数据时则进行发送
                }        

                if(flag==1)
                {
                        EUART=0;                     //发送数据之前要把串口中断关掉
                        flag=0;                             //让接收下一数据时置1
                        SBUF=i;                      //把i数据发送到SBUF中
                        while(!TI);                    //等待发送完成
                        EUART=1;                     //打开中断进行下一个数据的接收
                }
        }
}
请问各位大佬,澳门赌场超级vip待遇:啥原因?

QQ图片2.png (35.74 KB, 下载次数: 0)

QQ图片2.png

QQ图片.png (35.65 KB, 下载次数: 0)

QQ图片.png
沙发
| 2019-9-6 17:37 | 只看该作者
TX、RX要设为输入带上拉
板凳
| 2019-9-6 17:51 | 只看该作者
另外程序中并没有分频
地板
 楼主 | 2019-9-6 17:52 | 只看该作者
赛元MCU3 发表于 2019-9-6 17:37
TX、RX要设为输入带上拉

设置为:P12IH; P13IH;?
5
 楼主 | 2019-9-6 17:59 | 只看该作者
赛元MCU3 发表于 2019-9-6 17:51
另外程序中并没有分频

TMCON=0X02;  //定时器1  4分频
6
| 2019-9-6 18:53 | 只看该作者
tanik 发表于 2019-9-6 17:59
TMCON=0X02;  //定时器1  4分频


7
 楼主 | 2019-9-8 16:32 | 只看该作者
这个是赛元发的资料中的DEMO原程序,未改一字。按照上面描述的问题,能给出一个正确的DEMO程序吗?
8
| 2019-9-9 11:30 | 只看该作者
tanik 发表于 2019-9-8 16:32
这个是赛元发的资料中的DEMO原程序,未改一字。按照上面描述的问题,能给出一个正确的DEMO程序吗? ...

/*****************************************************
*函数名称:void Uart0_Init(void)
*函数功能:Uart0中断初始化
*入口参数:void
*出口参数:void
*****************************************************/
void Uart0_Init(void)    //选择Timer2作为波特率信号发生器
{
        P1CON &= 0XF3;
        P1PH |= 0X0C;         //RX为带上拉输入;
       
        SCON  = 0X50;    //设置通信方式为模式一,允许接收
        PCON |= 0X80;
       
        TMCON |= 0X04;   //1T不分频
        T2MOD = 0X00;
        T2CON = 0X30;    //T2为波特率控制器
       
        RCAP2H = 0xFF;
        RCAP2L = 0xD9;  //9600波特率
       
        TR2 = 1;
        EUART = 1;     //开启Uart0中断
        EA = 1;
       
}

接收程序供参考
9
 楼主 | 2019-9-9 13:57 | 只看该作者
此部分烧录到7250M,编译后测试OK。 谢谢!
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

快速回复

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

论坛热帖

永利游戏开户直营 快速回复 返回顶部 返回列表
真人荷官在 咂迮朴 赌博网站在哪买服务器网上娱乐场 菲律宾申博太阳城suncity游戏登入 捕鱼赌博网站开户送金导航 太阳城亚洲太阳城娱乐登入
环亚娱乐电子游戏页面登入 澳门美高梅664882.com网上娱乐场 五洲赌城登入 澳门赌城女人 太阳城幸运农场开奖号历史
澳门搭登入 皇冠会员登陆网 澳博网址登入 百家乐记点登入 澳門赌博经历
澳门国际赌场网址 太阳城现金网投游戏下载网上娱乐场 澳门金沙娱乐网上大全登入 申博提款最快游戏登入 2015年娱乐注册送白菜登入