系统时钟和定时器——PWM定时器
E) /*判断是否重启*/
{
rTCON &= ~0x1F;
rTCON |= 0xf;
rTCON &= ~0x2 ; /*恢复PWM功能*/
}
}
/*4个LED随着频率的高低,时灭时亮。灯亮的数目4-3-2-1*/
if(freq == 100)
rGPBDAT = ~0x560; /*0001 1110 0000 取反之后1110 0001 1111*/
if(freq == 1300)
rGPBDAT = ~0x160; /*1110 0000取反之后 0001 1111*/
if(freq == 2500)
rGPBDAT = ~0x60; /*0110 0000取反之后 1001 1111*/
if(freq == 3700)
rGPBDAT = ~0x20; /*0010 0000取反之后 1101 1111*/
if(freq == 4900)
rGPBDAT = ~0x0; /*0000取反之后 1111111111*/
}
/*频率递减*/
for( ; freq>50 ; )
{
freq-=10;
rTCMPB0 = freq;
delay(20000);
while (stop == TRUE)
{
delay(1000);
if (stop ==FALSE)
{
rTCON &= ~0x1F;
rTCON |= 0xf;
rTCON &= ~0x2 ;
}
}
if(freq == 100)
rGPBDAT = ~0x560;
if(freq == 1300)
rGPBDAT = ~0x160;
if(freq == 2500)
rGPBDAT = ~0x60;
if(freq == 3700)
rGPBDAT = ~0x20;
if(freq == 4900)
rGPBDAT = ~0x0;
}
}
}
TOUT输出的波形是:
上图是频率上升时的大致波形图。由此可以看出高电平在每个周期中维持的时间越来越长,低电平时间越来越短。频率下降时的波形图正好相反。
系统时钟定时器PWM定时 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)