标题: 设计24小时制定时器,下面是参考程序,但是秒和时位置反了,请问怎么改啊? [打印本页]

作者: hopeeeee    时间: 2021-6-2 21:46
标题: 设计24小时制定时器,下面是参考程序,但是秒和时位置反了,请问怎么改啊?
#include <reg52.h>   
#include <delay.h>


int mypow(int x, int y);
void num_check(void);

code unsigned int segment_data[11]={        0x3f,0x06,0x5b,0x4F,0x66,
                                                                                                                                                        0x6d,0x7d,0x07,0x7f,0x6f,0x40};
code unsigned int ROW[8]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c};
                unsigned int num[8];
unsigned char i,a=0,j;




void main()
{

       
        TMOD=0x10;   
        TH1=(65536-50000)/256;  
        TL1=(65536-50000)%256;
        EA=1;  
        ET1=1;
        TR1=1;

  num[2]=10;num[5]=10;
            
        while(1)
        {
                if(a>=20) num_check();
                for(j=0;j<=7;j++)
                {
                P2=~ROW[j];
                P0=0;       
                P0=segment_data[num[j]];
          delay(1);
                }
        }
       
}
void num_check(void)
{
if(a>=20){a=0;num[0]++;};
if(num[0]>=10){num[0]=0;num[1]++;};
if(num[1]>=6){num[1]=0;num[3]++;};
if(num[3]>=10){num[3]=0;num[4]++;};
if(num[4]>=6){num[4]=0;num[6]++;};
if(num[6]>=10){num[6]=0;num[7]++;};
if(num[7]>=3){num[7]=0;};
if((num[7]==2)&&(num[6]==4)){num[6]=0;num[7]=0;};
}
void TIME1() interrupt 3  
{
        TH1=(65536-50000)/256;
        TL1=(65536-50000)%256;
        a++;  
                       
}


作者: 飞云居士    时间: 2021-6-8 18:29
应该是内存大小端的问题。即高字节与低字节整反了
作者: 老董    时间: 2021-6-8 19:23
你连接P2的的数码管是用什么元件驱动的
作者: 无心法师III    时间: 2021-6-8 20:12
秒和时的位置反了,我觉的可能有这几种情况:1.写程序过程中,定义秒和时给定义反了,在要用秒这个变量的时候用了时这个变量,在要用时这个变量的时候用了秒这个变量;2.仿真或实际接线时,对应秒和时的数码管给接反了
作者: xianfajushi    时间: 2021-6-9 09:01
可参http://www.51hei.com/bbs/dpj-207097-1.html动静皆宜




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1