单片机汇编高手请进

2024-12-26 23:52:11
推荐回答(5个)
回答1:

这是宏定义,LED_0 EQU 30H :定义了以个变量LED_0为30h单元
LED_1 EQU 31H :定义了以个变量LED_1为31h单元
LED_2 EQU 32H :定义了以个变量LED_2为32h单元
CLOCK BIT P2.4 :这句的意思是CLOCK代表P2.4口
ST BIT P2.5 :这句的意思是ST代表P2.5口
EOC BIT P2.6 :这句的意思是EOC代表P2.6口
OE BIT P2.7 :这句的意思是OE代表P2.7口
先给你解释后四句的意义,在实际的硬件电路中,我的单片机外接一个设备 例如:LCD液晶显示器,我知道LCD各个管脚的名字和功能,与单片机的IO口连接以后,各个管脚与IO口对应,编写程序时就可以通过控制对应的IO口来控制LCD,但有时会记错,系统小时不明显,大了就很明显了。为了方便记忆,我在编写程序之前先进行一下宏定义,即就想你所提问的这段程序,设备的CLOCK管脚接P2.4,然后定义CLOCK BIT P2.4。
上面的三句其实和下面的差不多,也是为了方便记忆,有比较容易记忆的名字代表一个RAM中的单元。

回答2:

伪指令,指示性语句,相当于宏。
LED EQU 30H 是将30H取个名字LED,30H可以是地址也可以是数据。
比如说:
MOV A,#LED(作数据)
MOV A,LED(作地址)
BIT和EQU很相似,但是BIT只能跟位地址,不能表示数据。
比如说:
AA EQU 00H和BB BIT 00H表示的内存单元是不同的,AA表示RAM的00H单元,也就是R0,而BB表示20H的第一位。

回答3:

EQU 定义字节变量
LED_0 EQU 30H
变量名LED_0 使用地址30H 其实在下面使用时 等价于30H 之所以定义 是为了程序看起来更清晰 而且比如说要换掉30H 那么只需要在开头把30H这个地址换成别的 而不必程序里每一处都去换它
BIT 定义位变量 其他同上。

回答4:

单片机的伪指令
把寄存器地址或位地址赋予通俗易懂的词,增加程序的可读性,跟C中的常量定义差不多原理吧

回答5:

EQU、BIT是伪指令,分别将其后边的数值定义给其前边的符号变量,以后程序中出现该符号时就当做那个数值用。EQU定义的是字节变量、BIT定义的是位变量。建议最好学习一下伪指令,因为还有许多其它伪指令。
LED_0 EQU 30H ;将30H定义给LED_0
LED_1 EQU 31H ;将31H定义给LED_1
LED_2 EQU 32H ;将32H定义给LED_2
ADC EQU 35H ;将35H定义给ADC
CLOCK BIT P2.4; 将P2.4定义给CLOCK
ST BIT P2.5 ;将P2.5定义给ST
EOC BIT P2.6 ;将P2.6定义给EOC
OE BIT P2.7 ;将P2.7定义给OE