微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 各位老师,请帮我分析下,是什么问题

各位老师,请帮我分析下,是什么问题

时间:10-02 整理:3721RD 点击:
各位高手,老师,请帮我分析下是什么问题:(数字只能到60就清零,而我设置的是到 90才清零,)单片机串口接收 发送 (以2400BPS 从计算机发送任一字节数据,单片机接收数据后,此数据都要加上序号发送给计算机 ,到90清零)  谢谢你!
#include<reg52.h>
//#define uchar unsigned char
unsigned char flag,a,b,c;
void init()
{
TMOD=0x20;
TH1=0xF4; //2400波特率
TL1=0xF4; //2400波特率
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
  }


void main()
{
init();
  c=0;  //C 为零

  while(1)
{

   if(flag==1)
    {   
         ES=0;
        SBUF=c;            
         while(!TI);        
          TI=0;         
           c++;     //TI发送一次,就加一次
        if(c==90)   //设置的是90;  
              c=0;  
              
         
                               
           
    SBUF=a;    //数据给了a;
    while(!TI);
    TI=0;       // TI=0
           ES=1;
          flag=0;   
                        }
                           }                                                                                                                                                                                                                                                                                             
                               
        }
void ser() interrupt 4
{

  RI=0;
a=SBUF;  //接收数据
flag=1;


  }

问一下,你是怎么知道c加到60就请0了

串口调试助手,可以看的到~~ 16进制

你试一下设置为c加到30就清零,看看正不正常

这是全部的程序么?把所有的程序发一下看看。

建议可以debug模式下确定一下你的c的值的,看到清零前一步c的值是什么情况

各位高手老师,是不是 进制转换的问题 呢?

60:0x3c
90:0x5a
89:0x59

加个delay试试

邮箱是多少?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top