void Timer0_isr(void) interrupt 1 using 1
{
static unsigned char i;
//重新赋值 12M晶振计算,指令周期1uS,500x2=1mS方波
TH0=(65536-500)/256;
TL0=(65536-500)%256;
i++;
P1=i;
}
{
static unsigned char i;
//重新赋值 12M晶振计算,指令周期1uS,500x2=1mS方波
TH0=(65536-500)/256;
TL0=(65536-500)%256;
i++;
P1=i;
}
刚开始一直弄不明白为什么这个中断能够产生一个如下的逻辑频分图

简单的两个赋值居然巧妙的实现了电频的频分,原来只要把他的数字逻辑写出来就足够清晰了
0=00000000
1=00000001
2=00000010
3=00000011
4=00000100
5=00000101
6=00000110
7=00000111
8=00001000
9=00001001
10=00001010
由此我们不难发现,引脚p1.0其实每个时间单位都在翻转,p1.1则是两个单位进行一次翻转,依次类推,于是用这样一个巧妙的技巧就能够实现多路方波的不同输出,从此可以看出,数字逻辑电路与mcu的开发是密不可分的,一定要有扎实的数字逻辑电路!!!
浙公网安备 33010602011771号