蓝桥杯单片机第十三届国赛中的 PWM功能,题目要求周期为1ms.为确保准确我采用定时器计时,设定的是200us进一次中断,但是速度太快造成一个问题,由于端口输出时候使用的也是P0口,会将之前的P0口的值覆盖掉,所以造成LED与数码管乱闪的问题,我预先的解决方法是在中断中重新显示一遍,但只能解决LED乱闪的问题,数码管扫描时间太长不适合放在中断中执行.所以希望得到一种解决方法。
下面是我选用不同573时候用的代码
void SelectHC573(unsigned char channel,unsigned char dat)
{
P0=dat;
switch(channel)
{
case 4:
P2=(P2&0x1f)|0x80;
break;
case 5:
P2=(P2&0x1f)|0xa0;
break;
case 6:
P2=(P2&0x1f)|0xc0;
break;
case 7:
P2=(P2&0x1f)|0xe0;
break;
case 0:
P2=(P2&0x1f)|0x00;
break;
}
P2=(P2&0x1f)|0x00;
}