標(biāo)題: AVR單片機(jī)定時(shí)器TIME0普通定時(shí)實(shí)驗(yàn)程序 [打印本頁]

作者: hujia    時(shí)間: 2015-6-23 15:33
標(biāo)題: AVR單片機(jī)定時(shí)器TIME0普通定時(shí)實(shí)驗(yàn)程序
/*很簡(jiǎn)單的問題費(fèi)了好大的勁,注意中斷向量地址和向量號(hào)的區(qū)別,*/
/*這樣的是時(shí)鐘節(jié)拍可以搞到微秒級(jí)的,太好了這樣對(duì)以后搞操作系統(tǒng)是很管用的,節(jié)拍直接影響CPU的利用效率*/
/*節(jié)拍器越小,時(shí)間片就越準(zhǔn)確,對(duì)于整個(gè)系統(tǒng)的統(tǒng)一是絕對(duì)有意義的,*/
/*AVR定時(shí)器普通定時(shí)實(shí)驗(yàn)   0415    天津第四項(xiàng)目部宿舍 */

#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í)計(jì)數(shù)器0溢出中斷
{
i++;
if(i==6400)//中斷時(shí)間為1.25*6400=8000微秒=8毫秒
{
PORTC^=0x80;//輸出方波T=8*2=16毫秒
i=0;
}
else
    TCNT0=245;  //重裝計(jì)數(shù)器初值      

}
void int_time0()//定時(shí)器0設(shè)置初始化
{
   SREG=0x80;
    TCNT0=245;//這里我采用RC震蕩8M時(shí)鐘,1分頻后周期是0.125微秒,計(jì)數(shù)為255-245=10次所以就=10*0.125=1.25微秒,中斷一次是1.25微秒
   TIMSK=0x01;
   TCCR0=0x01;//工作在普通模式,時(shí)鐘1分頻,開啟定時(shí)器
}
void main()
{
DDRC=0xff;
PORTC=0;
int_time0();
while(1);


}






歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1