单片机实验报告
单片机实验报告

单片机实验报告实验一:存储器块清零或赋值一、实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二、实验内容指定存储器中某块的起始地址和长度,要求将其内容清零或赋值。
例如将4000H开始的10个字节内容清零或全部赋值为33H。
注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
三、实验仪器微机、VW,WA VE6000编程环境软件,(单片机实验箱)Lab6000/Lab6000通用微控制器MCS51实验四、实验步骤1、新建工程文件。
(注意:文件不要用中文名称保存时不要用中文路径)2、编写程序。
3、运行和调试过程。
外部数据存储器(4000H为首地址的10个字节)中初始状态(随便赋值FFH):单步执行程序,观察SFR中外部地址指针的变化;全速执行程序,可以看到外部数据存储器已赋值33H:五、实验结果可以看到外部数据存储器已赋值33H:六、问题讨论本次实验能够清楚地了解存储器中数据的移动和赋值过程,通过单步执行,对于每一步的指令操作过程能够了解如何执行,查看每条语句涉及到的寄存器和存储器内容的变化结果。
同时,学习掌握汇编程序的编写和调试过程。
实验二:存储块移动一、实验目的1 熟悉51汇编语言程序结构。
2 熟悉循环结构程序的编写,进一步熟悉指令系统。
3 熟悉编程环境和程序的调试。
二、实验内容将指定源地址(3000H)和长度(10字节)的存储块移动到目的地址(3050H)。
实验报告(单片机实验报告)

1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。
已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。
请编程。
org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。
R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。
同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。
若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。
30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。
单片机实训报告总结

单片机实训报告总结篇一:51单片机实训报告“51单片机”精简开发板的组装及调试实训报告为期一周的单片机实习已经结束了。
通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。
同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。
此次实训主要有以下几个方面:一、实训目的1.了解“51”精简开发板的工作原理及其结构。
2.了解复杂电子产品生产制造的全过程。
3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。
4.能运用51单片机进行简单的单片机应用系统的硬件设计。
5.掌握单片机应用系统的硬件、软件调试方法二、实验原理流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。
它的电气性能指标:输入电压:~6V,典型值为5V。
可用干电池组供电,也可用直流稳压电源供电。
如图所示:本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。
三、硬件组成1、晶振电路部分单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。
他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。
2、复位端、复位电路给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机实验报告

单片机原理与应用实验报告学校:合肥工业大学班级:计算机科学与技术学号:姓名:第一章MC51 单片机原理及应用软件实验实验1:系统认识实验1.实验目的(1)了解ZY15MCU12BC2单片机实验开发装置的接线与安排。
掌握实验箱内拨位开关KF,KC的使用方法。
(2)通过实例程序的编辑、编译、链接及调试,熟悉Keil C51软件的使用方法和基本操作。
(3)教育学生爱抚实验装置,养成良好的实验习惯。
2.试验设备(1)ZY15MCU12BC2单片机实验开发装置一台。
(2)PC系列微机及相关软件。
3.试验内容(1)使用串行通讯电缆将实验开发装置与PC机相连。
(2)开启PC机及实验开发装置,启动Keil C51软件进入uVision2集成开发环境。
(3)确认拨位开关KF的开关为A端,确认89C51处于仿真状态。
(4)在uVision2开发平台上建立并编辑示例程序:计算N个数求和程序。
其中N个数分别放在片内RAM区50H到55H单元中,N=6,求和的结果放在片内RAM区03H(高位)和04H(低位)单元中。
题目:1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?(5)编译连接源程序。
(6)在Keil uVision2主菜单窗口进入DEBUG调试环境,打开存储器窗口输入数据至片内RAM区50H到55H单元中,全速运行程序,并检查程序的运行结果,即观察在存储器窗口片内RAM区03H(高位)、04H(低位)单元中的数据是否正确。
(7)实验结束,撤出接线,将一切整理复原。
4.实验源程序ORG 0000HLJMP MAINORG 1000HMAIN: MOV R2,#06HMOV R3,#03HMOV R4,#04HMOV R0,#50HL1: MOV A,R4ADD A,@R0MOV R4,AINC R0CLR AADDC A,R3MOV R3,ADJNZ R2,L1END5. 实验结果截图6. 实验总结这次试验,熟悉了单片机开发的基本流程,对于实验的两道题目1)32H+41H+01H+56H+11H+03H=?2)895H+02H+02H+44H+48H+12H=?实验结果如上图所示50H~54H存放数据,第一道题计算出来是0x00DEH,第二道题目计算出来是0x0137H,实验结果和预期相符,成功的完成了实验。
51单片机实验报告

51单片机实验报告一、引言51单片机是一种广泛应用于嵌入式系统开发的微控制器芯片。
本实验旨在通过对51单片机的实验研究,加深对该芯片的理解和应用。
二、实验一:LED灯闪烁控制本实验通过编写程序,控制51单片机上的LED灯以特定的频率闪烁。
为了实现这个目标,我们首先需要了解51单片机的引脚布局,确定LED灯的连接方式。
然后,通过编写相应的汇编程序,控制引脚的电平变化,从而实现LED灯的闪烁。
三、实验二:数码管显示数码管是一种常见的输出设备,通过控制引脚的输出来显示特定的数字。
本实验中,我们通过编写程序,实现通过51单片机控制数码管的显示。
通过对数码管的驱动原理和编程的学习,我们可以灵活地控制数码管的显示内容和频率。
四、实验三:蜂鸣器发声蜂鸣器是一种常见的声音输出设备,通过控制引脚的输出来产生特定的声音。
本实验中,我们通过编写程序,实现通过51单片机控制蜂鸣器的发声。
通过学习蜂鸣器的驱动原理和编程,我们可以根据需要产生不同频率和节奏的声音。
五、实验四:温湿度检测温湿度检测是一种常见的环境监测需求。
本实验中,我们通过引入温湿度传感器,实现通过51单片机获取环境的温度和湿度信息。
通过编写程序和读取传感器的数据,我们可以实时监测环境的温湿度,并进行相应的控制和反馈。
六、实验五:红外遥控红外遥控是一种常见的无线通信方式,通过发送和接收红外信号来实现远程控制。
本实验中,我们通过引入红外发射和接收模块,实现通过51单片机进行红外遥控。
通过编写相应的程序,设置红外遥控的编码和解码方式,我们可以实现对外部设备的遥控操作。
七、实验六:定时器应用定时器是51单片机中的重要模块,它可以实现定时和计数等功能。
本实验中,我们通过学习定时器的工作原理和编程,实现通过51单片机进行定时和计数的应用。
通过编写相应的程序和设置定时器的参数,我们可以实现不同的定时和计数功能,满足各种需要。
八、实验七:串口通信串口通信是一种常见的数据通信方式,通过串口接口发送和接收数据。
【报告】南邮单片机实验报告

【报告】南邮单片机实验报告一、实验目的本次南邮单片机实验旨在通过实际操作和实践,深入了解单片机的工作原理、编程方法以及其在实际应用中的功能实现。
通过完成一系列实验任务,提高我们对单片机系统的设计、开发和调试能力,为今后在电子信息领域的学习和工作打下坚实的基础。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil C51)4、下载器5、示波器6、万用表三、实验内容(一)点亮 LED 灯1、原理通过控制单片机的引脚输出高低电平,来控制连接在引脚上的 LED 灯的亮灭。
2、编程实现使用 C 语言编写程序,设置相应引脚为输出模式,并通过循环语句实现 LED 灯的闪烁效果。
3、调试与观察将程序下载到单片机中,观察 LED 灯的闪烁情况,使用示波器测量引脚的电平变化,以验证程序的正确性。
(二)数码管显示1、原理数码管由多个发光二极管组成,通过控制不同段的发光二极管的亮灭,可以显示不同的数字和字符。
2、编程实现编写程序,实现数码管的动态扫描显示,将需要显示的数字或字符转换为对应的段码,并通过定时中断实现动态刷新。
3、调试与观察下载程序后,观察数码管的显示效果,检查是否能够正确显示预定的数字和字符。
(三)按键控制1、原理按键连接到单片机的引脚,当按键按下时,引脚的电平发生变化,通过检测引脚电平的变化来实现按键的识别和响应。
2、编程实现设置引脚为输入模式,采用查询或中断的方式检测按键状态,根据按键的不同操作执行相应的功能。
3、调试与观察按下不同的按键,观察系统的响应是否符合预期,如 LED 灯的状态改变、数码管显示内容的变化等。
(四)温度传感器采集与显示1、原理使用数字式温度传感器(如 DS18B20)采集环境温度,传感器将温度转换为数字信号,单片机通过特定的通信协议读取温度数据。
2、编程实现编写驱动程序,实现与温度传感器的通信,读取温度值,并将其转换为合适的显示格式。
3、调试与观察将传感器置于不同的温度环境中,观察数码管或液晶显示屏上显示的温度值是否准确。
西安电子科技大学单片机报告

单片机实验报告班级:学号:姓名:实验一:数码管实验一.实验目的1.了解数码管的显示原理;2.掌握JXARM9-2440 中数码管显示编程方法。
二.实验原理7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。
LED显示器的接口一般有静态显示与动态显示接口两种方式。
本实验中采用的是动态显示接口,其中数码管扫描控制地址为0x20007000,位0-位5每位分别对应一个数码管,将其中某位清0 来选择相应的数码管,地址0x20006000 为数码管的数据寄存器。
数码管采用共阳方式,向该地址写一个数据就可以控制LED 的显示,其原理图如图所示。
三.实验内容及步骤1、六个数码管同时正向显示0-F ,然后反向显示F-0。
1)参照模板工程leddemo(modules\leddemo\leddemo.apj),添加相应的文件,并修改led 的工程设置;2)创建led.c 并加入到工程led 中;3)编写LED 显示函数void led_display(void),正向显示0-F 然后反向显示F-0,并循环执行以上动作,在每次显示之间延时一段时间;4)编译led,成功后,下载并运行,观察结果。
2、在六个数码管上依次显示“HELLO”,可分辨出轮流显示。
步骤同上。
3、在六个数码管上依次显示“HELLO”,分辨不出轮流显示。
步骤同上。
4、在每个数码管上递增显示0-9 。
步骤同上。
四.实验程序1、./*******************************************************************//*文件名称: LEDSEG7.C */ /*实验现象:数码管依次显示出0、1,2、……9、a、b、C、d、E、F */ /*******************************************************************/ #define U8 unsigned charunsigned char seg7table[16] = {/* 0 1 2 3 4 5 6 7*/0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,/* 8 9 A B C D E F*/0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, };void Delay(int time);/*******************************************************************/ /* 函数说明: JXARM9-2410 7段构共阳数码管测试 */ /* 功能描述: 依次在7段数码管上显示0123456789ABCDEF */ /* 返回代码: 无 */ /* 参数说明: 无 */ /*******************************************************************/ void Test_Seg7(void){int i;*((U8*)0x20007000)=0x00; /*六个数码管都亮*/for( ; ;){for(i=0;i<0x10;i++) /*数码管从0到F依次显示出来*/{*((U8*)0x20006000)=seg7table[i];Delay(1000);}for(0xf;i>=0x0;i--) /*数码管从F到0依次显示出来*/{*((U8*)0x20006000)=seg7table[i];Delay(1000);}}// TODO}/*****************************************************************/ /* Function name : 循环延时子程序 *//* Description : 循环 'time' 次 */ /* Return type :void */ /* Argument : 循环延时计数器 */ /*****************************************************************/ void Delay(int time){int i;int delayLoopCount=1000;for(;time>0;time--);for(i=0;i<delayLoopCount;i++);}实验结果:6个数码管上一次显示0,1,2…F,然后从F到0循环。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验项目名称MCS-51系列单片机指令学习实验实验项目类型验证性实验时间2013、5、10、星期五、一二节课一、实验目的MCS-51系列单片机指令系统共有111条汇编语言指令,这些指令按功能的不同可分为五类:29条数据传送类指令,24条算术运算类指令,24条逻辑运算类指令,17条控制转移类指令和17条位操作类指令。
本实验通过单步执行程序中各类指令,来进一步学习和理解各类主要指令的功能,掌握指令的用法。
通过实验掌握Keil软件的使用方法。
二、实验内容(一)、数据传送与算术运算1、体会MOV Rn,direct指令的功能和用法,取n=0,direct=40H。
程序如下:ORG 0000HSUBROUT:MOV 40H ,#0FH;MOV R0 ,40H;MOV A ,R0;HERE:LJMP HERE;ENDA=(OFH ),40H=(OFH ),R0=(OFH )2、体会MOV @Ri,#DATA指令的功能和用法,选择DATA=0FH,i=0。
程序如下:ORG 0000HSUBR:MOV R0,#50H;R0←50HMOV @R0,#0FH;(R0)←0FHMOV A,50H;A←(50H)HERE:LJMP HERE;ENDR0=(50H ),50H=(OFH ),A=(OFH )3、体会查表指令MOVC A,@A+DPTR的功能和用法。
设定40H单元中的内容为0~9之间的一个整数,用查表的方法求出它的平方值(BCD码),结果存入41H单元。
利用MOVC A,@A+DPTR指令查表程序如下:ORG 0000HSTART:MOV DPTR,#SQR;MOV A ,40H;MOVC A ,@A+DPTR;MOV 41H , A;HERE:LJMP HERE;SQR:DB 00H,01H,04H,09H,16HDB 25H,36H,49H,64H,81HEND41H=(25 )4、用加法指令ADD A,R0实现两数相加,如52H+FCH。
程序如下:ORG 0000HSUBROUT:MOV A ,#52H ;MOV R0 ,#0FCH;ADD A ,R0;HERE:LJMP HEREENDA=(4EH ),PSW=(80H )用带进位加法指令ADDC A,R0实现52H与0CH之和。
程序如下:ORG 0000HSUBROUT:MOV A ,#52H;MOV R0 ,#0CH;SETB C;ADDC A ,R0;HERE:LJMP HERE;END执行后A=(5FH ),PSW=(00H )若将SETB C 指令改为CLR C执行后A=(5EH ),PSW=(01H )5、体会十进制调整指令DA A 的功能和用法程序如下:ORG 0000HSUBROUT:MOV A ,#65H;ADD A ,#58H;DA A;HERE:LJMP HERE;END执行后A=(23H ),PSW=(85H )若将DA A 指令用NOP代替,则执行后A=(BDH ),PSW=(04H )6、用乘法指令MUL AB 进行0FFH*03H程序如下:ORG 0000HSUBROUT:MOV A ,#0FFH;MOV B ,#03H;MUL AB;NOP;NOP;HERE:LJMP HEREEND执行后A=(FDH ),B=(02H )。
(二)、逻辑运算和循环指令1、逻辑“与”指令实验。
程序如下:ORG 0000HSUBROUT:MOV A,#0FBH;ANL A,#0FH;HERE:LJMP HERE;END执行后A=( 0BH ),“与”指令有何作用?2、逻辑“或”指令实验。
程序如下:ORG 0000HSUBROUT:MOV R1,#0FH;MOV A ,#33H;ORL A,R1;HERE:LJMP HERE;END执行后A=(3FH ),“或”指令有何作用?3、逻辑“异或”指令实验。
程序如下:ORG 0000HSUBROUT:MOV A,#55H;MOV 40H,#00H;XRL A,40H;HERE:LJMP HERE;END执行后A=(55H ),将MOV 40H,#00H 改为MOV 40H,#55H,执行后A=(OOH )。
4、利用左移指令实现乘2运算。
程序如下:ORG 0000HSUBROUT:MOV A,#29H;RLC A;HERE:LJMP HERE;END执行后A=(52H )5、利用循环移位指令实现累加器A中内容高半字节与低半字节互换。
程序如下:ORG 0000HSUBROUT:MOV A,#38H;RL A;RL A;RL A;RL A;HERE:LJMP HERE;END执行后A=(83H ),改用RR A指令重新实验,执行后A=(83H ),改用SWAP A指令重新执行,则A=(83H )。
(三)、位操作指令的功能和用法。
利用位条件转移指令实现两个无符号数比较大小。
程序如下:ORG 0000HSUBROUT:MOV 30H,#80H;MOV 31H,#7FH;MOV A,30H;CJNE A,31H,BIG;MOV A,#0DDH;LJMP HERE;BIG:JC SMALL;MOV A,#0F0H;LJMP HERE;SMALL:MOV A,#0FH;HERE:LJMP HERE;END执行后A=(OFOH ),修改(30H)=7FH,(31H)=80H,执行后A=(0FH ),再修改(30H)=80H,(31H)=80H,执行后A=(ODDH )。
三、实验总结1、单片机指令是供用户使用的单片机的软件资源,是单片机所能接受的软件工作者的命令的最小工作单位。
2、实验过程学会了如何检查程序错误,并熟悉了各指令所执行的相应功能3、通过老师的提问也指出了自己不足,并得到了改正四、思考题JC是判断C进位标志是否为1,为1则跳转到指定位置。
批阅实验项目名称数据传送实验实验项目类型设计性实验时间2013、5、17、星期五、一二节课一、实验目的和要求1、掌握单片机的汇编指令系统及汇编语言程序设计方法。
2、掌握单片机的存储器体系结构。
3、熟悉Keil软件的功能和使用方法。
4、掌握单片机应用程序的调试方法。
二、设计要求1、编写程序将00H~0FH 16个数据分别送到单片机内部RAM 30H~3FH单元中。
2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM40~4FH单元中。
3、编写程序将片内RAM 40H~4FH单元中的内容传送到外部RAM 4800H~480FH单元中。
4、编写程序将4800H~480FH单元内容送到外部RAM5800H~580FH单元中。
5、编写程序将片外RAM 5800H~580FH单元内容传送回片内RAM 50H~5FH单元中。
三、程序清单1、ORG 0000HSTART1: MOV A , #00HMOV R0 , #30HMOV R1 , #10HLOOP1: MOV @R0 , AINC AINC R0DJNZ R1 , LOOP12、START2: MOV R0 , #30HMOV R1 , #40HMOV R2 , #10HLOOP2: MOV A , @R0MOV @R1 , AINC R0INC R1DJNZ R2 , LOOP23、START3: MOV R0 , #40HMOV DPTR , #4800HMOV R1 , #10HLOOP3: MOV A , @R0MOVX @DPTR, AINC DPTRINC R0DJNZ R1 , LOOP34、START4: MOV DPTR , #4800HMOV R0 , #10HLOOP4: MOV DPH , #48HMOVX A , @DPTRMOV DPH , #58HMOVX @DPTR , AINC DPTRDEC R0MOV A , R0JNZ LOOP45、START5: MOV DPTR , #5800HMOV R0 , #50HMOV R1 , #10HLOOP5: MOVX A , @DPTRMOV @R0 , AINC DPTRINC R0DJNZ R1 , LOOP5END四、实验总结1、数据传输是单片机编程的基础,使用指令是注意指令的使用范围,还要注意指令的可执行性2、编程过程学会了如何真确检查程序的错误,熟悉了各项指令并初步掌握了程序的调试和编写五、思考题1、片内寻址方式:直接寻址、寄存器寻址、寄存器间接寻址和位寻址片外寻址方式:间接寻址2、MOV A ,20H是将20H中的内容送给A,MOV C , 20H是将位地址为20H的位状态送给累加器CMOV访问片内数据,MOVX访问片外数据,MOVC主要访问程序空间批阅实验项目名称单片机并行I/O口的应用实验实验项目类型设计性实验时间2013、5、24、星期五、一二节课一、实验目的和要求1、熟悉Proteus软件和Keil软件的使用方法。
2、熟悉单片机应用电路的设计方法。
3、掌握单片机并行I/O口的直接应用方法。
4、掌握单片机应用程序的设计和调试方法。
二、设计要求1、用Proteus软件画出电路原理图。
要求在P3.0至P3.7口线上分别接LED0至LED7八个发光二极管,在P1.0口线上接一蜂鸣器。
2、编写程序:蜂鸣器以秒速率报警。
3、编写程序:要求LED0至LED7以秒速率循环右移。
4、编写程序:要求LED0至LED7以秒速率循环左移。
三、电路原理图四、程序清单1、ORG 0000HSTART: LJMP MAINORG 000BHLJMP LOOP1MAIN: MOV SP , #60HMOV TMOD , #01HCLR 10HSETB EASETB ET0MOV TH0 , #3CHMOV TL0 , #0B0HMOV R1 , #14HSETB TR0MOV A , #01HMOV P3 , ALOOP: JNB 10H , LOOPRR AMOV P3 , ACLR 10HLJMP LOOPLOOP1: MOV TH0 , #3CHMOV TL0 , #0B0HDJNZ R1 , LOOP2MOV R1 , #14HSETB 10HLOOP2: RETIEND2、将第一个程序中的RR A改为RL A就可以了3、ORG 0000HLJMP MAINORG 000BHLJMP IPTOMAIN: MOV SP , #60HMOV TMOD , #01HCLR 10HSETB EASETB ET0MOV TH0 , #3CHMOV TL0 , #0B0HMOV R2 , #0AHMOV R1 , #02HSETB TR0MOV A , #0FEHMOV P3 , ANT: SETB P1.0NT0: JNB 01H , NT0CLR P1.0CLR 01HNT1: JNB 10H , NT1CLR 01HRL AMOV P3 , ACLR 10HLJMP NTIPTO: MOV TH0 , #3CHMOV TL0 , #0B0HDJNZ R2 , TIOMOV R2 , #0AHSETB 01HDJNZ R1 , TIOMOV R1 , #02HSETB 10HTIO: RETIEND五、实验总结1、流水灯是单片机中的一个简单的应用,程序简单可移植性强,外接电路简单,外接电路可以是流水灯也可以是数码管2、调试时,加入的断点位置应包含整个循环,否则就会进入死循环或直接跳过该断点进入下一个断点六、思考题实现LED0至LED7以十六进制计数规律亮灯ORG 0000HLJMP MAINMAIN: MOV A , #00HCPL AMOV R7 , #00HC1: MOV P3 , ADEC ALCALL SJDJNZ R 7 , C1SJMP MAINSJ: MOV R0 , #06HMOV R1 , #18HMOV R2 , #02HSJ1: NOPSJ2: NOPSJ3: NOPDJNZ R2 , SJ3DJNZ R1 , SJ2DJNZ R0 , SJ1RETEND批阅实验项目名称定时器/计数器应用实验一实验项目类型设计性实验时间2013、5、31、星期五、一二节课一、实验目的和要求1、掌握定时器/计数器定时功能的使用方法。