m0_71081072 2023-04-12 19:45 采纳率: 100%
浏览 16
已结题

关于#单片机#的问题,如何解决?

为什么两组数码管初值设置不同但是仿真时间数值同步


#include<reg52.h>
#define uint unsigned int           
#define uchar unsigned char   
uchar tab2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};    

uchar t1[1];
uchar t2[1];

uchar sum=61;      //数码管初始值
uchar su=50;
sbit P22=P2^2; //段
sbit P23=P2^3;
sbit P24=P2^4;        

sbit P10=P1^0;  //东西 红 黄 绿
sbit P11=P1^1;
sbit P12=P1^2;

sbit P14=P1^4;  //南北 红 黄 绿
sbit P15=P1^5;
sbit P16=P1^6;

sbit P31=P3^1;   //按键
sbit P30=P3^0;
sbit P32=P3^2;
sbit P33=P3^3;



void delay(uint ms)                 //延时
{
int i,j;
for(i=0;i<ms;i++)
    for(j=0;j<120;j++);
}

void smxs( uchar ws, uchar ds )    
{
switch(ws)  
   {
   case 1:  P22=0; P23=0; P24=0;  break;
   case 2:  P22=1; P23=0; P24=0;  break;
   case 3:  P22=0; P23=1; P24=0;  break;
   case 4:  P22=1; P23=1; P24=0;  break;
   case 5:  P22=0; P23=0; P24=1;  break;
   case 6:  P22=1; P23=0; P24=1;  break;
   case 7:  P22=0; P23=1; P24=1;  break;
   case 8:  P22=1; P23=1; P24=1;  break;
   }
P0=tab2[ds]; 
}
void smx( uchar ws, uchar ds )    
{
switch(ws)  
   {
   case 1:  P22=0; P23=0; P24=0;  break;
   case 2:  P22=1; P23=0; P24=0;  break;
   case 3:  P22=0; P23=1; P24=0;  break;
   case 4:  P22=1; P23=1; P24=0;  break;
   case 5:  P22=0; P23=0; P24=1;  break;
   case 6:  P22=1; P23=0; P24=1;  break;
   case 7:  P22=0; P23=1; P24=1;  break;
   case 8:  P22=1; P23=1; P24=1;  break;
   }
P0=tab2[ds]; 
}
void m()
{
    t1[1]=sum/10;
    t1[0]=sum%10;
    t2[1]=su/10;
    t2[0]=su%10;    
    
}    
    

void time_0()
{
TMOD=0x01;
TH0=0X3c;    
TL0=0Xb0;    
TR0=1;
EA=1;
ET0=1;
    
}

void main()
{
 time_0();



    while(1)
    { m();        
      smxs(1,t1[1]);
    delay(1);
    smxs(2,t1[0]);
    delay(1);    
      smx(4,t2[1]);
    delay(1);
    smx(3,t2[0]);
    delay(1);            
    }
        
    
}    
void t0()interrupt 1
{
    static uchar counter=0;
        TH0=0X3c;    
        TL0=0Xb0;    
        counter++;
     if(counter==20)
     { sum--;
     su--;
         counter=0;     
     } 
    
}

img

  • 写回答

1条回答 默认 最新

  • 智者知已应修善业 2023-04-13 07:58
    关注

    略看数组T1T2只声明1个空间是不存在下标1的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分