我看了你的程序,由于你只给出了部分程序我不能说什么,另外估计你使用的是动态显示,低电平有效,用P2作为数码管选择信号。因为引起这个因素很多。我说几中情况,首先看一下你中断时侯有没有保护一些敏感数据,另外就是lcall delay_led 后面加 mov p2,#0ffh 看一下会不会正常
更换位时将端口清零,再加2个NOP。
看你的程序总体没什么大问题,看问题是P0。6角一直是0电平,查下单片机有没坏,要不就看是不是焊接时不小心把引脚给短接到其它地方了。如果硬件真的没问题,就重新写个程序再看看,另外看下有不是有什么地方开中断,导致冲突。
测试引脚很快的,先把该脚从电路上断开,外接一个电阻加LED,随便写个闪灯程序试下就知道了:
ORG 0000H
SJMP START
START:
CPL P0.6 ;------------
LCALL DELAY
SJMP START
;-------------
DELAY: ;高精度延时0.5s (无中断)
DEY1 DATA 1FH
DEY2 DATA 1EH
DEY3 DATA 1DH
MOV DEY1,#50 ;0.5S
DL1:
MOV DEY2,#200 ;10mS
DL2:
MOV DEY3,#184 ;50uS 18.441828M(5T)
DJNZ DEY3,$
DJNZ DEY2,DL2
DJNZ DEY1,DL1
RET
;-------------
END
还有,如果这只是你程序中的一部分的话,最好查下程序的地址空间分配,看有没有冲突。
应该是数码管放错了
换个共阳或者共阴的