资源描述:
《单B08王蕾实验二.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、评阅单片机实验报告二姓名王蕾学号0815212008时间2011.04.06地点机电信息大楼B526实验题目I/O口输入、输出实验一、实验目的1.学习I/O口的使用方法。2.学习延时子程序、查表程序的编写和使用。二、实验主要仪器和环境PC机、WAVE软件、仿真器+仿真头、实验板、电源等。三、实验说明本实验第一部分通过单片机的I/O口控制LED的亮灭,从而观察I/O口的输出。实验第二部分通过单片机的I/O口接受按键动作信息,然后通过LED和数码管指示。通过本实验学生可以掌握单片机I/O口输入输出的控制方法,同时也可以掌握单片机延时子程序、查表程序的编写和调
2、试方法。要求预先编写好程序并通过伟福仿真软件调试。四、实验内容1、P0口做输出口,接八只LED,编写程序,使LED循环点亮,间隔0.5秒。2、P1.0--P1.7作输入口接拨动开关S0--S7;P0.0--P0.7作输出口,接发光二极管L1—L8,编写程序读取开关状态,将此状态在对应的发光二极管上显示出来,同时将开关号(0—7)显示在LED数码管上。编程时应注意P1作为输入口时应先置1,才能正确读入值。五、实验电路连线P0.0----LED0P1.0-----S1P0.1----LED1P1.1-----S2P0.2----LED2P1.2-----S3
3、P0.3----LED3P1.3------S4P0.4----LED4P1.0------S5P0.5----LED5P1.0------S6P0.6----LED6P1.0------S7P0.7----LED7P1.0------S8实验1:P0口循环点灯实验2:P1、P0口输入输出abcdefgh(dp)abcdefgh(dp)P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0实验2:LED数码管各段与I/O的连接六、实验程序流程框图、实验程序第一部分程序:ORG0000H;设定程序汇编起始地址MOVA,#03H;设置初始值0000
4、0011LOOP:MOVP0,A;点亮LED0和LED1ACALLDELAY;调用延时子程序RLA;将A里面的00000011左移一位成00000110SJMPLOOP;循环点亮LED灯DELAY:;0.5S的延时程序DEL:MOVR7,#10DEL1:MOVR6,#246DEL2:MOVR5,#100DEL3:DJNZR5,DEL3;2*100=200μSDJNZR6,DEL2;(200+1+2)*246=49938μSDJNZR7,DEL1;(49938+1+2)*10=499410usRET;返回主程序开始延时设置初始值数据输出左移一位开始读入P1
5、口值置计数初值=0P1口置1将读入的值输出到P0P1=0FFH?YN输入值右移1位到CyCy=0?N计数值+1Y以计数值查段码表段码输出到P2第二部分程序:ORG0000;设定起始地址SJMPMAINMAIN:MOVP1,#0FFH;P1口置1SEARCH:MOVA,P1;读P1口CJNEA,0FFH,LED;查询是否有按键按下SJMPSEARCH;等待LED:MOVP0,A;有键按下,将值读入P0ACALLDELAY;调用延时子程序MOVR5,#00H;置计数初值=0SHIFT:RRCA;输入右移1位JNCLOOKFOR;若Cy=0,则数码显示INCR
6、5;Cy=1,则计数加1SJMPSHIFT;跳回继续移位LOOKFOR:MOVDPTR,#TAB;所查表的首地址赋给DPTRMOVA,R5;计数值做偏移量MOVCA,@A+DPTRMOVP2,A;显示相应按键值SJMPSEARCHTAB:DB60H,0DAH,0F2H,66H;DB0B6H,0BEH,0E0H,0FEH;DELAY:;0.5S的延时程序DEL:MOVR7,#10DEL1:MOVR6,#246DEL2:MOVR5,#100DEL3:DJNZR5,DEL3DJNZR6,DEL2DJNZR7,DEL1RETSJMP$END七、实验及程序的分析和
7、讨论(结合思考题)1、实验1欲改变LED循环的方向程序应如何修改?循环的时间间隔由什么决定?写出间隔时间为1秒的延时程序并说明计算方法。答:要改变LED循环的方向,只需将程序中的“RLA”换成指令“RRA”循环的时间间隔由延时子程序决定间隔时间为1秒的延时程序如下:DELAY:DEL:MOVR7,#20DEL1:MOVR6,#246DEL2:MOVR5,#100DEL3:DJNZR5,DEL3;2*100=200μSDEL4:DJNZR6,DEL2;(200+1+2)*246=49938μSDJNZR7,DEL1;(49938+1+2)*20=99882
8、0RET;指令执行时间1μS计算方法是:998820+1+1=99822us1、