不直接MOV读出P0口的值,有几种方法?
单片机吧
全部回复
仅看楼主
level 6
hgmmym 楼主
比如MOV A,P0和MOV A,80H都不算。。。
2013年04月05日 08点04分 1
level 9
有意义么?就像问“回”字有多少种写法一样。
不用mov,换成加法减法各种逻辑指令不一样可以取出来?意义何在?
2013年04月05日 13点04分 2
意义重大,特殊寄存器不存在间接寻址,只能直接读出。而我现在在不确定要寻址哪个io口的情况下必须要弄个间接寻址,那应该怎么弄?
2013年04月06日 04点04分
level 6
hgmmym 楼主
不过现在已经直接将P1、2、3口直接存进别的地址里面保存了再间接寻址,也算一个解决方法了,让帖子沉了吧。
2013年04月06日 04点04分 3
你能直接将P1、2、3口直接存进别的地址里面? 将P1的值保存到别的地址里面 实际经过的步骤是这样的 将P1值放到A里面,将A值在放到别的地址里面保存起来 MOV 20H,P1 实际是相当于两条指令的 MOV A,P1 MOV 20H,A
2013年04月06日 07点04分
回复 桔子神功 :经过测试,MOV 20H,P1是可以的。。。。。
2013年04月06日 09点04分
回复 hgmmym :你还没明白我的意思 MOV 20H,P1 但是单片机执行起来不是直接一步到位的 要按照我说的步骤执行的
2013年04月06日 10点04分
回复 桔子神功 :简单点说 当你 MOV 20H,P1执行完这条指令 你若仿真的话 就能发现此时的A里面值等于P1的值
2013年04月06日 10点04分
level 4
先sbit或XBYTE或_at_,随时可以改
2013年04月06日 07点04分 4
后面那俩指令是c的?
2013年04月06日 09点04分
回复 hgmmym :三个都是C51的,第一个定义特殊功能寄存器的位变量,后面两个使用地址线,接外设
2013年04月06日 11点04分
level 13
除了间接寻址 卤煮就不要有其他想法了 所有的加减乘除运算还有与或逻辑运算都涉及到Acc寄存器 都是先把结果暂存在A里面的 所以也只能直接读
而系统寄存器是不能间接寻址的 只能直接读出来 卤煮就不要有其他想法了
2013年04月06日 07点04分 5
1