作业:多字节无符号数加法运算程序
入口:R0=被加数低位地址指针
R1=加数低位地址指针
出口:R0=和数高位地址指针
1、先fileànew 建asm文件18.asm
CLR C
LOOP1:MOV A,@R0
ADDC A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R2,LOOP1
JNC LOOP2
MOV @R0,#01H
RET
LOOP2:DEC R0
RET
END
为了调试时看数据,预先赋值,所以程序前加:
MOV 30H,#78H
MOV 31H,#56H
MOV 32H,#34H
MOV 33H,#12H
MOV 40H,#0F0H
MOV 41H,#0DEH
MOV 42H,#0BCH
MOV 43H,#9AH
MOV R0,#30H
MOV R1,#40H
MOV R2,#4
2、建新工程,Projectànew project ,选AtemlàAT89C51 ,导入文件18.asm。
注意,对初学者,一个工程里只能有本程序18.asm,无关的程序要删除,新试验一个程序最好重新建工程,以保证一个工程里只有你要试验的那一个程序。
3、可见程序:
4、编译通过后,点debug下的start/stop开始调试, step 和step over都是单步调试,step是遇到子程序或中断也要进入进行单步调试,step over是遇到子程序或中断当一句一次执行完。本程序物子程序,二者是一样的。我们执行赋值语句得到:
点view àmemory windows,再输入D:30h回车,得到:
接着执行:可见R0,R1,R2值的改变:
继续执行:
下一步:
下一步:
可见:30H内容变为68H.
下一步:
R0,R1值都加一,继续:
可见R2值减1,但不为0,所以跳转到LOOP1.继续:经过几次循环之后,直到R2变为0,此时不再循环,可看到:
30H,31H,32,,3H值都已改变。继续执行:
此时CY不为0,所以跳转到LOOP2。
可看到r0减1,变为33H,即为和数高位地址指针,指向33h处。
关键字:单片机 地址指针
引用地址:单片机第四次作业
入口:R0=被加数低位地址指针
R1=加数低位地址指针
出口:R0=和数高位地址指针
1、先fileànew
CLR C
LOOP1:MOV A,@R0
LOOP2:DEC R0
END
为了调试时看数据,预先赋值,所以程序前加:
MOV 30H,#78H
MOV 31H,#56H
MOV 32H,#34H
MOV 33H,#12H
MOV 40H,#0F0H
MOV 41H,#0DEH
MOV 42H,#0BCH
MOV 43H,#9AH
MOV R0,#30H
MOV R1,#40H
MOV R2,#4
2、建新工程,Projectànew
3、可见程序:
4、编译通过后,点debug下的start/stop开始调试,
点view
接着执行:可见R0,R1,R2值的改变:
继续执行:
下一步:
下一步:
可见:30H内容变为68H.
下一步:
R0,R1值都加一,继续:
可见R2值减1,但不为0,所以跳转到LOOP1.继续:经过几次循环之后,直到R2变为0,此时不再循环,可看到:
30H,31H,32,,3H值都已改变。继续执行:
此时CY不为0,所以跳转到LOOP2。
可看到r0减1,变为33H,即为和数高位地址指针,指向33h处。
推荐阅读最新更新时间:2024-03-16 14:37
【ARM学习笔记】四、微控制单元器MCU、ARM及SDRAM简介
很多人不知道,其实世界上第一台电子计算机是“阿塔纳索夫-贝瑞计算机”(Atanasoff-Berry Computer,简称ABC)。 它是美国爱荷华州立大学的约翰·文森特·阿塔纳索夫(John Vincent Atanasoff)教授和他的研究生克利福特·贝瑞(Clifford Berry)在1937年设计的。 遗憾的是当时仅仅用于求解线性方程组,也没有申请专利,爱荷华州立大学也没有对其重视,后因校园改建将其拆除,零件也丢弃了。 ENIAC正是利用了阿塔纳索夫的构思而进行的二次改造而发明,所以国内几乎所有的文献资料都将ENIAC称为世界上第一台计算机,其实是错误的,在1973年10月19日,就连明尼苏达州一家法院也判决ENIAC
[单片机]
51单片机入门—蜂鸣器和继电器
我们具体以题目来介绍蜂鸣器和继电器:(在LED灯基本控制的基础上实现的) ULN2003达林顿晶体管和74HC573锁存器 达林顿晶体管的内部构造图: 里面是一个非门,输入1,就会输出0,输入0就会输出1 138译码器可以控制Y0到Y7的锁存器输出低电平,通过编码输出低电平(能输出高电平??) 或非门 从Y5端输入低电平,Y5C输出高电平,使锁存器工作 蜂鸣器和继电器 :记住GND是低电平,VCC是高电平(这就很容易能看懂了) 代码如下: #include reg52.h sbit HC138_C=P2^7; sbit HC138_B=P2^6; sbit HC138_A=P2^5; void
[单片机]
freescale单片机单精度浮点与16进制与ascii之间的转换
//---将单精度浮点转换成unsigned char数组,然后将unsigned char数组转换成ascii码字符串 float BallData = {-8.925133}; unsigned char *f2char; unsigned char ControlData ; void float2uchar2ascii(void) { unsigned char i = 0; f2char = //float to unsiged char //8个floatd对应于32个unsigned char,所以f2char为32位 //f2char ={0xC10E
[单片机]
ARM7单片机(学习ing)—(四)、定时器—02
只要知道了Startup.s中对单片机时钟的定义~~ 也就是这句话:当外部晶振频率为12MHz时,系统时钟60MHz,外设时钟15MHz~~ 无敌了~~ 感觉一下子好学了好多~~ 不过我还是有点不太清楚就是外设时钟?为什么是15MHz~~ 现在可以先留着~~慢慢来吧~~ 四、定时器 四—(02)、定时控制LED闪烁(应用查询法~~) MDK4_1.c //------------------------------------------------------------------------------ //使用定时器0实现1s定时,控制LED闪烁 //今天使用的是查询法~~ #include lpc210x.
[单片机]
STM32单片机是怎样执行中断函数中的应用的
在STM32单片机的编程当中,中断函数的名称都是xxx_IRQHandler格式的。那当编译程序的时候是怎么知道这是一个中断函数的呢? 每个中断都是有入口地址的。程序在执行过程中遇到中断的时候,会先判断这个中断的类型,根据类型再到中断向量表中查找,找到之后,根据表中指明的地址,程序就跳到该地址开始执行代码。 ST提供的固件库当中,有提供一个stm32f10x_it.c文件,打开之后会发现里面放的都是些空函数,但是名字都是“xxx_Handler()”格式,需要使用某个中断的时候,在代码中使能该中断,并到这个文件中将中断服务函数添加上,就可以了。 而这些名字就是一个个的中断函数入口地址。在启动代码中便有这些定义。如下图所示:
[单片机]
MAX517与51单片机的I2C总线数据通信
1 I2C总线的特点及基本通信协议
I2C总线是Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线?串行数据线和串行时钟线?即可使连接于总线上的器件之间实现信息传送,同时可通过对器件进行软件寻址,而不是对硬件进行片选寻址的方式来节约通信线数目,从而减少了硬件所占空间。因为总线已集成在片内,所以大大缩短了设计时间,此外,在从系统中移去或增加集成电路芯片时,对总线上的其它集成芯片没有影响。
1.1 I2C总线的主要特点
I2C总线通常由两根线构成:串行数据线(SDA)和串行时钟线(SCL);总线上所有的器件都可以通过软件寻址,并保持简单的主从关系,其中主器件既可以作为发送器,又可以作为接收器;
[单片机]
AVR单片机硬件电路设计方法详解
Mega16已经内置了上电复位设计。并且在熔丝位里,可以控制复位时的额外时间,故AVR外部的复位线路在上电时,可以设计得很简单:直接拉一只10K的电阻到VCC即可 (R0)。为了可靠,再加上一只0.1uF的电容(C0)以消除干扰、杂波。D3(1N4148($0.0054))的作用有两个:作用一是将复位输入的最高电压钳在 Vcc+0.5V 左右,另一作用是系统断电时,将R0(10K)电阻短路,让C0快速放电,让下一次来电时,能产生有效的复位。当AVR在工作时,按下S0开关时,复位脚变成低电平,触发AVR芯片复位。 重要说明:实际应用时,如果你不需要复位按钮,复位脚可以不接任何的零件,AVR芯片也能稳定工作。即这部分不需要任
[单片机]
微控制器的FSMC到底是咋回事?(下)
摘要:上一篇文章我们具体讲解了FSMC的原理配置,这一章主要是关于使用FSMC的SRAM初始化流程,以及使用STM32CubeMX对FSMC进行配置。 一、SRAM初始化流程 通过上面的讲解,通过对 FSMC 相关的寄存器的描述,大家对 FSMC 的原理有了一个初步的认识,如果还不熟悉的朋友,请一定要搜索网络资料理解FSMC的原理。只有理解了原理,使用库函数才可以得心应手。那么在库函数中是怎么实现FSMC的配置的呢?FSMC_BCRx,FSMC_BTRx 寄存器在库函数是通过什么函数来配置的呢?下面我们来讲解一下 FSMC 相关的库函数: 1.1 使能FSMC时钟 要使用FSMC,当然首先得开启其时钟。然后需要把
[单片机]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月13日历史上的今天
厂商技术中心