打印
[其它应用]

仿真时只接到一位数据的触发

[复制链接]
713|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanglli|  楼主 | 2015-2-26 19:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用SH79F0819单片机控制,12864中文LCD显示,从其他单片机串口读取一个14位字符串,发送端单片机采用串口异步通信,波特率为9600,8位数据,1位起始位,1位停止位,无验证码,有个外置微动开关触发其发出一个字符串。
而我采用SH79F0819的EUART的方式一进行通信,T2为波特率发生器, 12.3MHz内部RC振荡频率,我的串口通信代码设置如下,仿真时只接到一位数据的触发,要发送14次才会完成14位字符串的读取
沙发
zhanglli|  楼主 | 2015-2-26 19:51 | 只看该作者
#include <sh79f0819.h>

#define uchar unsigned char

/*---------------延时子程序----------------*/
void Delay_US (uchar us)
{
  while(--us);
}
void Delay_MS (uchar ms)
{
  do {Delay_US(203);}
  while(--ms);
}
void Delay_S (uchar s)
{
  do {Delay_MS(200);Delay_MS(200);Delay_MS(200);Delay_MS(200);Delay_MS(200);}
  while(--s);
}

//串口初始化
void UART_initial ()
{
        T2CON=0x20;    //设定定时器2为接收波特率发生器
        T2MOD=0x00;    //T2模式控制寄存器清零
        RCAP2H=0xff;
        RCAP2L=0xd8;    //按波特率9600算出定时器2溢出设置值65496

        PCON=0x00;    //电源控制寄存器清零
        TR2=1;        //启动定时器2
        SCON=0x50;     //设置串口通信为方式1,并允许接收
        RI=0;        
}

int main(void){
        uchar i=0;
        uchar a[14];
        Delay_MS(100);
        UART_initial();
        for (i=0;i<14;i++){
                while(!RI);
                RI=0;
                a[i]=SBUF;
        }
        Display(a);  //LCD显示
        while(1);
}

使用特权

评论回复
板凳
lium| | 2015-2-26 19:53 | 只看该作者
不懂,帮顶吧

使用特权

评论回复
地板
zhanglli|  楼主 | 2015-2-26 19:56 | 只看该作者
请大神们帮忙看看以上程序设计有没有问题,问题在哪,求就救呀

使用特权

评论回复
5
guoyt| | 2015-2-26 19:58 | 只看该作者
你贴的是接收端程序,问题兴许在发送端呢??

使用特权

评论回复
6
zhanglli|  楼主 | 2015-2-26 20:01 | 只看该作者
哦,那我自己先看看吧

使用特权

评论回复
7
jpxjpxjpx| | 2015-3-17 18:47 | 只看该作者
中颖4位8位MCU, 锂电池管理IC,一级代理商,姜先生 QQ256278599 电话13242940546

使用特权

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

本版积分规则

1016

主题

9386

帖子

1

粉丝