原创 AVR(Mega8)的study:5、定时/计数器

2008-3-10 21:01 3350 3 3 分类: MCU/ 嵌入式

/********************************************************


timer.h


***************************************************/


#ifndef _timer_
#define _timer_



void DelayXms(unsigned int x);
void Timer0_init(void);
void Timer0_stop(void);
void Timer1_init(void);
void Timer1_stop(void);
#endif


/**************************************************


timer.c


******************************************************/


#include <iom8v.h>
#include "mytype.h"
#include "timer.h"
#include "uart.h"


 


void DelayXms(unsigned int x)//延迟xms
{
unsigned int m;
 while(x--)
  {
   m="1275";
   while(m--);
  }
}



void Timer0_init(void)
{
TCCR0=0x05;//0X00停止;0X01:CK;0X02:CK/8;
//0X03:CK/64;0X04:CK/256;
//0X05:CK/1024;0X06:T0:FALLING;0X07:T0:RISING;
TCNT0=0X00;//上记数,设置初值0x00;
SREG=0X80;//开中断;
TIMSK|=(1<<TOIE0);//Timer0溢出中断开;
}
void Timer0_stop(void)
{
TCCR0=0; //timer0/counter0 stoped;
}
void Timer1_stop(void)
{
TCCR1B=0; //timer0/counter0 stoped;
}


void Timer1_init(void)
{
TCNT1=0X0000;//记数初值
TCCR1A=0x00;//禁止比较和PWM功能;
TCCR1B=0x01;//0X00停止;0X01:CK;0X02:CK/8;
//0X03:CK/64;0X04:CK/256;
//0X05:CK/1024;0X06:T1:FALLING;0X07:T1:RISING;
//SREG=0X80;//开中断;
}


/**************************************************


main.c


************************************************/


#include <iom8v.h>
#include "mytype.h"
#include "timer.h"
#include "uart.h"


uint8 table[16]={"0123456789abcdef"};


#pragma interrupt_handler timer_int_0:10



void timer_int_0(void)//定时器溢出中断函数。
{
uint16 counter;
Timer0_stop();//停止定时器0.
Prints("Timer0 overflow...",1);
Timer1_init();//定时器1初始化。
DelayXms(4);//定时4MS
Timer1_stop();//定时器1停止。
counter=TCNT1;//取定时器计数值。
Send_abyte(table[counter/4096]);//发送COUNTER值到串口。
Send_abyte(table[counter%4096/256]);
Send_abyte(table[counter%256/16]);
Send_abyte(table[counter%256%16]);
}


void main(void)
{
Uart_init();//串口初始化。
Timer0_init();//定时器0初始化。
Prints("Timer0 start...",1);
while(1);
}


工程包如下:


点击下载

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
3
关闭 站长推荐上一条 /3 下一条