/* 程序名: mega16a
芯片16位定时
; 概括: 学会了控制8位定时器,16位定时器和它如出一辙,It's a piece of cake! 在芯片
上实现精确一秒闪烁... 心得 : 电子技术和音乐一样 ,都是一门艺术,令人回味... finish time: 2014年3月8日19:33:10; 作者 : 肖邦; */ #include
//头文件; typedef unsigned char uint8 ; //在程序中用 uint8 相当于写 unsigned char ; typedef unsigned int uint16; //用法同上; void reset_io(void) //初始化所有io口; {
A=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口; TC
1=0xff44; //设置定时器初始值,1毫秒溢出一次 0xff45==65536-(12兆/64分频*0.001秒); TCCR1B=0x03; //( 64分频 )设置定时器分频并开启定时器; PORTB=1<<2; while(1) { if(
FR&0X04) //一旦溢出标志位置一,就进入; { // PORTA^=0XFF; //物理引脚PA口跳变,此语句没用; num++; if(num==1000) {PORTA^=0XFF;num=0;} 每一毫秒num变量加一,加1000次是你秒; TCNT1=0XFF44; //回复初始值; TIFR|=0X04; //此语句很重要!!!!!!溢出标志位只有置一才会自动清零; } } }
-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。
自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。