实验1:单片机汇编语言程序设计仿真实验
- 格式:doc
- 大小:278.00 KB
- 文档页数:4
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.9 实验成绩:实验一单片机软件实验(一)实验目的1.掌握51单片机keil软件集成开发环境,能够使用汇编语言编写应用程序。
2.掌握使用集成开发环境Keil进行单片机程序开发的方法3.掌握使用集成开发环境Keil进行单片机程序跟踪调试的方法。
(二)设计要求熟悉51单片机的keil软件集成开发环境,使用汇编语言编写“1+2+3+…+100”的程序。
(三)实验原理KeilC51软件使用:在KeilC51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。
(四)实验设备PC机,Keil C51集成开发环境。
(五)实验结果对汇编程序进行编译、链接、调试,在Keil C51软件中运行仿真结果如下图所示,由于“1+2+……100”运行结果超过8位二进制所能表示的范围,计算结果将存放于两个8位工作寄存器单元R2、R3中。
其中,低八位存放于R2中,高八位存放于R3中,R4中存放计算数。
下图中的寄存器窗口中可以显示计算结果为0x13ba。
调出存储器窗口Memory:选择菜单命令View →Memory Window →Memory 1:可见计算结果存放于当前工作寄存器R2(02H)与R3(03H)中,为0x13BA。
(六)结果讨论与心得体会第一次使用Keil C51软件,初步了解了软件:Keil uVision4的使用方法,初步了解了Keil软件中程序的编辑,新工程的建立运行,初步对单片机实验进行了解,加强了实验动手操作能力。
第一次尝试单步调试,能观察到内存中每一个单元的变化,感到单片机系统复杂中的严谨,收获颇丰。
(七)附录:实验源代码实验源代码如下:ORG 0000HLJMP MAINORG 0050H MAIN:MOV R2,#00HMOV R3,#00HMOV R4,#64HMOV A,#00HCLR C LOOP:MOV A,R2ADD A,R4MOV R2,AMOV A,#00HADDC A,R3MOV R3,ADJNZ R4,LOOPSJMP $END。
51单片机汇编语言程序设计1.题目:数码管显示1~72.题目分析本实验将要求51单片机采用汇编程序来实现以上程序,我们首先要对51单片机进行硬件电路设计,然后编写相应的汇编程序3.硬件电路4.程序设计;-------------------------------------------------------------------------------;选择P1口作为数码管位选;-------------------------------------------------------------------------------org 0hmov p1,h ;启动P1作为数码管位选again: m ov p2,Fh ;0000 0011 1111 显示数字1sjmp againmov p2,h ;0000 0110 显示数字2sjmp againmov p2,Bh ;0101 1011 显示数字3sjmp againmov p2,Fh ;0100 1111 显示数字4sjmp againmov p2,h ;0110 0110 显示数字5sjmp againmov p2,Dh ;0110 1101 显示数字6sjmp againmov p2,dh ;0111 1101 显示数字7sjmp againend5.程序流程本汇编程序的程序流程如下:1)将P1口设置为数码管的位选;2)通过P2口设置相应的数字,P2口的值将会根据数字的不同而不同,以便实现将不同的数字显示到数码管上;3)循环2步骤,不断刷新P2口的值,从而实现数字的不断变化,从而实现将1-7数字在数码管上循环显示。
单片机实验1 汇编语言程序设计实验---- 存储器块赋值一.实验目的1 熟悉存储器的读写方法,熟悉51汇编语言结构。
2 熟悉循环结构程序的编写。
3 熟悉编程环境和程序的调试。
二.实验内容指定存储器中某块的起始地址和长度,要求将其内容赋值。
例如将4000H 开始的100个字节内容清零或全部赋值为33H(参考程序),要求根据参考程序修改:修改程序,赋值内容为(10,9,8,7,6,5,4,3,2,1。
)三.实验仪器微机、VW,WAVE6000编程环境软件,(单片机实验箱)仿真器--仿真器设置-选择仿真器选择仿真头选择CPU Lab8000/Lab6000通用微控制器 MCS51实验 8051前3个软件实验勾选√使用伟福软件模拟器四实验步骤注意:1 文件不要用中文名称保存时不要用中文路径(目录),不要放在“桌面”上,源文件和工程要放在同一个文件夹下,文件名称和路径名称不要太长。
2 查看存储器菜单使用:窗口---数据窗口---XDATA 观察存储器内容3 查看SFR:窗口---CPU窗口查看CPU寄存器SFR4 单步执行:执行---单步执行(F8),每执行一步,查看每条语句涉及到的寄存器和存储器内容的变化结果,是否是指令所要得到的结果,如不是,检查错误原因,修改。
5利用多种执行方法和观察各种窗口调试程序,直至程序满意为止。
编译器默认设置:程序框图参考例程序:Block equ 4000hmov dptr, #Block ; 起始地址mov r0, #10 ; 清10个字节mov a, #33h ; 将33H赋值给aLoop:movx @dptr, a 将a写入外部RAMinc dptr ; 指向下一个地址djnz r0, Loop ; 记数减一ljmp $ ; $当前程序指针相当于一直执行自己;ljmp $ end说明:$:是当前语句的程序指针(地址)相当于一直执行自己:ljmp $,程序死循环要求赋值数据为10,9,8,7,6,5,4,3,2,1则以上程序该如何改动? 自己修改程序实现。
pic单片机汇编语言程序设计实例一、前言单片机是现代电子技术中的重要组成部分,而汇编语言则是单片机编程中最基础的语言。
本文将以PIC单片机为例,介绍汇编语言程序设计实例。
二、PIC单片机简介PIC(Peripheral Interface Controller)是一种微控制器,由美国Microchip Technology公司开发。
PIC单片机具有体积小、功耗低、价格便宜等优点,广泛应用于各种电子设备中。
三、汇编语言基础1. 寄存器PIC单片机有许多寄存器,其中最常用的有W寄存器和F寄存器。
W 寄存器是一个8位的通用寄存器,可用于存储临时数据;F寄存器则是一个8位的特殊功能寄存器,可用于控制各种外设。
2. 指令集PIC单片机的指令集非常丰富,涵盖了各种数据操作、逻辑运算、跳转等指令。
例如:- MOVF:将指定地址中的数据移动到W寄存器中;- ADDWF:将指定地址中的数据与W寄存器中的数据相加,并将结果保存到指定地址中;- BTFSS:测试指定地址中某一位是否为0,并跳过下一条指令。
3. 标志位PIC单片机还有一些标志位,用于记录各种状态信息。
其中最常用的有C(进位标志位)、Z(零标志位)和DC(半进位标志位)。
四、汇编语言程序设计实例下面以一个简单的LED闪烁程序为例,介绍PIC单片机汇编语言程序设计。
1. 硬件连接将一个LED连接到PIC单片机的RA0口,通过一个220欧姆电阻限流。
将VDD和VSS分别连接到5V和地。
2. 程序设计首先定义RA0口为输出口,并将其置为低电平。
然后进入一个死循环,在循环中将RA0口置为高电平、延时一段时间、再将RA0口置为低电平、再延时一段时间。
程序如下:LIST P=16F84AINCLUDE "P16F84A.INC"__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON &_HS_OSCORG 0x00GOTO MAINORG 0x04MAIN:MOVLW 0x00 ; 将W寄存器清零TRIS PORTA ; 将PORTA定义为输出口LOOP:BSF PORTA, 0 ; 将PORTA.0置为高电平CALL DELAY ; 延时BCF PORTA, 0 ; 将PORTA.0置为低电平CALL DELAY ; 延时GOTO LOOPDELAY:MOVLW 0x64 ; 将W寄存器设置为100(十进制)DELAY_LOOP:NOP ; 空操作,延时1个指令周期DECFSZ W, F ; 将W寄存器减1,如果不为0则跳转到DELAY_LOOPGOTO DELAY_LOOP ; 否则跳出循环RETURN ; 返回主程序3. 编译和烧录将程序保存为.asm文件,使用MPLAB IDE进行编译和烧录。
Proteus专业应用软件训练总结报告实验项目项目一:Proteus的基本操作与原理图绘制一任务说明:1.掌握Proteus仿真软件的的安装与破解2.初步认识Proteus的运行环境及操作界面3.画出所给电路图并进行仿真演示二Proteus软件的安装及原理图绘制:1.Proteus软件的安装方法(1)首先解压安装文件,找到;(2)点击“YES”,进入下一步,然后一直点击“Next”,下一步,直到出现如图所示的添加License界面;(3)点击“Browse For Key File”,装入刚刚解压的“完美破解”的路径;(4)点击“install”,点击“是”,然后点击“CLOSE”;(5)点击“next”,需要改安装路径就改改,然后点击“next”,若不用PCB,则将第二个图标不选,然后一直点“next”到完成。
(6)安装完成后需要导入钥匙,点击解压的文件如下图(7)、点击“browser”,将刚才的安装路径导进去(8)、导进去后,点击“update”,若失败就是路径不正确,重新导入路径,完成后点击“CLOES”,安装完成。
2.Proteus软件的原理图绘制Proteus软件成功安装之后,打开Proteus下的ISIS功能模块,则进入了原理图的绘制和仿真界面。
首先要了解各个功能区域的操作和功能:(1)编辑区域的缩放Proteus编辑区域是放置电器元件和绘制原理图的区域,它的缩放操作多种多样,极大地方便了工程项目的设计。
常见的几种方式有:完全显示、放大按钮和缩小按钮,拖放、取景、找中心。
编辑区域的点状栅格,是为了方便元器件定位用的。
鼠标指针在编辑区域移动时,移动的步长就是栅格的尺度,。
这个功能可使元件依据栅格对齐。
鼠标移动的过程中,在编辑区的下面将出现栅格的坐标值,即坐标指示器,它显示横向的坐标值。
(2)对象的放置和编辑Proteus中元件的放置是绘制电路图的基础。
对象的添加和放置点击工具箱的元器件按钮,进入元器件模式,再点击IsIs对象选择器左边中间的置P按钮,出现“Pick Devices”对话框,拾取需要的元件。
单片机教案汇编语言程序设计一、引言单片机是一种小型集成电路芯片,具有独立完成特定任务的能力。
而汇编语言是一种低级程序设计语言,能够直接操作硬件资源。
本教案旨在介绍单片机的程序设计,重点讲解汇编语言的基本概念和编程技巧,帮助学习者掌握单片机的应用。
二、单片机基础知识在开始学习汇编语言程序设计之前,需要对单片机的基础知识有所了解。
主要包括单片机的结构、寄存器的作用、IO口的应用等内容。
通过对这些基础知识的学习,能够更好地理解汇编语言的工作原理和编程思路。
三、汇编语言概述汇编语言是一种使用助记符来表示机器指令的低级程序设计语言。
相对于其他高级语言,汇编语言更接近硬件层面,可直接操控单片机的寄存器和IO口。
本节将介绍汇编语言的基本概念、语法规则和常用指令集,帮助学习者熟悉汇编语言的编写方式。
四、单片机编程环境搭建在进行汇编语言程序设计前,需要搭建相应的开发环境。
常用的单片机开发工具包括Keil、IAR等。
本节将以Keil为例,介绍如何配置和使用开发工具,以及如何将程序下载到单片机中进行调试。
五、第一个汇编程序本节将以一个简单的LED闪烁程序为例,介绍如何使用汇编语言编写单片机程序。
通过对程序的分析和调试,学习者能够理解汇编语言的基本结构和编程过程,并且能够独立完成简单的单片机程序设计。
六、汇编语言编程技巧除了掌握基本的汇编语言知识外,还需要掌握一些编程技巧,以提高程序的效率和稳定性。
本节将介绍一些常用的汇编语言编程技巧,包括循环、条件判断、子程序调用等,帮助学习者编写更加复杂和实用的单片机程序。
七、实例分析本节将通过几个实例,分析并介绍实际应用中的单片机程序设计方法。
例如,如何控制电机的转动方向和速度、如何读取温湿度传感器的数据等。
通过这些实例的分析,学习者能够将所学的知识应用到实际项目中,并且能够更好地理解和解决实际问题。
八、实验设计在本教案的最后,将提供几个实验项目作为实践环节,帮助学习者巩固所学的知识和技能。
单片机实验报告KeilC的使用与汇编语言上机操作单片机实验报告:Keil C的使用与汇编语言上机操作一、实验目的1.掌握Keil C的使用方法,了解其集成开发环境下的单片机编程流程。
2.掌握汇编语言的基本语法和指令,通过上机操作熟悉其应用。
3.通过实际操作,增强动手能力和解决问题的能力。
二、实验设备1.单片机开发板2.Keil C软件3.电脑及编程器三、实验原理及步骤1.Keil C使用介绍Keil C是一款广泛使用的单片机集成开发环境,它提供了包括编译器、调试器、仿真器等在内的全套开发工具。
使用Keil C可以方便地进行代码编写、编译、调试和模拟,适用于多种单片机开发。
2.汇编语言基础汇编语言是一种直接与硬件相关的编程语言,它通过特定的指令集直接控制硬件进行操作。
汇编语言具有高效、直接的特点,但编写和理解相对困难。
本实验主要学习并熟悉汇编语言的基本语法和指令。
3.实验步骤(1) 在Keil C中创建新项目,选择合适的单片机型号。
(2) 创建源文件,编写汇编程序。
(3) 对源文件进行编译,生成目标文件。
(4) 将目标文件下载到单片机开发板进行调试和运行。
四、实验内容及分析1.在Keil C中创建新项目并选择单片机型号。
在创建项目时,需要选择正确的单片机型号,这将直接影响到程序的编写和运行。
根据实际需要,我们选择了AT89C51作为实验用的单片机。
2.创建源文件并编写汇编程序。
在Keil C中,可以方便地创建新的源文件,并在其中编写汇编程序。
例如,下面是一个简单的汇编程序,用于点亮开发板上的LED灯:MOV P1, #1 // 将1赋值给P1端口此程序将使P1端口的所有引脚输出高电平,从而点亮LED灯。
3.对源文件进行编译并生成目标文件。
在Keil C中,可以通过简单的点击完成编译操作。
编译成功后,将生成一个目标文件(如*.obj文件)。
4.将目标文件下载到单片机开发板进行调试和运行。
在Keil C中,可以通过仿真功能模拟程序的运行,也可以通过调试功能查看程序运行过程中的细节信息。
实验一仿真软件的使用,简单程序设计一.实验目的:1.掌握单片机仿真软件的基本操作方法;2.熟悉汇编语言源程序的编辑、汇编、运行和检查运行结果的方法(能查看各存储空间中值的变化);3.掌握简单程序编写的基本方法和技巧;二.实验内容:1. 将内部RAM的30H—33H四个存储单元內分别存放01H、02H、03H、04H 四个数;然后送至工作寄存器R0—R3。
2.将内部RAM的30H—33H四个存储单元內的数分别传送至外部RAM的2030H--2033H存储单元中。
3. 将内部RAM的30—32H的连续3个字节中的无符号数相加,结果的低位送33H 单元,高位送34H单元实用文档三.实验步骤:1.实验内容1的步骤(1)新建文件,输入能实现实验内容1的源程序并以 .ASM为扩展名存盘;(2)编译并运行程序,检查运行结果:检查R0—R3的内容;(3)单步运行程序,并检查运行结果:检査R0—R3的内容;(4)查看程序的机器码。
2.实验内容2的步骤(1)新建文件,输入能实现实验内容2的源程序并以 .ASM为扩展名存盘(2)编译并运行程序,检查运行结果:检査外部RAM 2030H—2033H单元的內容(3)单步运行程序,并检查运行结果;(4)查看程序的机器码。
3.实验内容3的步骤(1)新建文件,输入能实现实验内容3的源程序并以 .ASM为扩展名存盘;(2)编译并运行程序,检查运行结果;实用文档(3)单步运行程序,并检查运行结果,检查33H、34H单元内容;(4)查看程序的机器码四.实验程序1.实验内容1的程序ORG 0000HMOV 30H,#00HMOV 31H,#01HMOV 32H,#02HMOV 33H,#03HMOV R0,30HMOV R1,31HMOV R2,32HMOV R3,33HEND实用文档2.实验內容2的程序ORG 0000HMOV 30H,#00HMOV 31H,#11HMOV 32H,#22HMOV 33H,#33HMOV DPTR,2030HMOV R0,#30HMOV R1,#04HLOOP:MOV A,·R0HMOVX ·DPTR,AINC R0INC DPTRDJNZ R1,LOOPSJMP $实用文档END3.实验内容3的程序ORG 0000HMOV 30H,#0F8HMOV 31H,#0C6HMOV 32H,#0D9HCLR CMOV A,30HADD A,31HJC NEXT1SJMP NEXT2NEXT1:INC R1NEXT2:ADD A,32HMOV 33H,AJC NEXT3实用文档SJMP NEXT4NEXT3:INC R1NEXT4:MOV 34H,R1SJMP $五.实验报告要求:1.对实验内容1和实验内容2的程序加注释。
单片机C语言编程实例前言INTEL公司的MCS-51单片机是目前在我国应用得最广泛的单片机之一.随着单片机应用技术的不断发展,许多公司纷纷以51单片机为内核,开发出与其兼容的多种芯片,从而扩充和扩展了其品种和应用领域.C语言已成为当前举世公认的高效简洁而又贴近硬件的编程语言之—。
将C语言向单片机上的移植,始于20世纪80年代的中后期。
经过十几年的努力,C语言终于成为专业化单片机上的实用高级语言。
用C语言编写的8051单片机的软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完善的系统。
因此,不管是对于新进入这一领域的开发者来说,还是对于有多年单片机开发经验的人来说,学习单片机的C语言编程技术都是十分必要的..C语言是具有结构化.模块化编译的通用计算机语言,是国际上应用最广。
最多的计算语言之一。
C51是在通用C语言的基础上开发出的专门用于51系列单片机编程的C语言。
与汇编语言相比,C51在功能上.结构上以及可读性。
可移植性。
可维护性等方面都有非常明显的优势.目前最先进、功能最强大、国内用户最多的C51编译器是Keil Soft ware公司推出的KeilC51.第一章单片机C语言入门1。
1建立您的第一个C项目使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。
KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持PLM、汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能.因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。
以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。
KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发。
单片机实习报告单片机实习报告3篇随着人们自身素质提升,报告有着举足轻重的地位,报告具有成文事后性的特点。
相信很多朋友都对写报告感到非常苦恼吧,下面是小编帮大家整理的单片机实习报告3篇,希望对大家有所帮助。
单片机实习报告篇1一实习目的1. 通过对单片机小系统的设计、焊接、装配,掌握电路原理图及电子线路的基本焊接装配工艺、规范及注意事项;2. 通过对系统板的测试,了解系统板的工作原理及性能,掌握元器件及系统故障的排除方法;3. 掌握程序编制及调试方法,完成系统初始化、存储器操作、端口操作、键盘显示等程序的编制及调试(汇编语言、C语言均可);4. 通过单片机系统的组装,调试以及程序编制、调试及运行,与理论及实验的有机结合和指导教师的补充介绍,使学生掌握控制系统的工作原理、开发方法和操作方法。
5. 培养学生解决实际问题的能力,提高对理论知识的感性认识。
二实习意义通过本实习不但可以掌握单片机软、硬件的综合调试方法,而且可以熟练掌握电路原理图,激发对单片机智能性的探索精神,提高学生的综合素质,培养学生应用单片机实现对工业控制系统的设计、开发与调试的能力。
在制作学习过程中,不但可以掌握软、硬件的综合调试方法,而且可以使学生对单片机智能性产生强烈的欲望。
达到最大限度地掌握微机应用技术,软件及接口设计和数据采集与处理的技能,培养电综合实践素质的目的。
三系统基本组成及工作原理1 系统基本组成系统以单片机STC89C52作为控制核心,各部分基本组成框图如图1所示。
流水灯部分由单片机、键盘模块等组成;四位数码显示,编程实现30秒倒计时部分由单片机、键盘模块、液晶显示模块等组成;按键功能部分通过按键控制流水灯部分、四位数码显示部分;电子钟部分由单片机、键盘模块、液晶显示模块等组成;使用功能键实现相应的功能组合部分通过流水灯部分、30秒倒计时部分实现;模数转换部分由单片机、ADC0809转换模块、键盘模块、液晶显示模块等组成。
51单片机汇编语言及C语言经典实例实验及课程设计一、闪烁灯如图1 所示为一简单单片机系统原理图:在P1.0 端口上接一个发光二极管L1,使L1 在不停地一亮一灭,一亮一灭的时间间隔为0.2 秒。
延时程序的设计方法,作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2 秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:如图4.1.1 所示的石英晶体为12MHz,因此,1 个机器周期为 1 微秒,机器周期微秒如图 1 所示,当P1.0 端口输出高电平,即P1.0=1 时,根据发光二极管的单向导电性可知,这时发光二极管L1 熄灭;当P1.0 端口输出低电平,即P1.0=0 时,发光二极管L1 亮;我们可以使用SETB P1.0 指令使P1.0端口输出高电平,使用CLR P1.0 指令使P1.0 端口输出低电平。
C 语言源程序#include <AT89X51.H>sbit L1=P1^0;void delay02s(void) //延时0.2 秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}汇编源程序ORG 0START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP START DELAY: MOV R5,#20 ;延时子程序,延时0.2 秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND图2 程序设计流程图图1 单片机原理图二、多路开关状态指示如图 3 所示,AT89S51 单片机的 P1.0-P1.3 接四个发光二极管 L1-L4,P1.4-P1.7 接了四个开关 K1-K4,编程将开关的状态反映到发光二极管上。
循环嵌套法 ORG 0000HMOV R3, #10 ;比较次数设定10次 BACK:MOV A, R3 ;间接寻址MOV R2, A ;R2存放比较次数,为下面的次数还原准备 MOV R0, #40H ;把初始地址传送至R0 AGAIN:MOV A, @R0 ;把该地址的内容传送至a INC R0 ;地址自增MOV B, @R0 ;把下个地址的内容传送至b CJNE A, B, GO ; A 和B 不相等,则跳到GO GO:JNC NEXT ;低地址的值比高地址的大,则跳到NEXT : MOV @R0, A ;A 的值传送至R0 DEC R0 ;地址-1MOV @R0, B ;B 的值传送至R0 INC R0 ;地址+,完成交换,保证低地址的值比高地址的大NEXT:DJNZ R2, AGAIN ;比较次数-1不为0则跳转AGAIN, 即一次内循环比较 DJNZ R3, BACK ;比较次数-1不为0则跳转BACK ,即是一次大循环 END;结束子程序法 ORG 0000H MOV R3, #10 ;比较次数设定10次BACK:MOV A, R3 ;间接寻址 MOV R2, A;R2存放比较次数,为下面的次数还原准备MOV R0, #40H ;把初始地址传送至R0ACALL AGAINDJNZ R3, BACK ;比较次数-1不为0则跳转BACK ,即是一次大循环 SJMP $;******子程序****************** ORG 0030H AGAIN:MOV A, @R0 ;把该地址的内容传送至a INC R0;地址自增MOV B, @R0 ;把下个地址的内容传送至b CJNE A, B, GO ; A 和B 不相等,则跳到GO GO:JNC NEXT ;低地址的值比高地址的大,则跳到NEXT MOV @R0, A ;A 的值传送至R0 DEC R0 ;地址-1MOV @R0, B ;B 的值传送至R0INC R0 ;地址+1;完成交换,保证低地址的值比高地址的大 NEXT:DJNZ R2, AGAIN ;比较次数-1不为0则跳转AGAIN,即内循环比较RET ;返回 END;结束设定40h 起始单元的数值上图 程序结果寄存器值如下图 程序运行结果上图。
实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。
2、掌握循环程序的设计。
3、掌握汇编语言主程序与子程序的调用和参数传递。
4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。
二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。
要求统计字符串用子程序完成。
data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。
2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。
写出操作步骤,程序清单,程序注释,实验现象。
课程设计成果说明书题目:城市交道口交通灯控制系统姓名:学号:学院:班级:指导教师:年月日一、任务:设计并制作一个城市交道口交通灯控制糸统二、要求:根据下图交道口模型,装上交通灯。
交道口模型如图所示。
交通灯控制规则如下:1)每个街口有左拐、右拐、直行及行人四种指示灯。
每个灯有红、绿两种颜色。
自行车与汽车共用左拐、右拐和直行灯。
2)共有四种通行方式:①车辆南北直行、各路右拐,南北向行人通行。
南北向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。
②南北向左拐、各路右拐,行人禁行。
通行时间为1分钟。
③东西向直行、各路右拐,东西向行人通行。
东西向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。
④东西向左拐、各路右拐。
行人禁行。
通行时间为1分钟。
3)在通行结束前10秒钟,绿灯闪烁直至结束。
1, 基本部分:按照上述控制要求,用发光二极管代替交通灯,用PROTEUS绘制电路图,并仿真调试实现之。
2, 发挥部分: 1.有倒计时时间显示。
2若交道口出现紧急情况,交警可将糸统设置成手动:全路口车辆禁行、行人通行。
紧急情况结束后再转成自动状态。
3当有119、120等特种车辆通过时,糸统自动转为特种车放行,其它车辆禁止状态。
特种车辆通过15秒钟后,糸统自动恢复,用模型车演示。
4其它自选措施。
城市交道口交通灯控制系统1.系统功能的确定功能一:可以实现红绿灯的转换以及控制路口的基本功能。
功能二:有倒计时功能和最后十秒绿灯闪烁的功能。
功能三:出现紧急情况时,可以警察手动控制特殊状态,并维持交通。
功能四:119或120等特种车经过时,可转换成为特种车道行驶状态,并在情况消除后15秒,恢复原状。
2.方案论证2.1方案一:如下图所示,为proteus仿真图。
其中,P1,P0端口的8位分别来控制东西,南北方向的红绿灯。
且运用了4个74LS164的8位移位寄存器(串行输入,并行输出)来控制4个LED的数码显示,通过AT89C51单片机的P3.0,P3.1两个扩展端口来接4个并行连接的74LS164的DIN和CLK两个端口来显示倒计时的功能,这会产生乱码使得显示杂乱,而主程序以顺序执行为主,其中穿插着对P3.7的端口高低电平的测试和跳转语句来实现功能三,并且功能一、二在主程序中实现,没有功能四的的实现程序。
《单片机技术》实验(2022级自动化1201~02电气1201~02)教案课程教案课程名称:单片机技术实验任课教师:王韧所属院部:电气与信息工程学院教学班级:自动化1201~02、电气1201~02教学时间:2022—2022学年第二学期湖南工学院课程基本信息湖南工学院教案用纸实验一数据传送实验一、本次实验主要内容1、Keil软件的使用方法和调试。
2、存储器之间数据传送的方法和循环程序设计。
3、MCS-51系列单片机堆栈的使用。
二、实验目的与要求1、掌握单片机的汇编指令系统及汇编语言程序设计方法。
2、掌握单片机的存储器体系结构。
3、熟悉Keil软件的功能和使用方法。
4、掌握单片机应用程序的调试方法。
三、实验重点难点MOV、MOV某指令的用法特点。
四、实验方法和手段讲授、演示、操作、仿真、提问。
五、作业与习题布置写出实验报告。
P1湖南工学院教案用纸一、实验内容或原理1、实现单片机内部RAM之间,外部RAM之间以及内部RAM与外部RAM之间的数据传送。
2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。
二、设计要求1、编写程序将00H~0FH16个数据分别送到单片机内部RAM30H~3FH单元中。
2、编写程序将片内RAM30H~3FH的内容传送至片内RAM40~4FH单元中。
3、编写程序将片内RAM40H~4FH单元中的内容传送到外部RAM4800H~480FH单元中。
4、编写程序将片外4800H~480FH单元内容送到外部RAM5800H~580FH单元中。
5、编写程序将片外RAM5800H~580FH单元内容传送回片内RAM50H~5FH单元中。
三、实验报告要求1、实验目的和要求。
2、设计要求。
3、实验程序流程框图和程序清单。
4、实验总结。
5、思考题。
四、思考题1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式?2、说明指令MOVA,20H和MOVC,20H中的20H含义有什么不同?传送指令中的助记符MOV,MOV某,MOVC各适用于访问哪个存储器空间?P2湖南工学院教案用纸实验后记:P3湖南工学院教案用纸实验二单片机并行I/O口的应用实验一、本次实验主要内容1、利用单片机并行I/O口控制流水灯。
目录引言 (2)实验1 PROTUES环境及LED闪烁综合实验 (7)实验2 多路开关状态指示 (10)实验3 报警产生器 (13)实验4 I/O并行口直接驱动LED显示 (16)实验5 按键识别方法之一 (19)实验6 一键多功能按键识别技术 (22)实验7 定时计数器T0作定时应用技术 (25)实验8定时计数器T0作定时应用技术 (28)实验9 “嘀、嘀、......”报警声 (32)实验10 8X8 LED点阵显示技术 (36)实验11电子琴 (40)引言单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。
以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。
在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。
利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个单片机仿真系统。
1. Proteus介绍Proteus是英国Labcenter Electronics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES (Advanced Routing and Editing Software)也就是PCB。
1.1 Proteus VSM的仿真Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。
Proteus可提供30多种元件库,超过8000种模拟、数字元器件。
可以按照设计的要求选择不同生产厂家的元器件。
此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。
除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。
51单片机C语言实验及实践教程第一章:硬件资源模块第二章:keil c 软件使用at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅1.闪烁灯at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅2.模拟开关灯at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅3.多路开关状态指示at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅4.广告灯的左移右移at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅5.广告灯(利用取表方式)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅6.报警产生器at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅7.I/O并行口直接驱动LED显示at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅8.按键识别方法之一at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅9.一键多功能按键识别技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅10.00-99计数器at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅11.00-59秒计时器(利用软件延时)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅12.可预置可逆4位计数器at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅13.动态数码显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅14.4×4矩阵式键盘识别技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅15.定时计数器T0作定时应用技术(一)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅16.定时计数器T0作定时应用技术(二)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅17.99秒马表设计at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅18.“嘀、嘀、……”报警声at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅19.“叮咚”门铃at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅20.数字钟(★)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅21.拉幕式数码显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅22.电子琴at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅23.模拟计算器数字输入及显示at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅24.8×8LED点阵显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅25.点阵LED“0-9”数字显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅26.点阵式LED简单图形显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅27.ADC0809 A/D转换器基本应用技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅28.数字电压表at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅29.两点间温度控制at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅30.四位数数字温度计at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅31.6位数显频率计数器at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅32.电子密码锁设计at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅33.4×4键盘及8位数码管显示构成的电子密码锁at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅34.带有存储器功能的数字温度计-DS1624技术应用at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅35DS18B20数字温度计使用第一章AT89S51单片机实验及实践系统板简介AT89S51单片机实验及实践系统板(以后简介系统板)集成多个硬件资源模块,每个模块各自可以成为独立的单元,也可以相互组合,因此,可以为不同阶层的单片机爱好者及单片机开发者提供不同的开发环境。
单片机汇编语言程序设计仿真实验
目的:1.掌握单片机仿真软件的使用。
2.掌握单片机汇编语言程序设计的基本方法。
3.掌握单片机编程、调试方法。
设计题目:
1、试编写程序。
统计内RAM 30H一50H单元中FFH的个数,并将统计结果存51H。
运行前程序:修改运行结果:
START:MOV 51H,#0
MOV R0,#20H
MOV R2,#20H
LOOP:MOV A,@R0
JNZ NEXT
INC 51H
NEXT:INC R0
DJNZ R2,LOOP
RET
2、从内RAM 30H单元开始存放着一组无符号数,其个数存在21H单元中。
试编写程序,找出其中最小的数,并将其存入20H单元中。
运行前程序:修改运行结果:
SECH:MOV R1,#30H
MOVX A,@R1
MOV B,A ;
MOV R2,#21H
SLOP:INC R1
MOVX A,@R1
CJNE A,B,SLP1
SLP1:JNC SLP2
MOV B,A
SLP2:DJNZ R2,SLOP
MOV R2,B
RET
3、设外RAM 2000H单元中有一个8位二进制数,试编程将该数的低四位屏蔽掉,并送回原存储单元。
运行前程序:修改执行程序:
MOV DPTR,#2000H
MOVX A,@DPTR
ANL A,#0F0
MOVX @DPTR,A
该程序在不同实验仪器上通过结果不同,应
该是编译环境问题。
主要原因在0F0后H
的显示选择。
4、试编写程序,求出内RAM20H单元中”1”的个数,并将结果存入21H单元。
运行前程序:修改执行程序:
MOV 21H,#0
MOV A,20H
LOOP: RLC A
JNC LOOP1
INC 21H
LOOP1:RET
5、试编一程序,分别统计在内部RAM的30H~50H单元的数据区中奇数和偶数的个数,并将奇数和偶数的个数分别存放在51H和52H单元中。
运行前程序:修改执行程序:
MOV 51H ,#0H
MOV 52H ,#0H
MOV R1 ,#30H
MOV R0 ,#21H
LOOP3:MOV A,@R1
ANL A,#01H
JZ LOOP1
INC 51H
INC R1
SJMP LOOP2
LOOP1:INC 52H
INC R1
LOOP2:DJNZ R0 , LOOP3
SJMP $
6、在2000H~2004H单元中,存有5个压缩的BCD码,试编程将它们转换成ASCII码,并存入2005H开始的连续单元中。
初始程序:
ORG 3000H
MOV DPTR,#2000H
MOV R0,#30H
MOV R7,#5
LOOP:MOVX A,@DPTR
MOV R5,A
ADD,A,#30H
MOV @R0,A
INC R0
MOV A,R5
SWAP A
ANL A,#0FH
ADD A,#30H
MOV @R0,A
INC R0
INC DPTR
DINZ R7,LOOP
LOOP1:MOV R1#30H
MOV R2,#10
MOV DPTR,#2005
LOOP2:MOV A,@R1
MOVX @DPTR,A
INC R1
INC DPTR
DINZ R2,LOOP2
END
修改执行程序:
软件实验小结:
本次实验中,我进一步掌握并理解了以MCS-51单片机为主的指令系统的功能及其应用,并且对课程中学到的寻址方式有了更深层次的理解。
在程序实践的过程中,掌握了单片机程序设计、编程、调试方法。
在这个过程中还熟悉了单片机仿真软件的应用,掌握了大部分基本的应用,这对以后工作中的项目开发、检测产生了有利影响。
更重要的是在之后的学习之路打下了坚实的基础,能更好地服务于下一步的硬件实验、课程设计和工程训练。