汇编语言编程单片机的问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 10:26:28
用汇编语言编单片机程序,可以直接给管脚赋值,比如
setb p1.0 就是p1.0脚置高,
那么有些单片机,不是用P1 P2 P3来定义管脚的
而是用PA PB PC来定义的,该怎么实现setb PA.0??

MOV P1,#00H其实是MOV 90H,#00H
SETB P1.0 其实是SETB 90H
就是说,P1和P1.0都代表一个寄存器地址而已,只不过那么多地址不好记,就起了个好记的名字叫P1,P1.O
他俩的地址都是90H 但一个是字节地址,一个是位地址,通过指令来区分是对哪个进行操作,对字节操作的指令如MOV ,就是P1 SETB 则对应P1.0
P1.1的地址就是91H, P1.2 对应 92H... ...
这些名字都是寄存器地址,其他单片机也一样,PA,PB,PC 也是地址
要SETB PA.0 首先要看PA这个寄存器能不能够位寻址,PA.O中的"."在汇编语言中是取位运算,一般做为引脚的寄存器都是可以位寻址的.
还有对于不同的单片机,指令也可能不太相同,SONIX的单片机就是
B0BSET P1.0.

不同系列的单片机汇编语句不同,您可以参照汇编指令表。

其实 置1 的办法有很多,最不会错的 你就把端口的寄存器的某位置一就可以了

有的单片机不可以直接对单一管脚付值,你提到的PA PB PC,可能是PIC单片机的I/O端口,如PA口有8个端口,必须8个比特一起写,可以只将需要的那一位置1,其他的置0,一起输出。