您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实验三 中断、定时器实验
单片机实验报告三姓名学号时间地点B526实验题目实验三中断、定时器实验一、实验目的1.学习外部中断和定时器的工作原理及使用方法。2.学习外部中断和定时器的初始化程序、应用程序的编写和调试。二、实验主要仪器和环境PC机、WAVE软件、仿真器+仿真头、实验板、电源等。三、实验说明本实验1通过开关向单片机提出中断请求,单片机响应中断进行计数,并通过LED数码管指示出计数值,从而观察中断的请求、响应的过程。实验2通过单片机的定时器产生延时,模拟交通灯控制的方法。通过本实验学生可以掌握单片机中断和定时器的工作原理及使用方法以及中断和定时器的初始化程序、应用程序的编写和调试。四、实验内容1、开关S0—S1连接P3口做输入,P0输出接LED数码管,通过S2产生外部中断请求(/INT0)信号,在中断服务程序中完成十进制递增计数,并将计数值显示在LED数码管上,要求分别采用电平触发和边沿触发。按上述要求完成S3产生外部中断请求。编写初始化程序和中断服务程序。(注意开关抖动处理)2、P1.0--P1.7作输入口接拨动开关S0--S7;P0.0--P0.7作输出口,接发光二极管L1—L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出来,要求发光二极管(LED)按亮0.5秒、暗0.5秒闪烁,LED亮的同时,从P2.0送出1kHz的音频信号到音频驱动电路发声(持续0.5秒),将开关编号(0—7)显示在LED数码管上。要求延时采用内部定时器T0,音频的产生采用内部定时器T1。编写初始化程序和中断服务程序。五、实验1电路连线P0.0----LED0P3.2(/INT0)-----S2P0.1----LED1P0.2----LED2评阅abcdefgh(dp)P0.3----LED3P0.4----LED4P0.5----LED5P0.6----LED6P0.7----LED7外部中断请求输入abcdefgh(dp)P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0实验2:LED数码管各段与I/O的连接六、实验程序流程框图、实验程序实验一:ORG0000H;设定程序起始地址为0000HAJMPMAINORG0003HAJMPINT_0ORG0013HAJMPINT_1ORG0100HMAIN:CLREA;关CPU中断SETBEX0;开外部中断0SETBEX1;开外部中断1CLRIT0;设置外部中断0为电平触发方式SETBIT1;设置外部中断1为跳沿触发方式MOVR0,#00H;R0设初值为0MOVDPTR,#TABLE;DPTR指向表头ACALLDISP;初始显示0SETBEA;开总中断SJMP$;等待中断INT_0:CLREA;关总中断ACALLDELAY;延时消抖JBP3.2,OUT0;判断是否真的触发,P3.2为1时跳转至OUT0,为0时继续执行INCR0;R0加一CJNER0,#0AH,DISP0;若R0不等于10则跳转到DISP0显示MOVR0,#00H;R0等于10时清零DISP0:ACALLDISP;调用显示子程序OUT0:SETBEA;重开总中断RETIINT_1:CLREA;边缘触发ACALLDELAYJBP3.3,OUT1INCR0CJNER0,#0AH,DISP1MOVR0,#00HDISP1:ACALLDISPOUT1:SETBEARETI;显示子程序DISP:MOVA,R0MOVCA,@A+DPTRMOVP0,ARET;延时子程序DELAY:MOVR5,#100;D1:MOVR6,#20D2:MOVR7,#248DJNZR7,$DJNZR6,D2DJNZR5,D1RETTABLE:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管编码数表END程序流程图:程序开始中断初始化设置打开两个外部中断,并将INT0设为电平触发方式,将INT1设为边缘触发方式等待中断关总中断消抖延时P3.2为1?R0加一否否R0=10?给R0清零显示子程序SETBEA是是关总中断消抖延时P3.3为1?R0加一否否R0=10?SETBEA是是是是否否否否是是实验二:ORG0000H;设定程序起始地址为0000HAJMPMAINORG000BH;中断一入口地址AJMPT0ORG001BH;中断二入口地址AJMPT1ORG0100HMAIN:MOVSP,#66H;设置堆栈指针MOVTMOD,#11H;设置定时器中断0、1都工作在方式1MOVTL0,#0B0H;TL0装初值MOVTH0,#03CH;TH0装初值,3CB0H=15536,故定时50msMOVTL1,#0CH;TL1装初值MOVTH1,#0FEH;TH1装初值,FE0CH=65036,故定时0.5ms,产生1KHz的信号SETBPT1MOVIE,#0AH;允许T0、T1中断SETBEA;开总中断SETBTR0;开中断T0,CLRTR1;关闭T1MOVR2,#00H;R2计数清0MOVR0,#10;设置T0中断次数MOVP1,#0ffH;P1口先赋1SEARCH:MOVA,P1CJNEA,#0FFH,LOOK;判断有无按键按下,A不等于FFH是跳转到LOOKMOVP2,#00H;无按键则数码管不显示MOVP0,#00H;无按键则LED不显示SJMPSEARCHLOOK:ACALLDELAY10MS;延时消抖CJNEA,#0FFH,FIND;判断有无按键按下,A不等于FFH是跳转到FINDSJMPSEARCH;A等于FFH,则返回SEARCHFIND:RRCA;检查是哪一个按键按下,A中值右移JNCDISPLAY;如果进位位为0则跳转到DISPLAY,执行数码管转换INCR2;若进位位为一,计数值R2加一AJMPFIND;跳回FIND,让A中的值继续右移DISPLAY:MOVDPTR,#TAB;显示子程序,装表头地址到DPTRMOVA,R2MOVCA,@A+DPTR;查表地址MOVP2,A;;显示SJMPMAINTAB:DB0FCH,60H,0DAH,0F2H,66H;;数码管数表DB0B6H,0BEH,0E0H,0FEH,0F6H;T0:MOVTL0,#0B0H;定时器中断0子程序MOVTH0,#03CH;设初值为3CB0H=15536,定时50msDJNZR0,RETURN;50ms循环10次MOVR0,#0AH;循环次数控制位R0重新装入10MOVA,P1CJNEA,#0FFH,LOOP1;判断有没有按键按下,有键按下则跳转到LOOP1MOVP2,#00H;无按键则数码管不显示MOVP0,#00H;无按键则LED不显示SJMPRETURN;跳转到RETURNLOOP1:CPLF0JNBF0,LOOP2SETBTR1MOVA,P1CPLAMOVP0,ASJMPRETURNLOOP2:CLRTR1MOVP0,#00HRETURN:RETIT1:MOVTL1,#0CH;重装初值MOVTH1,#0FEHDO:CPLP2.0;有按键按下则送1KHz的信号RETIDELAY10MS:;10MS延时程序MOVR7,#20D1:MOVR6,#250DJNZR6,$DJNZR7,D1RETEND流程图:七、思考题1、外部中断采用电平触发和边沿触发处理方法上又何不同?解:a.电平触发可以消除抖动,而沿触发消除抖动就没有意义了。b.电平触发只要P3.2是开始初始化有键按下?去抖输入值右移一位到Cy有键按下?F0=0?计数值加1查表,送数码管显示Cy=0?开T1中断,蜂鸣器响全灭了LED,关T1中断定时器0中断NNNYYYF0取反是否有键按下?够0.5秒否?NNNY中断返回YY低电平中断就会一直响应,而沿触发则只有下降沿的时候中断才能响应。此实验中电平触发在中断服务程序中加了一段300ms的延时程序,来防止计数过快人无法反应过来的情况。而沿触发方式则没有这一项。2、阐述定时器几种工作方式所实现的功能及应用时的注意事项。解:工作方式0,为13位定时器/计数器。工作方式1,为16位定时器/计数器。工作方式2,8位常数自动重新装载的定时器计数器。工作方式3,仅适用于T0,T0分成两个8位计数器,T1停止工作。应用时应注意中断服务程序不能过长,如果过长有可能导致中断丢失的情况。3、试画出音频驱动电路的原理图并分析工作原理和作用。工作原理为,当片机IO口为高电平是三极管导通,经过电流放大驱动蜂鸣器。低电平时截止没有电流流过蜂鸣器无响声。作用是增加单片机的带负载能力。八、程序测试报告在实验一中用按键S0控制外部中断电平触发,用按键S1控制外部中断边缘触发,经过实验验证,两种触发方式都可进行计数。在实验二中P1.0--P1.7接开关S0--S7;P0.0--P0.7接发光二极管L1—L8,开关的状态可以在对应的发光二极管上显示,并且发光二极管(LED)成功满足要求“按亮0.5秒、暗0.5秒闪烁,LED亮的同时,从P2.0送出1kHz的音频信号到音频驱动电路发声(持续0.5秒),将开关编号(0—7)显示在LED数码管上。”可见经验证程序是无误的。九、体会这次实验比较有难度,我用了较久的时间才理解了实验的原理和编程方法,这个过程中我收获了很多。从这次实验中我理解了外部中断和定时器的工作原理及使用方法,同时学习了外部中断和定时器的初始化程序、应用程序的编写和调试,这对今后我的单片机学习及课程设计都将很有帮助。
本文标题:实验三 中断、定时器实验
链接地址:https://www.777doc.com/doc-6069208 .html