timersample.c

来自「AVR典型实例.rar」· C语言 代码 · 共 74 行

C
74
字号
#define F_CPU 4000000UL  
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define uchar8 unsigned char

const uchar8 LedNum[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar8 second = 0; /*  要显示的数字 */
uchar8 count = 0;
uchar8 minute = 0;

void LEDShow(int num)
{
	uchar8 i,tmp,curnum;
	int tmpnum;

		tmp = 0xef;
		tmpnum = num;
		for(i=0;i<4;i++)
		{	
			curnum = tmpnum % 10;
			tmpnum = tmpnum / 10;
			PORTA = tmp;
			if(i==2)
				PORTC = LedNum[curnum]|0x80;
            else
				PORTC = LedNum[curnum];
			_delay_ms(1);
			tmp = (tmp << 1) + 0x1;
		}

}
int main(void)
{


	DDRC = 0xff;
	DDRA = 0xff;
	DDRB = 0x01;
	
	TCCR0 = 0x05;  // 1024分频
	TIMSK = 0x01;
	TCNT0 = 256 - 0.01/(1024.0/F_CPU);

	sei();
	while(1)
	{
		LEDShow(minute*100+second);

		if(second > 59)
		{
			second = 0;
			minute ++;
		}
		if(minute>99)
			minute = 0;
	}
    return 0;
}
// 定时器0的溢出中断
SIGNAL(SIG_OVERFLOW0)
{
	count++;
	if(count == 99)
	{
		second++;
		count = 0;

	}
	TCNT0 = 256 - 0.01/(1024.0/F_CPU);	

} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?