搜索
bottom↓
回复: 7

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

[复制链接]

出0入0汤圆

发表于 2012-12-9 16:07:57 | 显示全部楼层 |阅读模式
请问程序中point_on和time_counter的作用,没看懂这两个,谢谢!~
  1. #include <mega16.h>
  2. #include <delay.h>
  3. char time[3];
  4. char dis_buff[6];
  5. flash char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7F,0x6F};
  6. bit point_on;
  7. flash char position[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
  8. char time_counter;

  9. void time_to_disbuffer(void)
  10. {
  11.   char i,j=0;
  12.   for(i=0;i<2;i++)   
  13.   {
  14.     dis_buff[j++] = time[i] % 10;
  15.     dis_buff[j++] = time[i] / 10;
  16.   }
  17. }

  18. void display(void)
  19. {
  20.   char i;
  21.   for(i=0;i<=5;i++)
  22.   {
  23.     PORTA = led_7[dis_buff[i]];
  24.     if (point_on && (i==2||i==4)) PORTA |= 0x80;
  25.     PORTC = position[i];
  26.     delay_ms(2);
  27.     PORTC =0xff;
  28.   }
  29. }

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

  36.   time[2] = 23;
  37.   time[1] = 58;
  38.   time[0] = 55;

  39.   time_to_disbuffer();
  40.   
  41.   while(1)
  42.   {
  43.     display();
  44.     if(++time_counter >=40)
  45.     {
  46.       time_counter = 0;
  47.       point_on=~point_on;
  48.       if(++time[0]>=60)
  49.       {
  50.         time[0] = 0;
  51.         if(++time[1]>=60)
  52.         {
  53.           time[1] = 0;
  54.           if(++time[2]>=24) time[2] = 0;
  55.         }
  56.         time_to_disbuffer();
  57.       }
  58.       delay_ms(13);
  59.     }
  60.   }
  61. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-12-9 16:12:42 | 显示全部楼层
哪两个变量?

出0入0汤圆

发表于 2012-12-9 16:15:22 | 显示全部楼层
汗,还以为楼主会写在后面呢。。。。

出0入0汤圆

发表于 2012-12-9 16:21:46 | 显示全部楼层
if (point_on && (i==2||i==4)) PORTA |= 0x80;

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

出0入0汤圆

发表于 2012-12-9 16:24:05 | 显示全部楼层
point_on=~point_on; 这个是制造一闪一闪的效果

出0入0汤圆

发表于 2012-12-9 16:24:24 | 显示全部楼层
     楼主挂了!!!!!!!!

出0入0汤圆

发表于 2012-12-9 16:25:37 | 显示全部楼层
if(++time_counter >=40)
这个是用time_counter 来刷新显示,相当于一秒已经过去了。。   

出0入0汤圆

 楼主| 发表于 2012-12-9 17:00:27 | 显示全部楼层
啊。。谢谢52171314的帮助~懂了!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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