完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
相关寄存器:TCCR0:第六位和第三位:00普通模式01相位修正PWM 10CTC模式11快速PWM模式。第5和第4位:端口操作位,对于不同的模式对应端口操作也不同。本节只说普通模式。00正常的IO口不与OC0引脚相连。(同51的定时器只起定时作用)。0,1,2位用来设置分频系数000无分频不工作。依次分频4,8.。。。256.分频系数越大定时器周期越大。 TCNT0:定时器0是一个八位的定时器,TCNT0是计数器同51的(TH0,TL0),一个是八位的一个是十六位的。 tiMSK:中断屏蔽寄存器。可使能相应的定时器溢出中断。对于定时器0只用到第0位和第1位。0位使能溢出中断。1位使能比较匹配中断(对于普通模式用不到先不管)。 TIFR:定时器中断标志位。第0溢出中断标志位。第1位比较匹配中断标志位。 OCR0:输出比较寄存器(用于PWM模式)。 说明:定时器0的普通模式。计数器初值可设置,最大值0xff时溢出,使能中断将会产生中断。 #includetypedef unsigned int uint; void time_init(void) { TCCR0&=~(1<<3); TCCR0&=~(1<<6);//3,6位清0设置为定时器普通模式 TCCR0&=~(1<<4); TCCR0&=~(1<<5);//无端口操作, TCCR0|=(1<<2); TCCR0&=~(1<<1); TCCR0&=~(1<<0);//设置预分频为256(0,1,2位) TIMSK|=(1<<0);//溢出中断使能 SREG|=(1<<7);//全局中断使能 } void main(void) { DDRA=0xff;//设置为输入 PORTA=0xff;//初始化端口为高 time_init();//定时器初始化 while(1); } #pragma interrupt_handler time_isr:10 //中断函数 void time_isr(void) { PORTA=~PORTA; } |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5131 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
7772 浏览 0 评论
3033 浏览 2 评论
3108 浏览 1 评论
10062 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 04:58 , Processed in 0.587583 second(s), Total 70, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号