单片机里EQU是什么指令?作用?
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
参考资料来源:百度百科-伪指令
单机片中EQU指令是伪指令,作用是用赋值伪操作给重复出现的数值或寄存器赋予一个名字,即把一个符号名称与一个整数表达式或一个任意文本连接起来,方便操作。
在单片机中用EQU指令来赋值以后数据或者寄存器的字符名,可以用来代表数据地址、代码地址、或者用来当做立即数进行使用。
扩展资料:
EQU 指令格式: 符号名 EQU 表达式
符号名:EQU 寄存器名
表达式必须是一个简单再定位表达式。
用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。
比如:
s equ bx+si
mov cx,[s]
那么上面两句代码相当于如下指令:
mov cx,[bx+si]
参考资料来源:百度百科-伪指令
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输出低电平,其他都为高。
推荐于2017-05-18
2013-06-05
但是P0/P1这在头文件里(regXX.h)已经定义过了,指向了SFR中的P0和P1口。
所以你这里定义,要将P0,P1改成别的头文件里没有的,当然程序的P0和P1,也要相应的改动。
根据74LS138的规格书(网上搜“74ls138 pdf”),可以知道G1接高电平;G2A、G2B接低电平有效。