单片机综合实验 - 01 | 汇编程序设计二

单片机原理及应用实验报告 本次实验通过编写51单片机定时器中断程序和串口发送程序,加深了对51单片机定时器和串口通信接口的理解和掌握。通过本实验,我学习了Keil软件中C语言的使用方法,掌握了C51数据类型和存储器类型的概念及应用,并能够熟练地进行51单片机C语言程序设计。通过本实验,我学习了Keil软件的使用方法,掌握了51单片机的寻址方式和常用指令,并能够熟练地进行51单片机汇编语言程序设计。观察相应的寄存器和存储器变化,验证实验内容的正确性。观察相应的内存和寄存器变化,验证实验内容的正确性。1、学习Keil软件的使用。 阅读详情

一、实验目的和任务

1、掌握分支、循环结构程序以及子程序的设计方法。

2、进一步熟悉Keil C51集成开发环境。

二、实验原理简介

在汇编语言程序设计中,普遍采用结构化程序设计方法。因为任何复杂的程序都可由顺序结构、分支结构及循环结构等构成。每种结构只有一个入口和出口,整个程序也只有一个入口和出口。结构化程序设计的特点是程序的结构清晰、易于读写和验证、可靠性高。结构化程序设计的基本方法有顺序结构、分支结构、循环结构、子程序。

本实验在实验一基础上,要求掌握分支、循环结构程序以及子程序的设计方法。

三、实验内容和步骤

1、分支程序:是根据要求无条件或有条件地改变程序执行流向。编写分支程序主要在于正确使用转移指令。

设变量x以补码形式存放在片内RAM的30H单元中,变量y与x的关系如下:

      

程序代码如下所示:

		ORG	 0000H
		JMP	 MAIN
		ORG	 0100H
MAIN:	MOV	 30H,#0H
		MOV	 A,30H
		JZ	 NEXT
		ANL	 A,#80H
		JZ	 ED
		MOV	 A,#05H
		ADD	 A,30H
		MOV	 30H,A	;(30H)=20H 
		SJMP ED
NEXT:	MOV	 30H,#20H
ED:		SJMP $
		END

2、循环程序:循环程序一般包含四部分:初始化部分、循环处理部分、循环控制部分和循环修改部分。

设有一带符号的数组存放在内部RAM以20H为首址的连续单元中,数组长度为30,要求找出其中的最大值,并将其存放到内部RAM的1FH单元中。

程序代码如下所示:

		ORG	 0000H
		JMP	 MAIN
		ORG	 0100H
			
MAIN:	MOV  R0,#20H
		MOV  A,#0
		MOV  R1,#30
		MOV  DPTR,#TAB
		
LOOP1: PUSH ACC
		MOVC A,@A+DPTR
		MOV  @R0,A
		POP  ACC
		INC  R0
		INC  A
		DJNZ R1,LOOP1	
		
		MOV	 R0,#20H
		MOV	 B,#29
		MOV	 A,@R0
		
LOOP:	INC  R0
		MOV  R1,A
		XRL	 A,@R0
		JB	 ACC.7,LAT
		MOV	 A,R1
		CLR  C
		SUBB A,@R0
		JNB  ACC.7,AA
		NOP
		
CXA:	MOV  A,@R0
		SJMP BB
LAT:	XRL  A,@R0
		JNB  ACC.7,BB
		SJMP CXA
AA:		MOV  A,R1
BB:		DJNZ B,LOOP
		MOV  1FH,A
		
TAB: 	DB	-7,9,34,11,-43
		DB	-27,29,4,21,-13
		DB	-17,19,24,41,-23
		DB	-37,49,14,31,-53
		DB	-47,59,54,51,-54
		DB	-57,69,44,61,-45
		END

3、子程序:同一个程序中,往往有许多地方都需要执行同一任务,这时可对这项任务独立编写。

实验内容:设0、1、...、9存放在内部RAM的20H开始的存储区域内,对其进行平方运算,计算所得结果存放在R3、R2中。要求:平方运算编写成子程序SORT,主程序通过调用SORT并求和完成运算。参数的传递用累加器。

		ORG	 0000H
		JMP	 MAIN
		ORG	 0100H
			
MAIN:	MOV  R1,#20H
		MOV	 R2,#10
		MOV  A,#0
		
LOOP1:	MOV  @R1,A
		INC  R1
		INC  A
		DJNZ R2,LOOP1
		
		MOV  R0,#20H
		MOV  R7,#10
		MOV  R3,#0
		MOV  R2,#0
		CLR  C
		
LOOP:	MOV  A,@R0
		ACALL SORT
		ADD  A,R2
		MOV	 R2,A
		MOV  A,R3
		ADDC A,#0
		MOV  R3,A
		INC  R0
		DJNZ R7,LOOP
		SJMP EN
		
SORT:	MOV  DPTR,#TAB
		MOVC A,@A+DPTR
		RET
TAB: 	DB   0,1,4,9,16
		DB	 25,36,49,64,81
EN:		NOP
		END

【单片机】51单片机:基本 IO 实验及查表指令 基本I/O实验及查表指令 一个开关闭合后,有一个对应的 LED 指示灯亮 硬件电路: 汇编程序: ;基本I/O实验 ORG 0000H LJMP START ;P2 输入 P0 输出 ORG 0100H START: NOP LOOP: MOV P2, #0FFH ; 复位 P1 口为输入状态 MOV A, P2 ; MOV P0, A AJMP LOOP END ;查表... 阅读详情

相关推荐

单片机c语言中断程序实验报告,单片机实验之外部中断应用实验

一、实验目的1、掌握中断系统外部中断源的使用方法。 2、掌握延时程序的编程及使用方法。3、掌握Proteus软件与Keil软件的使用方法。4、掌握单片机系统的硬件和软件设计方法。 二、设计要求1、用Proteus软件画出电路原理图,在单片机的P1.0口线上接按键K0 ,作为外部中断源0使用,用于开启波形,在单片机的 P1.1口线上接按键K1,作为外部中断源1使用,用于关闭波形。2、在单片机的P1....

weixin_28987735的博客 6248

毕业设计 给初学单片机同学的40个实验

单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。做单一灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。

Nueve_Y的博客 2209

单片机试验七、定时器实验

目录一.实验目的:二.实验内容:三.实验步骤:四.实验参考程序:五、实验结果六、实验小结1.熟悉MCS-51单片机定时/计数器的定时工作原理及使用方法;2.进一步掌握定时/计数器的初始化和编程方法。3.进一步掌握中断程序的调试方法。初始化设置内部定时器T0工作在方式1,即作为16位定时器使用。定时时间为10ms,每10ms T0溢出中断一次,将P1.0~1.7分别接发光二极管L1~L8。编写程序模拟—时序控制装置。开机后第1秒L1、L3亮,第2秒L2、L4亮,第3秒L5、L7亮,第4秒L6、L8亮以后重头开

h486__的博客 5423

使用 89C51 单片机汇编语言编写的控制流水灯的程序

以上是使用 89C51 单片机汇编语言编写的控制流水灯的程序,其中最慢一次的流水总周期为1300ms,定时器采用中断方式。使用外部中断0来控制流水灯的方向,外部中断1来控制流水灯的速度。下面是使用 89C51 单片机汇编语言编写的控制流水灯的程序,其中使用外部中断0和外部中断1控制流水灯的流水方向和速度,最慢一次的流水总周期为1300ms,定时器采用中断方式。

weixin_39302449的博客 3809

告别安装报错!保姆级教程:用阿狸狗破戒大师V3.2.6搞定Cadence 17.4完整安装与补丁

本文提供Cadence 17.4的完整安装与破解教程,特别针对国内用户常见问题优化。从前期准备、镜像处理到阿狸狗破戒大师V3.2.6的智能破解,再到补丁管理与性能调优,详细指导每一步操作,确保一次性安装成功并提升设计效率。

weixin_30632089的博客 830

《MySQL高级篇》十四、多版本并发控制

《MySQL高级篇》十四、多版本并发控制

LXYDSF的博客 3991

【单片机】求用汇编语言写

【单片机】求用汇编语言写。题目链接:http://zhidao.baidu.com/question/1796366779473092307.html--------是思考题。这样的题目,要考虑一些技巧。动一动脑子,不能直来直去的编。特别是第三题,是已知数列求和,如果用循环50遍、累加,就不符合题意了。应该用数列求和的公式来做,简化程序,尽量缩短程序运行的时间。3.编程计算 2 + 4 + 6 +

做而论道的博客 1288

【无标题】EXCEL实现刷题

运用Excel开发的刷题工具,具有普遍实用性,可将WORD的试题自动导入并实现刷题。

weixin_44081794的博客 2970

单片机综合应用设计

89

weixin_71163455的博客 1922

反序列化漏洞详解

目录 一、什么是序列化和反序列化 二、什么是反序列化漏洞 三、序列化函数(serialize) 四、反序列化(unserialize) ​五、什么是PHP魔术方法 六、一些常见的魔术方法 七、魔术方法的利用 八、反序列化漏洞的利用 1.__destruct()函数 2.__wakeup() 3.toString() ​九、反序列化漏洞的防御 一、什么是序列化和反序列化 序列化是将对象转换为字符串以便存储传输的一种方式。而反序列化恰好就是序列化的逆过程,反序列化会将字符串.

LJH1999ZN的博客 3万+

[ensp报错:USG6000V错误代码45解决方案]

[ensp报错:USG6000V:错误代码45解决] [ensp报错:USG6000V:错误代码45解决] 第一种处理方式: ensp的45错误帮助文档里的解决方法:(这里就不说了,上华为爸爸的图) ensp的45错误:如果你的45错误不是描述的那个,可能是ensp与virtualbox不兼容了。 错误描述:具体表现为在virtualbox里没有vfw_usg的条目,虚拟介质管理器里也没有相应的条目: 就是vfw_usg_vdi这个 这种情况下你把ensp卸载重装多少次都没用,原因在两个软件的兼容

weixin_45456536的博客 3万+

猿创征文 | 实验一 单片机keil51软件使用及IO控制

(2)KEIL C51工程的建立,以及MCS-51单片微型计算机IO的控制。点击编译,出现上图的0 Errors,0 Warning,表示程序没用问题。(3)调试工程,并将工程下载到MCS-51微型计算机内,并脱机运行。可以看到红色箭头指向的单元格内容为47H的内容,实现了逆序输出。继续单步执行,运行完15行时,P3口的内容发生变化,变为55H。第三步,在40H开始的8个单元输入数据,方便后续执行查看结果。图片箭头指向的为60H,可以看到往后的8个单元格的内容。单步运行,当运行到下图的步骤时,P3口清零。.

weixin_53026957的博客 2416

无人机通信电台--XBee-PRO 900HP (S3B)

XBee PRO S3B也称为XBee-900HP无线模块,它是一款工作在频段900~928MHz之间,基于FHSS跳频技术的远距离无线数传电台核心模块。常用型号如下: 类别 型号 开发套件 XKB9-DMT-UHP XBee-PRO 900HP (S3B) DigiMesh模块,200Kbps,软天线 XBP9B-DMWT-002 XBee-PRO 900HP (S3B)...

low米的博客 4505

单片机汇编程序实验

** 单片机实验 目录单片机实验实验一1.略2.设计一个求解16位原码数据的补码的程序,要求:原码数据放在R1R0中,补码数据存放在R7R6中;3.设计一个求解两个16位原码数据的减法运算程序,要求:计算(31H)(30H)——(41H)(42H),最终结果以原码形式存放在51H和50H4.设计一个区域内数据查找程序,要求:查找在内部RAM的30H~50H单元中是否有0AA这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元设置为“00H”5.设计一个区域最大数查找程序,要求:在内容RAM

qq_44016148的博客 6802

【MNE脑电信号处理学习笔记1】数据的读取、可视化、剪裁、滤波和保存

MNE之读取原始数据、可视化数据、剪裁数据、滤波和保存 Reading & visualizaing raw data, cropping, filtering, and saving 原视频教程:Pybrain: M/EEG analysis with MNE Python 原笔记和材料:pybrain_mne 本文根据视频和个人理解对原笔记进行细微修改。 Import the few packages we’ll need import matplotlib import pathlib i

小白家 4214

阿里平头哥与华为芯片的比较

阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。

shao.bing的专栏 3968

keil下汇编程序的调试及hex文件详解

文章目录1. 创建工程并编写汇编程序2. 设置断点并开始调试3. hex文件格式详解 1. 创建工程并编写汇编程序 编写 test.s 文件 AREA MYDATA, DATA AREA MYCODE, CODE ENTRY EXPORT __main __main MOV R0, #10 MOV R1, #11 MOV R2, #12 MOV R3, #13 ;LDR R0, =func01 BL func01 ;LDR R1, =func02 BL func02

You can do more than just get by. 3125

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

汇编程序与周期性任务设计

问:请查阅汇编指令 “MOV R6,#250”和“DJNZ R6,D2”的指令周期数,计算其对应的时钟周期 us值;D1循环的总指令周期数为250次外部循环 × 250次内部循环 × 3指令周期/迭代 = 187,500指令周期。Delay函数的总指令周期数为:187,500指令周期 × 1微秒/指令周期 = 187,500微秒(us)。指令“DJNZ R6,D2”是一个双字节指令(一个字节的寄存器操作和一个字节的相对跳转),需要2个指令周期。

m0_74179545的博客 990

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

基于AT89S51单片机万年历的设计(汇编程序+仿真)

基于AT89S51单片机万年历的设计(汇编程序+仿真) 【下载地址】基于AT89S51单片机万年历的设计汇编程序仿真 本项目提供了一个基于AT89S51单片机的万年历设计,包含汇编程序和仿真文件,能够精确显示公历的年、月、日、时、分、秒以及农历日期。通过简洁高效的汇编语言编写,该项目不仅展示了单片机在实时时钟应用中的强大...

gitblog_06795的博客 422

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【51单片机】汇编程序与周期性任务设计

此次实验让我更加了解汇编语言和常用程序结构,特别是对通过软件多重循环软件计数的定时方法有了更深的认识。文章多有不足,欢迎批评指正。

normog的博客 1386

基于51单片机自动数字电压表PCF8591 TLC2543 TL548 proteus仿真汇编程序设计

硬件设计1 基于51单片机+PCF8591 ADC的仿真电路图: A. 基于51单片机和PCF8591的电压表,具有仿真图/源程序; B. 由数码管作为显示器; C.测试电压范围为0~5V,精度约为0.02 程序设计1 #include "config.h" #include "IIC.h" #include "display.h" #include "PCF8591.h" // 初始化定时器零 void Init_Timer0() { TMOD = 0x01; TH0 = 0xd8; TL0

weixin_44116175的博客 5231

设计分享|单片机多音阶电子琴(汇编)

具体实现功能:设计介绍单片机介绍设计思路设计内容仿真实现汇编程序按下不同的按键分别发出不同的音阶,分别可以发出以下音阶:低3,低4,低5,低6 ,低7;中1,中2,中3;中4,中5,中6,中7;高1,高2,高3,高4。

DZGCSCZRJ的博客 1460

设计分享|单片机LED点阵时钟(汇编)

目录具体实现功能:设计介绍单片机介绍设计思路设计内容仿真实现汇编程序通过5个8*8led点阵显示数字时间,显示时分,从12点开始计时,显示时间格式为:12::00。

DZGCSCZRJ的博客 985

单片机实验三

实验3.1 P1 口作输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。(采用软件延时的方法) 本次实验开始都将采用汇编和C语言两种方式编写程序,同时提高汇编能力和C语言能力。 以下是汇编程序: ORG 0000H JMP STARTSTART: MOV P1,#01H F: CALL D500 MOV A,P1 RL A MOV P1,A SJMP FD500: ;这

xx_313183373的博客 3028

51单片机数码管交通灯倒计时c语言,51单片机数码管倒计时模拟交通灯汇编程序...

/**********************************************************************51单片机数码管倒计时模拟交通灯汇编程序LED数码管为4位共阳数码管P0口为数码管段码口,段码口驱动为74HC573P1口为数码管位码口,位码口驱动为9013数码管从左向右分别为1,2,3,4P1.0,P1.1,P1.2,P1.3分别对应数码管1,2,3,4...

weixin_42361635的博客 4766
上一篇: Rockchip | Rockchip固件升级工具
下一篇: 单片机综合实验 - 02 | 中断与定时/计数器实验
嵌入式逍遥
嵌入式逍遥 领域专家: 嵌入式与硬件开发技术领域 领域专家: 嵌入式与硬件开发技术领域
博客等级 码龄9年 7万+粉丝 237原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式逍遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值