1长安大学实验报告2015~2016学年第1学期课程名称:单片机实训与综合实验班级:2014320101学生姓名:严定鑫学号:201432010131同组同学:马国伟实验一:使用μVision集成开发工具设计调试汇编语言程序2一、实验目的1.熟悉使用uVision集成开发工程编写、编译、调试单片机汇编语言程序的方法2.掌握A51汇编语言的编程方法3.领会汇编语言程序设计的思想和方法二、实验内容1.学习uVision集成开发环境的使用及A51编程范例2.编写程序,完成二进制向BCD码的转换3.编写程序,完成BCD码向ASCII码的转换三、主要仪器设备1.计算机2.uVvision集成开发环境四、实验过程及结果1,uvision操作界面如下,首先要建立一个工程。然后进行如下选择:之后就可以编写C语言程序了。2,二进制转BCD码。BINNUMEQU30HORG0000HMOVA,#BINNUMMOVR0£¬#10HACALLBINBCD13SJMP$BINBCD1:MOVB,#100DIVABMOV@,AXCHA,BMOVB,#10DIVABSWAPAADDA,BINCR0MOV@R,ARETEND3,BCD码转ASCLL码:BINNUMEQU30HORG0000HMOVA,#BINNUMMOVR1,#10HACALLBINTASCSJMP$BINTASC:MOVA,R1ANLA,#0FHADDA,#30HMOVR1,ARETEND4实验小结在本实验中,由于是第一次上机操作,故出现了很多问题,比如对这么操作环境的陌生,不知道按键的意义,以及不知道该如何调试,编写的程序的正确性等。在小组同学的帮助下,以及询问老师,终于掌握了一些基本的操作,使得该实验比较的成功。实验二:使用μVision集成开发工具设计、调试C51语言程序一、实验目的1)熟悉Keil集成开发工具编写、编译、调试C51语言程序的方法;2)领会C51编程语言程序的基本思想和方法。二、实验内容1)编写程序完成定时器/计数器1采用方式0产生周期为500μs的等宽正方波连续脉冲,并由P1.0输出,以查询方式完成。(设单片机晶振频率为12MHz)2)将片内RAM中的21H和22H单元存放的无符号数乘以4放入20H、21H和22H单元中。三、主要仪器设备1)计算机2)μVision集成开发环境四、实验过程及结果1,程序:ORG0000HLJMPSTARTORG0030HSTART:MOVTMOD,#00HMOVTH1,#0F8HMOVTL1,#06HMOVIE,#00HSETBTR1LOOP:JBCTF1,LOOP1AJMPLOOP5LOOP1:MOVTH1,#08FHMOVTL1,#06HCLRTF1CPLP1.0AJMPLOOPEND2,将片内RAM中的21H和22H单元存放的无符号数乘以4放入20H、21H和22H单元中。ORG0000HMOV20H,#03HCLRCMOVA,22HMOVA,21HRLCAMOV21H,AMOVA,20HRLCAMOV20H,AMOVA,22HRLCAMOV22H,AMOVA,21HRLCAMOV21H,AMOVA,20HRLCAMOV20H,ASIMP$END分部执行后如下6最后A中数0x0c即为12.五、实验小结在本次试验中出现了调试结果有无得情况,经过查验是单片机型号设置有误。在实验2里,开始设置的初值为0.导致调试结果里A无变化,修改后,正常。实验三:跑马灯实验一、实验目的1.熟悉51单片机并行口的编程。2.熟悉共阴性LED的工作特性及控制方法3.熟悉单片机实验开发板的设计原理4.学习单片机在系统烧录程序(在系统编程ISP)的方法二、实验内容1.使用汇编语言编写程序,实现数码管的跑马灯实验编写A51的汇编语言程序,编译成功后,使用ISP下载软件下载程序三、主要仪器设备1.计算机2.uVision集成开发环境3.ISP编程软件4.实验开发板四、实验过程及结果#includereg51.h#defineMAIN_Fosc11059200Ltypedefunsignedcharu8;typedefunsignedintu16;typedefunsignedlongu32;sfrP4=0xC0;sfrP5=0xC8;sfrP6=0xE8;sfrP7=0xF8;sfrP1M1=0x91;sfrP1M0=0x92;sfrP0M1=0x93;sfrP0M0=0x94;sfrP2M1=0x95;sfrP2M0=0x96;sfrP3M1=0xB1;7sfrP3M0=0xB2;sfrP4M1=0xB3;sfrP4M0=0xB4;sfrP5M1=0xC9;sfrP5M0=0xCA;sfrP6M1=0xCB;sfrP6M0=0xCC;sfrP7M1=0xE1;sfrP7M0=0xE2;sbitP00=P0^0;sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitP04=P0^4;sbitP05=P0^5;sbitP06=P0^6;sbitP07=P0^7;sbitP10=P1^0;sbitP11=P1^1;sbitP12=P1^2;sbitP13=P1^3;sbitP14=P1^4;sbitP15=P1^5;sbitP16=P1^6;sbitP17=P1^7;sbitP20=P2^0;sbitP21=P2^1;sbitP22=P2^2;sbitP23=P2^3;sbitP24=P2^4;sbitP25=P2^5;sbitP26=P2^6;sbitP27=P2^7;sbitP30=P3^0;sbitP31=P3^1;sbitP32=P3^2;sbitP33=P3^3;sbitP34=P3^4;sbitP35=P3^5;sbitP36=P3^6;sbitP37=P3^7;sbitP40=P4^0;sbitP41=P4^1;8sbitP42=P4^2;sbitP43=P4^3;sbitP44=P4^4;sbitP45=P4^5;sbitP46=P4^6;sbitP47=P4^7;sbitP50=P5^0;sbitP51=P5^1;sbitP52=P5^2;sbitP53=P5^3;sbitP54=P5^4;sbitP55=P5^5;sbitP56=P5^6;sbitP57=P5^7;voiddelay_ms(u8ms);voidmain(void){P0M1=0;P0M0=0;//ÉèÖÃΪ׼˫Ïò¿ÚP1M1=0;P1M0=0;//ÉèÖÃΪ׼˫Ïò¿ÚP2M1=0;P2M0=0;//ÉèÖÃΪ׼˫Ïò¿ÚP3M1=0;P3M0=0;//ÉèÖÃΪ׼˫Ïò¿ÚP4M1=0;P4M0=0;//ÉèÖÃΪ׼˫Ïò¿ÚP5M1=0;P5M0=0;//ÉèÖÃΪ׼˫Ïò¿ÚP6M1=0;P6M0=0;//ÉèÖÃΪ׼˫Ïò¿ÚP7M1=0;P7M0=0;//ÉèÖÃΪ׼˫Ïò¿Úwhile(1){P17=0;delay_ms(250);delay_ms(250);P17=1;P16=0;delay_ms(250);delay_ms(250);P16=1;P47=0;delay_ms(250);delay_ms(250);P47=1;P46=0;delay_ms(250);9delay_ms(250);P46=1;}}voiddelay_ms(u8ms){u16i;do{i=MAIN_Fosc/13000;while(--i);//14Tperloop}while(--ms);}生成HEX文件后,下载到单片机里。就会看到4个小等依次点亮,循环。六、实验小结:本次跑马灯实验中,进一步对单片机以及uvidion编程软件有了进一步的了解,淡然也遇到了很多问题,比如生成hex文件时找不着放在那个文件夹里,下载时寻找单片机型号上花费很多时间,在慢慢地摸索中,总算是能比较流畅的操作了。实验四单片机外部中断实验一.实验目的1.通过实验掌握五一单片机的中断原理2.熟悉使用C51语言编写中断处理程序的方法3.进一步熟悉单片机实验开发板的设计原理4.进一步熟悉单片机在系统烧录程序(在系统编程ISP)的方法二.实验内容1.使用C51语言编写程序,初始化中断完成中断处理,实现对拨码开关拨动次数的技术,参照11.4节中的有关部分,在调试模式下使用软件仿真调试编写的程序,2.在正确完成上一步程序后,继续编写程序调用实验三群里的显示接口函数实现将播吗开关的波动次数,显示在LED数码管上,只显示有效的位数无效的位数不显示编写好程序后使用ISP编程软件将二进制代码文件下载至实验板中运行,拨动开关观察数码管的显示3.在正确完成第一步的基础上,继续编写程序,调用实验二整理的串口输出函数,实现将拨码开关的拨动次数从串行口输出,并调整好显示格式,使其美观易懂。下载程序后,拨动开关,使用串行口调试软件查看输出结果。串口调试软件额使用请参考12.2.2节中的有关部分4.完成上述程序胡,编写程序将上述功能结合起来,实现将拨码开关的拨动次数在LED数10码管上显示的同时也通过串行口输出三.主要仪器设备1.计算机2.uVision集成开发环境3.ISP编程软件4.实验开发板4.交叉式串行口通信线四.实验过程及结果程序代码如下:#includereg51.h#defineMAIN_Fosc11059200L//¶¨ÒåÖ÷ʱÖÓtypedefunsignedcharu8;typedefunsignedintu16;typedefunsignedlongu32;sfrP4=0xC0;sfrP5=0xC8;sfrP6=0xE8;sfrP7=0xF8;sfrP1M1=0x91;//PxM1.n,PxM0.n=00---Standard,01---push-pullsfrP1M0=0x92;//=10---pureinput,11---opendrainsfrP0M1=0x93;sfrP0M0=0x94;sfrP2M1=0x95;sfrP2M0=0x96;sfrP3M1=0xB1;sfrP3M0=0xB2;sfrP4M1=0xB3;sfrP4M0=0xB4;sfrP5M1=0xC9;sfrP5M0=0xCA;sfrP6M1=0xCB;sfrP6M0=0xCC;sfrP7M1=0xE1;sfrP7M0=0xE2;sbitP00=P0^0;sbitP01=P0^1;sbitP02=P0^2;sbitP03=P0^3;sbitP04=P0^4;11sbitP05=P0^5;sbitP06=P0^6;sbitP07=P0^7;sbitP10=P1^0;sbitP11=P1^1;sbitP12=P1^2;sbitP13=P1^3;sbitP14=P1^4;sbitP15=P1^5;sbitP16=P1^6;sbitP17=P1^7;sbitP20=P2^0;sbitP21=P2^1;sbitP22=P2^2;sbitP23=P2^3;sbitP24=P2^4;sbitP25=P2^5;sbitP26=P2^6;sbitP27=P2^7;sbitP30=P3^0;sbitP31=P3^1;sbitP32=P3^2;sbitP33=P3^3;sbitP34=P3^4;sbitP35=P3^5;sbitP36=P3^6;sbitP37=P3^7;sbitP40=P4^0;sbitP41=P4^1;sbitP42=P4^2;sbitP43=P4^3;sbitP44=P4^4;sbitP45=P4^5;sbitP46=P4^6;sbitP47=P4^7;sbitP50=P5^0;sbitP51=P5^1;sbitP52=P5^2;sbitP53=P5^3;sbitP54=P5^4;sbitP55=P5^5;sbitP56=P5^6;sbitP57=P5^7;12#defineDIS_DOT0x20#defineDIS_BLACK0x10#def