圣灵枫

    1. 51单片机串口通信问题 13/3876 51单片机 2015-04-23
      大家帮帮忙 不能沉啊
    2. 51单片机串口通信问题 13/3876 51单片机 2015-04-22
      xmb6954757 发表于 2015-4-22 11:32 那你先去掉超时检测试试看,怎么样
      没用 问题还是中断接收根本接收不到数据
    3. 51单片机串口通信问题 13/3876 51单片机 2015-04-22
      yangxf1217 发表于 2015-4-22 11:42 老弟,你把终端函数放在主函数后边是不是要预先做个声明额?? 你定义flag这个变量好像得用“汪愣忒奥”额,英文忘了怎么写了,你去查查吧。
      我记得中断函数是不需要声明的,跟主函数是并行执行的,不过我还是听你的加了声明,然后flag确实定义错了,得用bit定义,但是现在调试程序还是没反应
    4. 51单片机串口通信问题 13/3876 51单片机 2015-04-22
      xmb6954757 发表于 2015-4-22 10:54 程序里面,数据从单片机发向PC,发送完了,记得把cnt清0了,为下次接收数据做准备。你可以先试试你的串口可不可以工作先,就单单接收一个数据;看看串口可不可以正常的工作,波特率对了没有,一个数据工作正常了,在来看多数据的
      cnt清零也不行 我之前没用中断,接收也用的查询法 在主函数里面死等 调试时发送跟接收都是正常的 多个字节数据也正常 但这样写实际中是不能用的 才换的中断 所以串口应该是正常的 波特率也没问题 换了中断之后就完全没反应 我在数据接收后面加了一个led显示 发现不亮 说明没接收到数据 中断函数不对 但我中断初始化跟调用都是参考的手册 没看出有什么问题啊
    5. 51单片机串口通信问题 13/3876 51单片机 2015-04-22
      圣灵枫 发表于 2015-4-22 08:41 试过了 不行 串口还是接收不到数据,我把程序写了具体点: #include #include unsigned char idata tab[];  //定义数组用于存放数据 unsigned char j,cnt=0,flag=0; unsigned char i=0; void UART_INIT() {   SCON=0X50;            //工作方式1,发送使能   TMOD|=0X21;           //定时器1,工作方式2   AUXR&=0x3F;                    //定时器0,1时钟为Fosc/12,即12T   AUXR&=0xFE;                    //串口1选择定时器1为波特率发生器   PCON&=0x7F;                    //波特率不加倍   TH1=0XFC;             //波特率9600,时钟频率14.7456MHz   TL1=0XFC;   TH0=0XFB;             //定时长度1ms   TL0=0X33;   TR0=1;                //定时器0不使能,接收到数据在开始计时   TR1=1;                //定时器1使能   PS=1;                 //串口中断设为高优先级   ES=1;                 //开串口中断   ET1=0;                        //禁止定时器1中断   ET0=1;                //开定时器0中断   EA=1;                 //开总中断 } void delay_1ms(unsigned int t)          //软件延时1ms {   unsigned int a,b;   for(a=0;a
      请大家帮帮忙 谢谢了
    6. 51单片机串口通信问题 13/3876 51单片机 2015-04-22
      ltbytyn 发表于 2015-4-21 17:28 把ES=0;去掉
      试过了 不行 串口还是接收不到数据,我把程序写了具体点: #include #include unsigned char idata tab[];  //定义数组用于存放数据 unsigned char j,cnt=0,flag=0; unsigned char i=0; void UART_INIT() {   SCON=0X50;            //工作方式1,发送使能   TMOD|=0X21;           //定时器1,工作方式2   AUXR&=0x3F;                    //定时器0,1时钟为Fosc/12,即12T   AUXR&=0xFE;                    //串口1选择定时器1为波特率发生器   PCON&=0x7F;                    //波特率不加倍   TH1=0XFC;             //波特率9600,时钟频率14.7456MHz   TL1=0XFC;   TH0=0XFB;             //定时长度1ms   TL0=0X33;   TR0=1;                //定时器0不使能,接收到数据在开始计时   TR1=1;                //定时器1使能   PS=1;                 //串口中断设为高优先级   ES=1;                 //开串口中断   ET1=0;                        //禁止定时器1中断   ET0=1;                //开定时器0中断   EA=1;                 //开总中断 } void delay_1ms(unsigned int t)          //软件延时1ms {   unsigned int a,b;   for(a=0;a
    7. 51单片机串口通信问题 13/3876 51单片机 2015-04-21
      ltbytyn 发表于 2015-4-21 16:59 印象中51定时器方式2(自动重载8位定时器/计数器)才能用于波特率。你查查书
      我是用的定时器1 方式2做波特率发生器

最近访客

< 1/1 >

统计信息

已有3人来访过

  • 芯积分:--
  • 好友:--
  • 主题:2
  • 回复:7

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言