微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MEGA16单片机定时器(16位)源代码

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

时间:12-01 来源:互联网 点击:
/*

程序名: 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; //此语句很重要!!!!!!溢出标志位只有置一才会自动清零;

}

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top