指令的占用的字节数可以不放在心上,因为现在的单片机的ROM容量都挺大的。
但如果寻址范围不注意的话,一旦汇编源程序长了就很容易出现错误。
特别是跳转指令等。
DPTR是16位寄存器。
LJMP addr16-------------0000H TO FFFFH
AJMP addr11-------------0000H TO 07FFH
SJMP rel-------------------负80H TO 7FH
JMP @A+DPTR----------0000H TO FFFFH
JZ rel-----------------------负80H TO 7FH ;累加器为0跳转
JNZ rel---------------------负80H TO 7FH ;累加器非0跳转
CJNE,DJNZ都是以rel作为跳转量的,这两个指令编程时经常用(如循环结构和条件结构),
小心跳转的范围了
CJNE:不等于则跳转 DJNZ:非零则跳转
关键字:MCS-51 单片机汇编 寻址范围
引用地址:
MCS-51单片机汇编中的“寻址范围”
推荐阅读最新更新时间:2024-03-16 15:03
MCS-51的中断请求的撤除方法列表
以外 中断 电平触发为例:当CPU响应该中断进入到服务程序后,在执行RETI指令返回主程序前,必须将外部的低电平撤掉,否则当CPU返回主程序后,会因为外部过长的低电平信号而使其再次进入中断,这样不仅造成一次多余的错误操作,而且使主程序无法正常运行。 同理,其它中断源也存在类似的问题。所以在使用中断时必须清楚在返回主程序前时,其中断请求(标志)是否要撤除、如何撤除等问题。 MCS-51的中断请求的撤除方法 图片1
[单片机]
基于MCS-51单片机的数码管显示自加1功能的实现
本文主要介绍基于MCS-51单片机的数码管显示实现自加1功能,从1一直显示到999.以下是硬件电路图、功能实现图以及源代码。(电路:使用74HC573锁存器控制段选,74H138控制位选;) 实现数码管自加的代码: #include reg52.h #define uchar unsigned char #define uint unsigned int uchar code table = {0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //
[单片机]
基于MCS-51汽油机电控燃油喷射系统的设计方案
汽车发动机燃油喷射技术是关系到内燃机发展中能源和环保的问题,随着电子技术的发展,汽车发动机燃油喷射系统不断发展并日趋完善。电控燃油喷射系统以其对喷油量的精确控制,使得喷射雾化良好、燃烧完全,不仅能提高汽车的动力性,而且还能显著改善汽车的动力性和经济性。 嵌入式系统与单片机已深入到众多技术领域,MCS-51系列单片机是使用最广泛的单片机系列,其中由Philips公司生产的89V51系列单片机,具有低功耗/低电压、高性能的特点,因此是一种功能强、灵活性高且价格合理的单片机,尤其是它片内的Flash ROM允许在系统内改编程序或用常规的非易失性存储器编程器来编程,给单片机的开发及应用带来便利。 文中所研究的系统在对汽油及
[单片机]
MCS-51单片机汇编指令详解
以累加器为目的操作数的指令 MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data 第一条指令中,Rn代表的是R0-R7。第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。第四条指令是将立即数data送到A中。 下面我们通过一些例子加以说明: MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。 MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。 MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这
[单片机]
MCS-51查找相同数个数程序
在2000~200FH中查出有几个字节是零,把零的个数放在2100H中。 程序框图 ORG 0AA0H 0AA0 7810 L5800: MOV R0,#10H ;查找16个字节 0AA2 7900 MOV R1,#00H 0AA4 902000 MOV DPTR,#2000H 0AA7 E0 L5811: MOVX A,@DPTR 0AA8 B40001 CJNE A,#00H,L5816;取出内容与00H相等吗? 0AAB 09 INC R1 ;取出个数加1 0AAC A3 L5816: INC DPTR 0AAD D8F8
[单片机]
MCS-51单片机内部包含哪些主要逻辑功能部件?
MCS-51单片机内部包含哪些主要逻辑功能部件有: (1)1个8位的微处理器CPU。 (2)8KB的片内程序存储器Flash ROM(51子系列的Flash ROM为4KB),用于烧录运行的程序、常数数据。 (3)256B的片内数据存储器RAM(51子系列的RAM为128B),在程序运行时可以随时写入数据和读出,用于存放函数相互传递的数据、接收的外部数据、中间结果、最后结果以及显示的数据等。 (4)3个16位的定时器/计数器(51子系列仅有2个定时器),每个定时器/计数器可以设置为计数方式,用于对外部事件信号进行计数,也可以设置为定时方式,满足各种定时要求。 (5)有一个管理6个中断源(51子系列1是5个中断源)、两个优
[单片机]
MCS-51单片机特殊功能寄存器详解
1、 定时器/计数器的方式寄存器TMOD TMOD是一个8位的特殊功能寄存器,对应的地址是89H,不可位寻址。 A 主要完成三个功能: *确定选择定时器还是计数器; *选择何种工作方式; *是否借用外中断控制定时器和计数器的启停; B TMOD的低4位是控制T0的字段(T0--P3.4 定时器/计数器0外部事件脉冲输入端) TMOD的高4位是控制T1的字段(T1--P3.5定时器/计数器1外部事件脉冲输入端) C 控制字的格式和含义 a、 GATE(TMOD.7) 分为两种情况:GATE=0,定时器的启停和INT1无关,只取决于TR0;
[单片机]
MCS-51系统中断优先级的软扩展
摘要:鉴于MCS-51系统只提供“二级中断嵌套”,提出扩展51系统中断优先级的纯软件方法。其利用51系统内建的中断允许寄存器IE和中断优先级寄存器IP,通过屏蔽字机制来实现;以C51的形式,给出这种扩展方法的函数库实现,为该方法的使用赋予友好、简洁的用户接口。
关键词:MCS-51单片机 中断优先级 软扩展 C51
引言
众所周知,MCS-51系统只提供“二级中断嵌套”,而大多数嵌入式系统希望有多于两级的优先级别。因为一般来说,系统都有掉电中断,且应置为最高优先级,这样所有其它中断只能共用一个最低优先级,如此,往往不能满足实际的逻辑需求。为了使系统具有多于两级的中断优先级别,可以利用8259A之类的中断控制芯片实现中断优先
[单片机]