久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5594|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

ATmega32單片機(jī)定時器程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:68618 發(fā)表于 2014-11-11 22:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
ATmega32的有三個定時器,T0和T2是8位的,T1是16位的,各自提供了很多功能
都是以前用studio寫的,那時還沒用iar
*****************************************************************
//定時器0溢出中斷
//CPU:mega32
//編譯器:winavr

#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
DDRC |= (1 << 7);//PC7置為輸出

TIMSK |= 1<<TOIE0;//不屏蔽T0溢出中斷
TCCR0 |= (1 << CS02) |(0 << CS01) | (1 << CS00);//1024分頻
sei();//使能全局中斷

while(1);
}
SIGNAL(SIG_OVERFLOW0)//TIMER0 溢出中斷服務(wù)程序
{
PORTC ^= 1<<7;//PC7取反
}
******************************************************************

*****************************************************************
//定時器0普通匹配模式中斷
//CPU:mega32
//編譯器:winavr
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
DDRC |= (1 << 7);//PC7置為輸出

TIMSK |= 1<<OCIE0;//不屏蔽T0匹配中斷
OCR0 = 0X10;//匹配值
TCCR0 |= (1 << CS02) |(0 << CS01) | (1 << CS00);//1024分頻
sei();//使能全局中斷

while(1);
}
SIGNAL(SIG_OUTPUT_COMPARE0)//TIMER0 匹配中斷服務(wù)程序
{
TCNT0 = 0;//計數(shù)值清0
PORTC ^= 1<<7;//PC7取反
}
******************************************************************

*****************************************************************
//定時器0匹配時清零模式(CTC)中斷
//CPU:mega32
//編譯器:winavr

#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
DDRC |= (1 << 7);//PC7置為輸出
DDRB |= (1 << 3);//PC7置為輸出
TIMSK |= 1<<OCIE0;//不屏蔽T0匹配中斷
OCR0 = 0X10;//匹配值
TCCR0 |= (1 << WGM01) | (0 << WGM00) | (1 << CS02) | (0 << CS01) | (1 << CS00);//CTC模式,1024分頻
sei();//使能全局中斷

while(1);
}
SIGNAL(SIG_OUTPUT_COMPARE0)//TIMER0 匹配中斷服務(wù)程序
{
PORTC ^= 1<<7;//PC7取反
}
******************************************************************

*****************************************************************
//定時器0輸出正弦波
//CPU:mega32
//編譯器:winavr

#include <avr/io.h>
#include <avr/interrupt.h>
const char sindata[128] = {128,134,140,147,153,159,165,171,177,182,188,
193,199,204,209,213, 218,222,226,230,234,237,240,243,245,248,250,251,253,254,
254,255, 255,255,254,254,253,251,250,248,245,243,240,237,234,230,226,222, 218,
213,209,204,199,193,188,182,177,171,165,159,153,147,140,134, 128,122,116,109,
103,97,91,85,79,74,68,63,57,52,47,43, 38,34,30,26,22,19,16,13,11,8,6,5,3,2,2,1,
1,1,2,2,3,5,6,8,11,13,16,19,22,26,30,34, 38,43,47,52,57,63,68,74,79,85,91,97,
103,109,116,122};
unsigned char x=0;
int main(void)
{
DDRB |= (1 << 3);//PB3  (OC0)  置為輸出
TIMSK |= 1<<OCIE0;//不屏蔽T0匹配中斷
TCCR0 |= (1 << WGM01) | (1 << WGM00) | (1 << COM01) | (0 << COM00) |(0 << CS02) | (0 << CS01) | (1 << CS00);//CTC模式,“高低”占空比,不分頻
sei();//使能全局中斷

while(1);
}
SIGNAL(SIG_OUTPUT_COMPARE0)//TIMER0 匹配中斷服務(wù)程序
{
OCR0 = sindata[x];
if( ++x > 127 ) x=0;
}

******************************************************************

*****************************************************************
//定時器1捕捉中斷
//CPU:mega32
//編譯器:winavr
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
TIMSK |= 1<<TICIE1;//不屏蔽T1捕捉中斷
TCCR1A |= (0<<WGM11) | (0<<WGM10);
TCCR1B |= (0<<WGM13) | (0<<WGM12) | (0 << CS12) |(1 << CS11) | (0 << CS10);//普通模式,不分頻
sei();//使能全局中斷

while(1);
}
SIGNAL(SIG_INPUT_CAPTURE1)//TIMER1 捕捉中斷服務(wù)程序
{
//……
}
******************************************************************
*****************************************************************
//定時器1溢出中斷
//CPU:mega32
//編譯器:winavr
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
DDRC |= (1 << 7);//PC7置為輸出

TIMSK |= 1<<TOIE1;//不屏蔽T1溢出中斷
TCCR1A |= (0<<WGM11) | (0<<WGM10);
TCCR1B |= (0<<WGM13) | (0<<WGM12) | (0 << CS12) |(1 << CS11) | (0 << CS10);//普通模式,不分頻
sei();//使能全局中斷

while(1);
}
SIGNAL(SIG_OVERFLOW1)//TIMER1 溢出中斷服務(wù)程序
{
TCNT1H = 0X99;//先寫高位,后寫低位
TCNT1L = 0X88;
PORTC ^= 1<<7;//PC7取反
}

******************************************************************
*****************************************************************
//定時器測頻率  
//定時器1計數(shù),定時器2定時
//CPU:mega32
//編譯器:winavr

#include <avr/io.h>
#include <avr/interrupt.h>
#define F 1000000
int main(void)
{
DDRC |= (1 << 7);//PC7置為輸出
TIMSK |= 1<<OCIE2;//不屏蔽T2匹配中斷
OCR2 = 0.1  *F/1024;//定時0.1s
TCCR2 |= (1 << WGM01) | (0 << WGM00) | (1 << CS02) | (1 << CS01) | (1 << CS00);//CTC模式,1024分頻
sei();//使能全局中斷
TCCR1A |= (0<<WGM11) | (0<<WGM10);
TCCR1B |= (0<<WGM13) | (0<<WGM12) | (1 << CS12) |(1 << CS11) | (0 << CS10);//普通模式,T1下降沿計數(shù)

while(1);
}
SIGNAL(SIG_OUTPUT_COMPARE2)//TIMER2 匹配中斷服務(wù)程序
{
PORTC ^= 1<<7;//PC7取反
TCNT1H = 0;
TCNT1L = 0;
}

******************************************************************

*****************************************************************
//定時器測1捕捉中斷
//可以測周期用
//CPU:mega32
//編譯器:winavr
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
TIMSK |= 1<<TICIE1;//不屏蔽T1捕捉中斷
TCCR1A |= (0<<WGM11) | (0<<WGM10);
TCCR1B |= (0<<WGM13) | (0<<WGM12) | (0 << CS12) |(1 << CS11) | (0 << CS10);//普通模式,不分頻
sei();//使能全局中斷

while(1);
}
SIGNAL(SIG_INPUT_CAPTURE1)//TIMER1 捕捉中斷服務(wù)程序
{
TCNT1H = 0;
TCNT1L = 0;

}


******************************************************************

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区在线播放 | 亚洲国产成人av好男人在线观看 | 欧美激情a∨在线视频播放 成人免费共享视频 | 国产精品久久久久免费 | 成人精品国产免费网站 | 日韩国产免费观看 | 黄色福利 | 九九热这里只有精品在线观看 | 欧美影院久久 | 精品无码久久久久久国产 | 青青草久久 | 日韩在线欧美 | 国产精品久久久久久久久婷婷 | 欧美一区二区综合 | 免费成人午夜 | 午夜免费福利电影 | 日本人做爰大片免费观看一老师 | 成人欧美一区二区三区色青冈 | 在线观看av网站 | 亚洲成人三级 | 亚洲黄色av | 欧美日韩国产中文字幕 | 午夜私人影院 | 天堂久久网 | 亚洲最色视频 | 狠狠av| 欧美精品一区二区三区在线播放 | 中文字幕在线观看一区 | 九九热免费视频在线观看 | 美女久久久久久久久 | 久久精品亚洲国产奇米99 | 国产一区二区观看 | 亚洲成人黄色 | 超碰97人人人人人蜜桃 | 亚洲色视频 | 在线伊人 | 一区二区av | 午夜电影网 | 亚洲精品综合 | 中文字幕亚洲精品 | 免费三级黄 |