⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tc0counter.c

📁 AVR单片机atmega16的定时计数器T0实现四位加减计数器
💻 C
字号:
//**********基于TC0的计数器设计___TC0工作在计数方式模式***************//
//****************WINAVR2005版本,系统时钟为8MHz**********************//

#include<avr/io.h>
#include<avr/delay.h>
#include<avr/interrupt.h>         
#include<avr/signal.h>   

#define uchar unsigned char
#define uint unsigned int

uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint Data[4]={0,0,0,0};	  //显示初始值:1234
uint  CNT=0;                  //初始计数值1234
uchar Key_Up;                 //加计数按键标志  
uchar Key_Down;               //减计数按键标志  


void Display(uint *p)              //动态显示函数,参数p为待显示的数组名
{
	uchar i,sel=0x01;           
	for(i=0;i<4;i++)
	{
		PORTC=~sel;                //选通最右边的数码管
		PORTA=Table[p[i]];         //送字型码		
		_delay_ms(2);              //显示延时       
		sel=sel<<1;                //移位以显示前一位
	}
}


//******************************计数值处理函数******************************
//功能:此函数用于将计数值拆分为BCD码的千,百,十,一数据,用于查表显示//
//参数说明:参数i:计数值;参数p:处理数据存放的数组名//


void Process(uint i,uint *p) 
{
	p[0]=i/1000;
	i=i%1000;
	p[1]=i/100;
	i=i%100;
	p[2]=i/10;
	i=i%10;
	p[3]=i;
}


void Init_IO(void)               //初始化I/O口
{
	DDRA=0xff;                    //设置A口为推挽1输出
	PORTA=0xff;
	DDRC=0xff;                    //设置C口为不带上拉电阻的输入
	PORTC=0xff;    
	DDRB=0x00;                    //设置B口为推挽1输出;             
	PORTB=0x00;
}


SINGAL(SIG_OVERFLOW0)			        //Timer0溢出中断
{
	if(CNT!=9999)
		{
			CNT=CNT+1;
			TCNT0=0xff;
			Process(CNT,Data);         //计数值处理
			Display(Data); 			   //动态扫描显示 	
		}	
}	
	


int main(void)
{	
	uint i,Load;
	Init_IO();                        //初始化I/O口
	PORTA=0xff;						  //点亮测试所有的数码管
	PORTC=0x00;
	for(i=0;i<1001;i++)
	_delay_ms(2);              		 //显示延时
	PORTC=0xff;                      //数码管熄灭,进入计数器状态  
    DDRB=0xff;             
	TCCR0=0x06;
	TCNT0=CNT;
	TIMSK=(1<<TOIE0);
	sei();
	for(;;)
	{
		;
	}
	//Display(Data);
	return 0;
}

 








 









⌨️ 快捷键说明

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