实验二 流水灯_第1页
实验二 流水灯_第2页
实验二 流水灯_第3页
实验二 流水灯_第4页
实验二 流水灯_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

实验四中断应用--流水灯的设计实验一、设计要求:利用外中断接口接一个外部中断输入,同时使用单片机定时器中断,通过P1口连接8个发光二极管显示中断的作用:利用定时方式,使8只LED灯每隔1s左移一次,当外部中断出现时8个LED灯闪烁5次,闪烁完后返回继续中断前的状态运行。二、实验目的:理解中断嵌套及中断优先级的概念和掌握其编程方法。三、电路设计:1.原理图2.使用电路模块:MCU板、006板3.硬件连线表:MCU模块P1.0~P1.7P3.2+5VGND006板LED1~LED8SW1+5VGND四、程序设计五、实验效果:外部中断未发生时,系统通过定时器定时的方法,使LED做流水灯操作;当有外中断发生,LED闪烁5次,完毕返回。六、实验步骤:1.Proteus仿真a.在Proteus中打开设计文档*.DSN;b.建立实验程序并编译,加载hex文件,仿真;c.如不能正常工作,打开调试窗口进行调试。2.实验板验证a.用ISP下载hex程序到MCUb.按连接表连接电路c.检查验证结果七、源程序: ORG0000H LJMPSTAR ORG0003H;外中断0入口 LJMPEXT ORG000BH;定时器0入口 LJMPTIM STAR: MOVSP,#70H MOVTMOD,#01H;定时器0模式1 MOVTH0,#0D0H;定时10ms MOVTL0,#0F0H SETBTR0 SETBET0 SETBEX0 SETBEA SETBPX0;外中断0优先级高 MOVR3,#100;每1秒钟灯左移一次 MOVR1,#0FEH ;流水灯初值 LJMP$;定时中断服务子程序 TIM: PUSHACC PUSHPSW MOVTH0,#0D8H MOVTL0,#0F0H DJNZR3,LOOP;1秒钏没到返回 MOVA,R1 ;1秒钟到了,流水灯左移一位 MOVP1,A RLA MOVR1,A ;保存流水灯的状态返回 LOOP: POPPSW POPACC RETI;外中断服务子程序 EXT: PUSHACC PUSHPSW MOVA,#0 MOVR2,#10 LOOP1: MOVP1,A CALLDELAY CPLA DJNZR2,LOOP1 POPPSW POPACC RETI;延时 DELAY: MOVR5,#20 D1: MOVR6, #20 D2: MOVR7,#248 DJNZR7,$ DJNZR6,D2 DJNZR5,D1 RET END八、扩展实验改用外部中断1和定时器1来实现上述效果。九、Proteus仿真步骤:1.建立、保存、打开文件单击菜单中的“file→newdesign”,建立一个新的空白文件。单击菜单中的“file→savedesignas”,取文件名后再单击“保存”按钮,则完成新建文件操作,文件名可取为exp4.DSN,后缀DSN是系统自动加上去的。若文件已存在,则可单击“file→loaddesign”选择所要求的设计文件(exp4.DSN)2.设计、改变图纸大小系统默认图纸大小为A4,若要改变图纸大小,单击“System→SetSheetSize”,在出现的窗口中选择或设计图纸的大小。3.从库中选取元器件单击元器件选择按钮“P”,打开了“PickDevices”窗口,在“Keywords”栏中输入元器件的关键字,如“AT89C51”,则可看到元器件列表,双击“AT89C51”便可将它选入对象选择器中。4.元器件操作放置:在对象选择器中选取要放置的元器件,再在ISIS编辑区空白处单击。选中:单击编辑区某对象,默认为红色高亮显示。取消选择:在编辑区的空白处单击。移动:左键单击对象,再按住鼠标左键拖动。转向:对对象选择器中的对象转向,单击对象方位控制的相应按钮;对编辑区的对象转向,右击操作对象,再单击对象方位控制的相应按钮。复制:选中对象后,单击“复制”按钮。粘贴:复制后,单击“粘贴”按钮,然后在编辑区单击。删除:两次右击对象块操作(多个对象同时操作):选中操作对象,再单击相应工具按钮5.放置电源、地(终端)6.设计元器件属性右击选中再单击设计对象,跳出属性设计窗口,可进行属性设计。7.连接电路8.仿真加载目标文件和设计时钟频率,选中并单击图中的单片机,弹出加载目标文件和设置时钟频率的窗口,单击在“programfile”栏可侧的打开按钮,弹出文件列表,从表中选择出相应的目标代码文件*.HEX;在“clockfrenquency”栏中填上时钟频率,再单击OK,则完成了。仿真:单击仿真按钮,则全速仿真。流水灯1#include<at89x51.h>#defineledP1voiddelay(void){unsignedinti,j;for(i=299;i>0;i--)for(j=103;j>0;j--);}main(){unsignedchartemp;unsignedchari;while(1){temp=0xfe;for(i=0;i<8;i++){led=temp;delay();temp=temp<<1; temp=temp|0x01;}}}流水灯2#include"reg52.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedintvoiddelay (ucharx){ uinty; for(;x>0;x--) for(y=500;y>0;y--);}voidmain(){ uchara=0x7f; ucharb=0x7f; ucharc; while(1) { for(c=7;c>0;c--) { P1=b; b=_cror_(a,1); a=b; delay(100); } for(c=7;c>0;c--) { P1=b; b=_crol_(a,1); a=b; delay(100); } a=0x7f; b=0x7f; }}流水灯+改程序变换花样voidint_0()interrupt{ uchari; for(i=0;i<5;i++) { P1=0x00; delay(20); P1=0xff; delay(20

温馨提示

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

评论

0/150

提交评论