历史上的今天
今天是:2024年11月28日(星期四)
2019年11月28日 | ATmega32单片机定时器程序
2019-11-28 来源:51hei
ATmega32的有三个定时器,T0和T2是8位的,T1是16位的,各自提供了很多功能
都是以前用studio写的,那时还没用iar
*****************************************************************
//定时器0溢出中断
//CPU:mega32
//编译器:winavr
#include #include int main(void) { DDRC |= (1 << 7);//PC7置为输出 TIMSK |= 1< sei();//使能全局中断 while(1); } SIGNAL(SIG_OVERFLOW0)//TIMER0 溢出中断服务程序 { PORTC ^= 1<<7;//PC7取反 } ****************************************************************** ***************************************************************** //定时器0普通匹配模式中断 //CPU:mega32 //编译器:winavr #include #include int main(void) { DDRC |= (1 << 7);//PC7置为输出 TIMSK |= 1< TCCR0 |= (1 << CS02) |(0 << CS01) | (1 << CS00);//1024分频 sei();//使能全局中断 while(1); } SIGNAL(SIG_OUTPUT_COMPARE0)//TIMER0 匹配中断服务程序 { TCNT0 = 0;//计数值清0 PORTC ^= 1<<7;//PC7取反 } ****************************************************************** ***************************************************************** //定时器0匹配时清零模式(CTC)中断 //CPU:mega32 //编译器:winavr #include #include int main(void) { DDRC |= (1 << 7);//PC7置为输出 DDRB |= (1 << 3);//PC7置为输出 TIMSK |= 1< TCCR0 |= (1 << WGM01) | (0 << WGM00) | (1 << CS02) | (0 << CS01) | (1 << CS00);//CTC模式,1024分频 sei();//使能全局中断 while(1); } SIGNAL(SIG_OUTPUT_COMPARE0)//TIMER0 匹配中断服务程序 { PORTC ^= 1<<7;//PC7取反 } ****************************************************************** ***************************************************************** //定时器0输出正弦波 //CPU:mega32 //编译器:winavr #include #include 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< sei();//使能全局中断 while(1); } SIGNAL(SIG_OUTPUT_COMPARE0)//TIMER0 匹配中断服务程序 { OCR0 = sindata[x]; if( ++x > 127 ) x=0; } ****************************************************************** ***************************************************************** //定时器1捕捉中断 //CPU:mega32 //编译器:winavr #include #include int main(void) { TIMSK |= 1< while(1); } SIGNAL(SIG_INPUT_CAPTURE1)//TIMER1 捕捉中断服务程序 { //…… } ****************************************************************** ***************************************************************** //定时器1溢出中断 //CPU:mega32 //编译器:winavr #include #include int main(void) { DDRC |= (1 << 7);//PC7置为输出 TIMSK |= 1< while(1); } SIGNAL(SIG_OVERFLOW1)//TIMER1 溢出中断服务程序 { TCNT1H = 0X99;//先写高位,后写低位 TCNT1L = 0X88; PORTC ^= 1<<7;//PC7取反 } ****************************************************************** ***************************************************************** //定时器测频率 //定时器1计数,定时器2定时 //CPU:mega32 //编译器:winavr #include #include #define F 1000000 int main(void) { DDRC |= (1 << 7);//PC7置为输出 TIMSK |= 1< TCCR2 |= (1 << WGM01) | (0 << WGM00) | (1 << CS02) | (1 << CS01) | (1 << CS00);//CTC模式,1024分频 sei();//使能全局中断 TCCR1A |= (0< while(1); } SIGNAL(SIG_OUTPUT_COMPARE2)//TIMER2 匹配中断服务程序 { PORTC ^= 1<<7;//PC7取反 TCNT1H = 0; TCNT1L = 0; } ****************************************************************** ***************************************************************** //定时器测1捕捉中断 //可以测周期用 //CPU:mega32 //编译器:winavr #include #include int main(void) { TIMSK |= 1< while(1); } SIGNAL(SIG_INPUT_CAPTURE1)//TIMER1 捕捉中断服务程序 { TCNT1H = 0; TCNT1L = 0; } ******************************************************************
史海拾趣
|
一、 配置方式 ALTERA CPLD器件的配置方式主要分为两大类:主动配置方式和被动方式。主动配置方式由CPLD器件引导配置操作过程,它控制着外部存储器和初始化过程;而被动配置方式由外部计算机或控制器控制配置过程。根据数据线的多少又可以将CP ...… 查看全部问答> |
|
吉林大学电子学院考题: 2008-11-26 物理学院及材料学院本科生 一. 填空题 (每空一分,共21分) 1.构成静态工作点Q的4个要素是:( ),( ),( ),( ). 2 ...… 查看全部问答> |
|
这个压缩包里有一篇PDF文档是周立功公司给初学者学习C51时的指导文档,关于KEIL 软件的使用,比较基础,在这个文档中讲了一个关于点亮LED小灯的程序,我把它作了扩展。 点亮LED我用了三种方式,都作了详细的说明,程序可读性比较好。虽 ...… 查看全部问答> |
|
希望制作一个模块,一端将摄像头与蓝牙连接,另一端将蓝牙跟arm相连,通过arm将视频进行处理。希望承接这个项目的人曾做过相关项目。项目费用暂定2500吧(可另议)谢谢!… 查看全部问答> |
|
typedef struct{}raw_spinlock_t; 以上是在ADS下头文件中申明一个空结构体. 编译的时候出错: Error : C2491E: \'struct\'has no members 这个程序是从linux下移植过来的. 在linxu下编译并无错误. 请问ADS下如何声明一个空的结构体?… 查看全部问答> |
|
在用户态想操作SCSI卡,可是SCSI的驱动调用的是Windows的miniport接口,没有发现设备名,在用户态使用CreateFile的话,须知道设备名,怎么才能找到啊?… 查看全部问答> |




