找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2865|回复: 0
打印 上一主题 下一主题
收起左侧

串口调试,求指导

[复制链接]
跳转到指定楼层
楼主
ID:46054 发表于 2012-11-3 19:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

各位大仙,我用串口调试助手往单片机里发送数据,然后再数码管里显示,下面是我的程序,但不知哪错了,求指导啊!!

#include <reg52.h>
#include <intrins.h>
unsigned char code non_dot[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};    //数字不带小数点
unsigned char code dot[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};   //数字带小数点
int i=0;   
unsigned char data Temp[10];
unsigned char data dis_digit;
unsigned char data first;
int k=1,m=1,flag=0;     //定义全局变量
void ser_uart(void);   //函数声明
void timer0();

//定时器的初始化,定时器1,模式2,波特率:9600,用于串行口。定时器0,模式1,用于数码管的动态扫描
void init()
{
 TMOD=0X21;  //初始化定时器0和1.
 TH1=0Xfd;
 TL1=0Xfd;
 TH0=0XFE;
 TL0=0X17;
 TR1=1;
 //TR0=1;
 SCON=0X50;
 PCON=0X00;   //波特率没有倍增
 EA=1;
 ES=1;
 ET0=1;
 dis_digit=0xfe;
}

//主函数
void main()
{
 init();
 while (1);
}

//串口中断程序
void ser_uart(void) interrupt 4 //串行中断服务程序
{
  
   if(RI)                        //判断是接收中断产生
     {
   RI=0;
   if(SBUF==‘%’)
 { flag=1;
   while(flag==1)
  {                    
     Temp=SBUF;
     if(Temp!='#')
     {
  i++;
  break;
      }
     else { TR0=1; break;}
  
   }  
 }  
  /* else
  display(Temp);  */
                
/*    }
   if(TI)                       
     TI=0;
}
*/

//判定有无小数点及显示整数程序
/*void judge(unsigned char *data)

 int j=0;
 for(j=0;j<=i;j++)
 {
  if{*(data+j)!='.'} ;
  else display(Temp);
 }
 
}
*/

//定时器0中断程序,负责数码管的动态扫描
/*void timer0() interrupt 1

 
 TH0=0XFE;
 TL0=0X17;

 P2=0XFF;          //先关闭所有数码管
 if(k<i)
 { P0=non_dot[(Temp[k])-0x30];
   k++;
 }
 else k=1;
 
 P2=dis_digit;
 if(m<i-1)
 { m++;
  dis_digit=_crol_(dis_digit,1);    //位选通值左移,下次中断时选通下一位数码管
  }
  else
  { m=1; dis_digit=0xfe; }
 
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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