作业帮 > 综合 > 作业

51单片机的程序问题 将累加器A中低四位的状态,通过P1口的高4位输出.

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/21 19:31:03
51单片机的程序问题 将累加器A中低四位的状态,通过P1口的高4位输出.
ANL A,#0FH ;屏蔽A.A.4
SWAP A ;高、低半字节交换
ANL P1,#0FH ;清P1口高四位
ORL P1,A ;使P1.P.1.4按A中初始值的A.A.0值置位
里面的“屏蔽A.A.A.A.P1.P.1.A.A.
51单片机的程序问题 将累加器A中低四位的状态,通过P1口的高4位输出.
A 中有八位数,记为:7654_3210
P1中有八位数,记为:8888_9999
ANL A,#0FH ;屏蔽A.7~A.4 --- A=0000_3210
SWAP A ;高、低半字节交换- A=3210_0000
ANL P1,#0FH ;清P1口高四位 --P1=0000_9999
ORL P1,A ;使P1.7~P.1.4按A中初始值的A.3~A.0值置位
---------------- P1 = 3210_9999
这就实现了:累加器A中低四位3210,通过P1口的高4位8888的位置输出.
再问: 你好 你回答的真好 我还能问个白痴的问题就是为什么记为8888_9999而不是7654_3210 有什么差别???还有个问题是ANL是与的意思 这里用ANL有什么意义 用MOV A,#0FH不是一样???还有用ORL怎么实现清零的 ANL的规则不是有0出0 全1出一 ORL的规则是有1出1,全0出0 这里都怎么实现清0的 我会提高悬赏分的
再答: 记为8888_9999而不是7654_3210,这都是随便写的。 写成一样的,就难以区分了。 ------------- 因为,它最后,要用《或、ORL》指令,把两个《四位数》,合在一起,到P1, 那么,不用的数字,如用 7654、8888 所标记的这几个位,就要,必须变成0,即清零。 -- 清零,是用《与、ANL》, 0F=0000 1111 来完成的,如下: ANL A, #0FH ;屏蔽A.7~A.4 --- A=0000_3210 ANL P1,#0FH ;清P1口高四位 --P1=0000_9999 本来,是很简单事,不过就是把高四位都变成 0 而已。 文中,偏偏用了两个词:屏蔽、清高四位,说法却不一,明显是故弄玄虚。 都用《屏蔽高四位》,或都用《清.7~.4》,说法就一致了。 呵呵,有些人,计算机的技术水平较高,但是,表达能力,却不怎么样。