引用第15楼phpskycn于2009-07-08 01:24发表的 :
for应该只能放进一个
C++中精典的…
for(i=0,i<100,i++){
......
}
.......
C++没了解过,怎么是用逗号隔开的?
嘿,又花了几个小时时间,终于写出了我的第二个C程序:四数码管循环显示0~999,一开始以为很简单,就在原来的双数码管显示代码基础上小作修改,结果除了个位其它的怎么都是显示乱码,要么干脆几位不显示,想了好久没找到原因,后来尝试用“程序思维”一步步跟下去,终于发现了问题所在,一位数显示与两位数显示没有太大分别,可上了三位数就得区分了,关键在于区分“几位数”以及“取其位值”,虽然中间绕了很远,但,最终还是成功了,兴奋N久!
[s:232]
***********************我的第二个C程序:四数码管循环显示0~999*******************************
#include <iom48v.h>
#include <macros.h>
#include "delay.h"
#include "led_dis.h"
#define Led_a 0b11111110
#define Led_b 0b11111101
#define Led_c 0b11111011
#define Led_d 0b11110111
#define Led_off 0b11111111
void main (void)
{
DDRC=0xFF;
DDRB=0xFF;
DDRD=0xFF;
PORTC=0xFF;
PORTB=0xFF;
PORTD=0xFF;
while(1)
{
int a=0,b=0,c=0,d=0,e=0,Counter;
for (Counter=0;e<10000;Counter=e++/2) /*这两个参数决定了计数器的递增频率与总循环数*/
{
if(Counter<=999&&Counter>99) /*三位数情况*/
{
d=Counter%10;
c=Counter/10%10;
b=Counter/100;
}
else if(Counter<=9999&&Counter>999) /*四位数情况*/
{
d=Counter%10;
c=Counter/10%100%10;
b=Counter/100%10;
a=Counter/1000;
}
else /*一或两位数情况*/
{
d=Counter%10;
c=Counter/10;
}
PORTD=DisTab[a];
PORTC=Led_a; /*点亮千位数码管*/
Delay_ms(5);
PORTD=DisTab[b];
PORTC=Led_b; /*点亮百位数码管*/
Delay_ms(5);
PORTD=DisTab[c];
PORTC=Led_c; /*点亮十位数码管*/
Delay_ms(5);
PORTD=DisTab[d];
PORTC=Led_d; /*点亮个位数码管*/
Delay_ms(5);
PORTC=Led_off; /*关闭所有的数码管*/
}
}
}