本帖最后由 大哈欠E 于 2013-8-11 22:29 编辑
看到一个扫描矩阵行列程序的一部分,看了一下郁闷了。。。
KEY: MOV A,#00H
MOV DPTR,#POTR1 ;port1为单片机的io口
MOVX @DPTR,A ;把行全部赋值为00H 相当于port1=00h
MOV DPTR,#PORT2 ;读取列的值
MOVX A,@DPTR
有两个问题:
1、为什么要这样写,读取列端口port2的值为什么用movx(对外部RAM的数据传送)?难道51单片机的io口port2属于片外ram吗?它的端口不是特殊功能寄存器的一个单元吗 2、为什么不这样写
mov port1,#00h
mov a,port2
?访问51的sfr不是直接寻址的吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
让你这么一问让我反而不知道该怎样作答了,感觉你把两个内容搞混了,这种间接寻址是对于变量自身来说的,并不是针对SFR来说的,例如你例子中的#POTR1,#POTR2,也就是说对于#POTR1,#POTR2是间接寻址,而不是对于DPTR,在这个例子中#POTR1,#POTR2为立即数
一周热门 更多>