AVR 实验二-中断.doc_第1页
AVR 实验二-中断.doc_第2页
AVR 实验二-中断.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(一) 實驗目的: 本實驗目的為讓使用者熟悉中斷的使用方法。(二) 程式動作:在此實習單元中需要使用中斷。我們使用了Timer1的溢位中斷。因此再程式中一開始要有Timer1的溢位中斷副程式,其程式規格為:interrupt TIM1_OVF void timer1_overflow(void) 中斷副程式。其餘尚需注意的部分為主程式中各暫存器的設定:1. DDRB:設定PORTB的資料流向2. TCCR1:Timer1的各種設定。3. TCNT1:計時暫存器。在此設定中斷時間。4. TIFR:中斷旗標暫存器。在此設定清除中斷旗標。5. TIMSK:中斷遮罩暫存器。在此致能溢位中斷。程式中設定了多支接腳為輸出並接上LED,每一顆LED因中斷時間的設定及計數值的不同而顯示不同的閃爍速度。(三) 電路圖(四) 程式碼#include #define aaa PORTB.0 /定義aaa為PB0#define bbb PORTB.1#define ccc PORTB.2#define ddd PORTB.3#define eee PORTB.4 int counter0=5; int counter1=100; int counter2=10;int counter3=2; interrupt TIM1_OVF void timer1_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=ddd; /500ms(0.5s)工作區 counter3-; counter2=10; if (counter3=0) eee=eee; /1s工作區 counter3=2; void main(void)DDRB=0xff; /將PORTB設為輸出TCCR1A=0; /Timer1的模式設定TCCR1B=1; /設定Timer1的時鐘脈波=外部震盪TCNT1=0x10000-775; /775為每100us中斷一次TIFR=0; /清除Timer1中斷旗標TIM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论