打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
avr单片机8位定时器LED精确1秒闪烁程序
/*
程序名 (program name): 定时器程序 (LED精确一秒闪烁)
芯片名(chip name): 艾特梅尔公司 MEGA16A 芯片;
概述:   利用8位定时器0 完成精确定时,其中,定时器0溢出 重设初始值和溢出位清零很重要,
一旦定时器溢出,溢出标志位不会自动清零,注意!此时需要向定时器0溢出标志位位TOV0
写"1",它就会自动清零;TOV0在TIFR寄存器的末位,溢出位不能位寻址(不能位操作);
完成(finish time) : 2014年2月28日13:50:14
噢 ,,,'主码' 时间了,,,
*/
#include <avr/io.h>
#include <avr/interrupt.h>    //中断头文件..
typedef unsigned char uint8;
typedef unsigned int uint16;
io()     //初始化所有IO口函数;
{
DDRA=0Xff;
PORTA=0Xff;
DDRB=0XFF;
PORTB=0X00;
DDRC=0XFF;
PORTC=0X00;
DDRD=0XFF;
PORTD=0XFF;
}
mcu()  //
{
TCNT0=0x6A;//定时器初始值寄存器,设置 初始值 (此寄存器的值自增到255再加一就是0了);
TCCR0=0x02;//定时器0分频设置寄存器  定时器8分频.
//定时器公式:   256 - (12兆(机器频率) ÷ 分频) X (溢出时间) =初始值;
}
int main(void)
{
uint16 i=0,j=0;
io();  //初始化所有io口;
mcu(); //设置定时器分频和初始值;
PORTB=0X04; //LED共阳极使能;
while(1)
{
if((TIFR&0X01)==1)   //如果定时器溢出;
{
j++;
TCNT0=0x6a;    //重设初始值,溢出时间是0.0001秒;
TIFR|=0X01;    //!!!!!!!!!这个很重要,一定要将溢出位置一,它就会自己清零;
}
if(j ==9932)//溢出一次用时100微妙,变量j加一,加一万次用时1秒,逻辑分析仪捕捉到
{          //PA口跳变时间有一点误差,稍作调整,,
j=0;
PORTA^=0XFF;
}
}
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
细数pic单片机,pic单片机与51/AVR单片机IO操作
avr单片机定时计数器
单片机按键处理方式(一)——典型的按键处理方式
单片机I/O口的结构的详解
AVR单片机
51 AVR PIC 等单片机区别
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服