我想实现P1.1端口跟随P1.4端口同步输出,都是驱动LED,P1.4端口使用定时器定时翻转,主循环程序随时判断P1.4状态,同步驱动P1.1。
开始我是这样写的:
OUT BIT P1.4
LED BIT P1.1
ORG 0000H
AJMP main
ORG 000BH
AJMP TIME0
ORG 0030H
main:
MOV TMOD,#01H
MOV TH0,#00h
MOV TL0,#00h
MOV R0,#00H
SETB EA
SETB ET0
SETB TR0
LOOP:
MOV C,OUT
MOV LED,C
AJMP LOOP
TIME0:
MOV TH0,#00h
MOV TL0,#00h
INC R0
CJNE R0,#10H,TIME9
CPL OUT
MOV R0,#00H
TIME9:
RETI
END
看来没问题,在KEIL仿真运行也没问题,可是下载到89S52中,只见OUT闪烁,LED根本不动,奇怪??
后来经过查阅资料和网络搜索,是由于准双向口的结构问题造成的!
然后增加了一个FLAG标志位,才解决。
OUT BIT P1.4
LED BIT P1.1
FLAG BIT 00H
ORG 0000H
AJMP main
ORG 000BH
AJMP TIME0
ORG 0030H
main:
MOV TMOD,#01H
MOV TH0,#00h
MOV TL0,#00h
MOV R0,#00H
SETB EA
SETB ET0
SETB TR0
LOOP:
MOV C,FLAG
MOV LED,C
AJMP LOOP
TIME0:
MOV TH0,#00h
MOV TL0,#00h
INC R0
CJNE R0,#10H,TIME9
CPL FLAG
MOV C,FLAG
MOV OUT,C
MOV R0,#00H
TIME9:
RETI
END
所以,以后有类似的应用时大家编程时要注意喽!