欢迎来到天天文库
浏览记录
ID:38192277
大小:42.50 KB
页数:3页
时间:2019-05-24
《AVR 实验二-中断》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、(一)實驗目的:本實驗目的為讓使用者熟悉中斷的使用方法。(二)程式動作:在此實習單元中需要使用中斷。我們使用了Timer1的溢位中斷。因此再程式中一開始要有Timer1的溢位中斷副程式,其程式規格為:interrupt[TIM1_OVF]voidtimer1_overflow(void){中斷副程式}。其餘尚需注意的部分為主程式中各暫存器的設定:1.DDRB:設定PORTB的資料流向2.TCCR1:Timer1的各種設定。3.TCNT1:計時暫存器。在此設定中斷時間。4.TIFR:中斷旗標暫存器。在此設定清除中斷旗標。5.TIMSK:中斷遮罩
2、暫存器。在此致能溢位中斷。程式中設定了多支接腳為輸出並接上LED,每一顆LED因中斷時間的設定及計數值的不同而顯示不同的閃爍速度。(三)電路圖(四)程式碼#include#defineaaaPORTB.0//定義aaa為PB0#definebbbPORTB.1#definecccPORTB.2#definedddPORTB.3#defineeeePORTB.4intcounter0=5;intcounter1=100;intcounter2=10;intcounter3=2;interrupt[TIM1_OVF]voidt
3、imer1_overflow(void){TCNT1=0x10000-775;//775為每100us中斷一次(每數775次時的時間(為100us)剛好產生一次中斷)aaa=~aaa;//100us工作區;每100us,led反相(PB0)counter0--;if(counter0==0){bbb=~bbb;//0.5ms(500us)工作區counter1--;counter0=5;}if(counter1==0){ccc=~ccc;//50ms工作區counter2--;counter1=100;}if(counter2==0){ddd
4、=~ddd;//500ms(0.5s)工作區counter3--;counter2=10;}if(counter3==0){eee=~eee;//1s工作區counter3=2;}}voidmain(void){DDRB=0xff;//將PORTB設為輸出TCCR1A=0;//Timer1的模式設定TCCR1B=1;//設定Timer1的時鐘脈波=外部震盪TCNT1=0x10000-775;//775為每100us中斷一次TIFR=0;//清除Timer1中斷旗標TIMSK=0x04;//設定Timer1溢位中斷致能工作#asmsei//中斷
5、致能#endasmwhile(1);}
此文档下载收益归作者所有