单片机汇编寄存器间接寻址

来源:百度知道 编辑:UC知道 时间:2024/06/27 09:15:40
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV TMOD,#0FAH
MOV R0,#89H
MOV P1,@R0;为什么显示的是0x00啊。
MOV P2,89H;可以把TMOD 值显示到P2上面。
SJMP MAIN
END

TMOD 的字节单元为89H,我想把他的地址赋给R0,之后通过@R0把TMOD的值赋给P1,请问这样有错吗,为什么P1口显示的全是低电平?
tuyong,还是不行啊!!

MOV P1,@R0,你这么写是不对的,因为TMOD是专用寄存器,只能进行直接寻址

你应该写MOV P1,R0;
否则就把89H这个地址里边的内容(那个地址可能值正好是00)给了P1

你这里写没写明TMOD单元为89H。
MOV P1,@R0 是把单元89H的内容给了P1。你应该
应该这样:
MOV 89H,#0FAH
MOV R0,#89H
MOV P1,@R0
MOV P2,89H
SJMP MAIN
END

这样应该也行吧