欢迎来到天天文库
浏览记录
ID:53123290
大小:120.00 KB
页数:3页
时间:2020-04-01
《AVR定时器控制交通灯.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、//------------------------------------------------------------------//定时器Timer1练习,用定时器1模拟控制交通灯,定时时间为0.5s//外部定时器,内部时钟1MHz,即1秒时间内有1M次计数次数//---------------------------------
2、//1、东西向绿灯与南北向红灯亮5s;
3、//2、东西向绿灯灭,黄灯闪烁5次;
4、//3、东西向红灯与南北向绿灯亮5s;
5、//4、南北向绿灯灭,黄灯闪烁5次
6、//编译环境:IAR//-------
7、--------------------------
8、---------------------------------#include#defineuint_8unsignedchar#defineuint_16unsignedintuint_8operation_type=1,Time_Count=0;#defineGREEN_EW_ON()PORTC&=~(1<<2)//东西向指示灯打开#defineYELLOW_EW_ON()PORTC&=~(1<<1)#defineRED_EW_ON()PORTC&=
9、~(1<<0)#defineGREEN_EW_OFF()PORTC
10、=1<<2//东西向指示灯关闭#defineYELLOW_EW_OFF()PORTC
11、=1<<1#defineRED_EW_OFF()PORTC
12、=1<<0#defineGREEN_SN_ON()PORTC&=~(1<<5)//南北向指示灯打开#defineYELLOW_SN_ON()PORTC&=~(1<<4)#defineRED_SN_ON()PORTC&=~(1<<3)#defineGREEN_SN_OFF()PORTC
13、=1<<5//南北向指示灯关闭#d
14、efineYELLOW_SN_OFF()PORTC
15、=1<<4#defineRED_SN_OFF()PORTC
16、=1<<3#defineYELLOW_EW_BLINK()PORTC^=(1<<1)#defineYELLOW_SN_BLINK()PORTC^=(1<<4)voidtimer_init(){TCCR1B=0x04;//定时器1设置为256分频TCNT1=65536-(/2)/256;TIMSK
17、=(1<<2);//打开定时器0和定时器1的中断使能位SREG=0x80;//打开全局中断}intmain(){DDRC=0
18、xff;PORTC=0xff;timer_init();while(1);}#pragmavector=TIMER1_OVF_vect__interruptvoidTIMER1_server(void){TCNT1=65536-(/2)/256;//YELLOW_EW_BLINK();switch(operation_type){case1:GREEN_EW_ON();YELLOW_EW_OFF();RED_EW_OFF();RED_SN_ON();GREEN_SN_OFF();YELLOW_SN_OFF();if(++Time
19、_Count!=10)return;Time_Count=0;operation_type=2;break;case2:GREEN_EW_OFF();YELLOW_EW_BLINK();if(++Time_Count!=10)return;Time_Count=0;operation_type=3;break;case3:RED_EW_ON();GREEN_EW_OFF();YELLOW_EW_OFF();GREEN_SN_ON();YELLOW_SN_OFF();RED_SN_OFF();if(++Time_Count!=10
20、)return;Time_Count=0;operation_type=4;break;case4:GREEN_SN_OFF();YELLOW_SN_BLINK();if(++Time_Count!=10)return;Time_Count=0;operation_type=1;break;}}
此文档下载收益归作者所有