📄 counter.c
字号:
/******************************************/
//文件名:Counter.c
//功能: 多个LED数码观的控制
//作者: young
//时间: 2006.10.1
//目标MCU:ATmega8
//晶振: 8MHZ
/******************************************/
#include <iom8v.h>
//延时1MS
void delay_1ms(void)
{
unsigned int i;
for(i=1;i<(unsigned int)(1144-2);i++)
;
}
//延时nMS
void delay_ms(unsigned int n)
{
unsigned int i=0;
while(i<n)
{
delay_1ms();
i++;
}
}
//主函数,依次显示数字0~9
void main()
{
unsigned char i,j;
static unsigned char LedNum[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66,
0x6D, 0x7D, 0x07, 0x7F, 0x6F};
//显示小数点要加0x80
unsigned char CountNum[4]={0, 0, 0, 0}; //计数的百、十、个位和十分位
DDRB=0xFF; //设置B口为输出模式
PORTB=0xFF; //置高电平
DDRC=0x0F;
PORTC=0xFF;
while (1)
{
i=0;
for(j=0;j<100;j++) //依次显示4S"000.0"
{
i=++i%4;
PORTC&=~(1<<i);
if(2==i)
PORTB=LedNum[0]+0x80;
else
PORTB=LedNum[0];
delay_ms(10);
PORTC|=0xFF;
}
CountNum[0]=CountNum[1]=CountNum[2]=CountNum[3]=0;
while(1)
{
//计数加1
if(CountNum[3]++==9)
{
CountNum[3]=0;
if(9==CountNum[2]++)
{
CountNum[2]=0;
if(9==CountNum[1]++)
{
CountNum[1]=0;
CountNum[0]++;
}
}
}
//显示计数值
for(i=0;i<4;i++)
{
PORTC&=~(1<<i);
if(2==i)
PORTB=LedNum[CountNum[i]]+0x80;
else
PORTB=LedNum[CountNum[i]];
delay_ms(10);
PORTC|=0xFF;
}
if(CountNum[0]==9 && CountNum[1]==9 && CountNum[2]==9
&& CountNum[3]==9)
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -