您的位置 首页 电子

MEGA16单片机定时器(16位)源代码

*程序名:mega16a芯片16位定时计数器;概括:学会了控制8位定时器,16位定时器和它如出一辙,It39;sapieceofcake!

/*

程序名: mega16a 芯片16位守时计数器;
归纳: 学会了操控8位守时器,16位守时器和它千篇一律,Its a piece of cake!
在芯片开发板上完成准确一秒闪耀…
心得 : 电子技术和音乐相同 ,都是一门艺术,令人回味…
finish time: 2014年3月8日19:33:10;
作者 : 肖邦;
*/
#include <avr/io.h> //头文件;
typedef unsigned char uint8 ; //在程序顶用 uint8 相当于写 unsigned char ;
typedef unsigned int uint16; //用法同上;
void reset_io(void) //初始化一切io口;
{
DDRA=0XFF;
PORTA=0X00;
DDRB=0XFF;
PORTB=0X00;
DDRC=0XFF;
PORTC=0X00;
PORTC|=1<<5; //12864液晶屏复位引脚置1;
PORTC&=~(1<<5); //12864 清零 (复位) ;
PORTC|=1<<5; //12864液晶屏复位引脚置1;
DDRD=0XFF;
PORTD=0X00;
}
int main(void) //主函数!!!!!
{
uint16 num=0;
reset_io(); //初始化io口;
TCNT1=0xff44; //设置守时器初始值,1毫秒溢出一次 0xff45==65536-(12兆/64分频*0.001秒);
TCCR1B=0x03; //( 64分频 )设置守时器分频并敞开守时器;
PORTB=1<<2;
while(1)
{
if(TIFR&0X04) //一旦溢出标志方位一,就进入;
{
// PORTA^=0XFF; //物理引脚PA口跳变,此句子没用;
num++;
if(num==1000) {PORTA^=0XFF;num=0;} 每一毫秒num变量加一,加1000次是你秒;
TCNT1=0XFF44; //回复初始值;
TIFR|=0X04; //此句子很重要!!!!!!溢出标志位只要置一才会主动清零;
}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/dianzi/317690.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部