Tcxpy 发表于 2012-12-9 16:07:57

ATmega16多位LED数码管显示,程序中有两个变量不太懂,求助!

请问程序中point_on和time_counter的作用,没看懂这两个,谢谢!~#include <mega16.h>
#include <delay.h>
char time;
char dis_buff;
flash char led_7={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};
bit point_on;
flash char position={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
char time_counter;

void time_to_disbuffer(void)
{
char i,j=0;
for(i=0;i<2;i++)   
{
    dis_buff = time % 10;
    dis_buff = time / 10;
}
}

void display(void)
{
char i;
for(i=0;i<=5;i++)
{
    PORTA = led_7];
    if (point_on && (i==2||i==4)) PORTA |= 0x80;
    PORTC = position;
    delay_ms(2);
    PORTC =0xff;
}
}

void main()
{
PORTA=0x00;   //初始化POTA
DDRA=0xFF;      
PORTC=0x3F;   //0011 1111
DDRC=0x3F;       //0011 1111,PORT0-PORT5输入

time = 23;
time = 58;
time = 55;

time_to_disbuffer();

while(1)
{
    display();
    if(++time_counter >=40)
    {
      time_counter = 0;
      point_on=~point_on;
      if(++time>=60)
      {
      time = 0;
      if(++time>=60)
      {
          time = 0;
          if(++time>=24) time = 0;
      }
      time_to_disbuffer();
      }
      delay_ms(13);
    }
}
}

52171314 发表于 2012-12-9 16:12:42

哪两个变量?

52171314 发表于 2012-12-9 16:15:22

汗,还以为楼主会写在后面呢。。。。

52171314 发表于 2012-12-9 16:21:46

if (point_on && (i==2||i==4)) PORTA |= 0x80;

这个point_on应该是小数点吧,小时.分钟.秒 每个两位

52171314 发表于 2012-12-9 16:24:05

point_on=~point_on; 这个是制造一闪一闪的效果

liudaolunhui 发表于 2012-12-9 16:24:24

   楼主挂了!!!!!!!!

52171314 发表于 2012-12-9 16:25:37

if(++time_counter >=40)
这个是用time_counter 来刷新显示,相当于一秒已经过去了。。   

Tcxpy 发表于 2012-12-9 17:00:27

啊。。谢谢52171314的帮助~懂了!
页: [1]
查看完整版本: ATmega16多位LED数码管显示,程序中有两个变量不太懂,求助!