1个stc8f2k08s2单片机,共20个脚,估计焊接时不小心把第3脚p1.4内部搞断了,与其它脚电阻为无穷大,正常时各脚之间都有一定阻值的。这样p1段就无法驱动数码管了,p3段由于要用外中断p3.2,也不能驱动数码管。不想放弃,尝试用p5.4代替,方法是:p5.4=p1.4,然后将本来接p1.4的数码管脚接到p5.4上,结果失败。看来脚与脚之间不能直接赋值。
经过请教高手和查找资料,终于通过位操作替代成功,完美驱动2位数码管。方法见下方。
单片机断脚替代方法
stc8f2k08s2第3脚断,用P5^4替代P1^4驱动数码管方法步骤:
1 改连线
将数码管连接P1^4的线改接到P5^4上。
2 改程序
#define DataPort P1;
sbit d54=P5^4;//定义一个变量给P5^4赋值,替代P1^4
unsigned char m,z;
void display_SMG_m(void)
{
P1=table[m%100/10]^0x80;//先给P1赋值
z=P1>>4;//将P1的值右移4位,使P1^4的值处于右边最低位
d54=z&0x01;//获取P1^4的值,给P5^4赋值
led3=0;//点亮数码管
delayms(5);
led3=1;
P1=table[m%10];
z=P1>>4;
d54=z&0x01;
led4=0;
delayms(5);
led4=1;
}
|