| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 379 人关注过本帖
标题:在单片机仿真上显示的时候是正确的,在开发板上时,它就开始乱码了,求解~ ...
只看楼主 加入收藏
changjiong
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-12-14
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
在单片机仿真上显示的时候是正确的,在开发板上时,它就开始乱码了,求解~~用c语言写的,代码如下
#include <reg51.h>
#include <stdio.h>
#define uchar     unsigned char
#define uint      unsigned int

uchar h;
uint r=0;
uint s;
uchar code  dis[]={
                           
    0Xc0,/*0*/
    0Xf9,/*1*/
    0Xa4,/*2*/
    0Xb0,/*3*/
    0X99,/*4*/
    0X92,/*5*/
    0X82,/*6*/
    0Xf8,/*7*/
    0X80,/*8*/
    0X90,/*9*/
    0Xff,/*NULL*/
};


void delay(uint c)
{
   uint i,j;
    for(i=0;i<c;i++)
      for(j=0;j<100;j++);
   
}

 //interrupt 1
void t0(void) interrupt 0 using 1
{
  delay(2);
   if(INT0==0)
    {
      r++;
      if(r==2)
       {
          r=0;
       }
      r%=2;
      if(r==0)
       {
        P0=0xeb;
        P1=0x00;
        P2=0xff;
       }while(1)
        {
           if(INT0==0|INT1==0|T0==0)
          {
          delay(2);
          if(INT0==0|INT1==0|T0==0)
              break;
          }

        };
      
    }

}

 //interrupt 2
void t1(void) interrupt 2 using 1
{
  delay(2);
   if(INT1==0)
    {
      r++;
      if(r==2)
       {
          r=0;
       }
      r%=2;
      if(r==0)
       {
        P0=0xdd;
        P1=0x00;
        P2=0xff;
       }while(1)
        {
           if(INT1==0|INT0==0|T0==0)
          {
           delay(2);
           if(INT1==0|INT0==0|T0==0)
              break;
          }

        };
      
    }

}

//interrupt 3
void t2(void) interrupt 1 using 1
{
  TH0=0xff;
  TL0=0xff;
    delay(2);
     if(T0==0)
       {
        P0=0xdb;
        P1=0x00;
        P2=0xff;
       }while(1)
        {
           if(INT0==0|INT1==0)
          {     
            delay(2);
            if(INT0==0|INT1==0)
              break;
          }

        };

}



void main(void)
{
  TMOD=0x06;
  TH0=0xff;
  TL0=0xff;
  TR0=1;
  EA=1;
  EX0=1;
  EX1=1;
  ET0=1;
  
  
 while(1)
{

    P0=0xeb;
     for(h=28;h>0;h--)
     {
       for(s=248;s>0;s--)
       {
        P1=0x00;
        P2=0xff;
        P1=0x01;
        P2=dis[h/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x02;
        P2=dis[h%10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x04;
        P2=dis[(h+2)/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x08;
        P2=dis[(h+2)%10];
         delay(1);
       }
     }

    delay(248);

    P0=0xf3;
     for(h=3;h>0;h--)
     {
        delay(392);
         P0=0xf3;
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0xaa;
        P2=dis[(h-1)%10];
         delay(600);
        P0=0xfb;
     }

    delay(248);
     
    P0=0xdd;
     for(h=38;h>0;h--)
     {
       for(s=248;s>0;s--)
       {
        
        P1=0x00;
        P2=0xff;
        P1=0x01;
        P2=dis[(h+2)/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x02;
        P2=dis[(h+2)%10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x04;
        P2=dis[h/10];
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0x08;
        P2=dis[h%10];
         delay(1);
       }
    }

    delay(248);

    P0=0xde;
    for(h=3;h>0;h--)
    {
        delay(392);
        P0=0xde;
         delay(1);
        P1=0x00;
        P2=0xff;
        P1=0xaa;
        P2=dis[(h-1)%10];
        delay(600);
        P0=0xdf;
      
    }

    delay(248);
     
    }
  
}
搜索更多相关主题的帖子: include 单片机 c语言 开发 
2014-12-14 11:10
九宝
Rank: 2
等 级:论坛游民
帖 子:5
专家分:30
注 册:2013-5-18
收藏
得分:20 
您在中断处理程序中包含while(1)让我震撼。
如果条件(INT0==0|INT1==0)得不到满足程序就在中断内死磕。
主程序得不到运行,显示不了。
2014-12-15 11:58
快速回复:在单片机仿真上显示的时候是正确的,在开发板上时,它就开始乱码了,求 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016245 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved