GO:
MOV P3,#03H /设p3(00000011)低俩位不敢动他,一动就当机:(
nop
mov p1,#0fFh /p1口置1
mov a,p1
cjne a,#0fFh,in /检查有无按键按下,有跳到in
ljmp go
in:
mov 21h,P3 /以下是把p3.2 p3.3 p3.4 p3.5的值传给20h的高4位
nop
mov c,0AH
mov 04h,c
mov c,0BH
mov 05h,c
mov c,0CH
mov 06h,c
mov c,0DH
mov 07h,c / 接上
cpl a /a直求反
orl a,20h /a和20h或相加 变为10001000 等
cjne a,#88h,go /判断那个按键按下
mov a,#0feh /以下流水灯
main: mov p1,a
rr a
lcall d3ms
ajmp main
d3ms: mov r7,#255
d1: mov r6,#255
djnz r6,$
djnz r7,d1
ret
end
这是死循环:先是 p1 <--ffh,然后a <--p1,于是a=ffh
cjne a,#0ffh,in 跳转条件永不满足,程序不会跳转到 in。
mov 21h,P3 /以下是把p3.2 p3.3 p3.4 p3.5的值传给20h的高4位
你可能想说21h。但在这之前你没有对P3里的数据进行任何处理怎么可能把p3.2 p3.3 p3.4 p3.5 放到21h的高四位呢。
没有全部看完你的程序,就先提到这,仅供参考。