|
/*很簡單的問題費了好大的勁,注意中斷向量地址和向量號的區(qū)別,*/
/*這樣的是時鐘節(jié)拍可以搞到微秒級的,太好了這樣對以后搞操作系統(tǒng)是很管用的,節(jié)拍直接影響CPU的利用效率*/
/*節(jié)拍器越小,時間片就越準(zhǔn)確,對于整個系統(tǒng)的統(tǒng)一是絕對有意義的,*/
/*AVR定時器普通定時實驗 0415 天津第四項目部宿舍 */
#include <iom16v.h>
#define uchar unsigned char
#define uint unsigned int
#define set_bit(a,b) a|=(1<<b)
#define clr_bit(a,b) a&=(1<<b)
#define get_bit(a,b) a&(1<<b)
uint i;
#pragma interrupt_handler time0_isr:10
void time0_isr()//定時計數(shù)器0溢出中斷
{
i++;
if(i==6400)//中斷時間為1.25*6400=8000微秒=8毫秒
{
PORTC^=0x80;//輸出方波T=8*2=16毫秒
i=0;
}
else
TCNT0=245; //重裝計數(shù)器初值
}
void int_time0()//定時器0設(shè)置初始化
{
SREG=0x80;
TCNT0=245;//這里我采用RC震蕩8M時鐘,1分頻后周期是0.125微秒,計數(shù)為255-245=10次所以就=10*0.125=1.25微秒,中斷一次是1.25微秒
TIMSK=0x01;
TCCR0=0x01;//工作在普通模式,時鐘1分頻,開啟定時器
}
void main()
{
DDRC=0xff;
PORTC=0;
int_time0();
while(1);
}
|
|