单片机里EQU是什么指令?作用?

P1 EQU 8200H
P0 EQU 8300H
org 0000H
SJMP STAR
ORG 0040H
。。。。。
。。。。
。。。这个是我用74LS138与AT89S52连接,把138当作数据分配器来使用。把整个P1、P0共16个地址全部定义到138的分配的空间上。
然后编译后
P1 EQU 8200H
P0 EQU 8300H 这两句显示的错误是:
error A10:ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL.
error A10:ATTEMPT TO DEFINE AN ALREADY DEFINED SYMBOL.
中文意思是:试图确定一个已经定义的符号。
请问这个要如何解决。
知道138译码器当作数据分配使用时,三个选通端G1、G2A、G2B怎么接的也可以回答。非常感谢啦。。谢谢啦。谢谢啦。非常感谢。

单机片中EQU指令是伪指令,作用是用赋值伪操作给重复出现的数值或寄存器赋予一个名字,即把一个符号名称与一个整数表达式或一个任意文本连接起来,方便操作。

在单片机中用EQU指令来赋值以后数据或者寄存器的字符名,可以用来代表数据地址、代码地址、或者用来当做立即数进行使用。  

扩展资料:

在同一源代码文件中,用EQU定义的符号不能被重新定义,这与=伪指令不同,这个限制可以防止现有符号在无意中被赋予新值。其中,EQU有3种格式,分别是:

1、name EQU expression。这种格式中,EQU中的expression必须是一个有效整数表达式。

2、name EQU symbol。这种格式中,EQU中symbol是一个已存在的符号名称,已经用=或EQU定义过了。

3、name EQU <text>。这种格式中,EQU中任何文本都可以岀现在<…>内。当汇编器在程序后面遇到 name 时,它就用整数值或文本来代替符号。

参考资料来源:百度百科-equ

参考资料来源:百度百科-伪指令

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-02-28

单机片中EQU指令是伪指令,作用是用赋值伪操作给重复出现的数值或寄存器赋予一个名字,即把一个符号名称与一个整数表达式或一个任意文本连接起来,方便操作。

在单片机中用EQU指令来赋值以后数据或者寄存器的字符名,可以用来代表数据地址、代码地址、或者用来当做立即数进行使用。

扩展资料:

EQU 指令格式: 符号名 EQU 表达式

符号名:EQU 寄存器名

表达式必须是一个简单再定位表达式。

用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。

比如:

s equ bx+si

mov cx,[s]

那么上面两句代码相当于如下指令:

mov cx,[bx+si]

参考资料来源:百度百科-伪指令

本回答被网友采纳
第2个回答  2013-06-05
我来回答吧。
EQU其实就是为了书写的方便,用EQU左边的来等价右边的,不参与编译的。
比如PPP EQU 20H,在编译之前,会将你程序里出现的所有的PPP,都用20H替换。

你程序里用到的P1和P0是系统已经定义的P口,这样你程序里出现P0、P1系统就不知道是8200H还是真正的P口了,所以这样的定义是不符合要求的,改个名字就可以了。

第三个问题:138的G1是接高电平的,G2A、G2B是接低电平的,这样138才会有输出。
输出的就是CBA对应的译码值,比如CBA是001,那么Y1输出低电平,其他都为高。
第3个回答  推荐于2017-05-18
EQU 的意思就是 给地址定义一个标识。相当于别称。 比如:P1 EQU 8200H 的意思就是 P1相当于8200H单元 很久没碰汇编,不知道说的对不对本回答被网友采纳
第4个回答  2013-06-05
EQU 是一条伪指令,是在你程序被编译时,就将P0指向8300H。P1同理。

但是P0/P1这在头文件里(regXX.h)已经定义过了,指向了SFR中的P0和P1口。

所以你这里定义,要将P0,P1改成别的头文件里没有的,当然程序的P0和P1,也要相应的改动。

根据74LS138的规格书(网上搜“74ls138 pdf”),可以知道G1接高电平;G2A、G2B接低电平有效。
相似回答