首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

救命啊!为什么我不能输出2.4K的方波?

救命啊!为什么我不能输出2.4K的方波?

各位老师:你们好!我用的是MC68HC908JL3,外部时钟是8M。程序如下。我想PTB_PTB1得到2.4K的方波。可是实际只有623.5的方波。 #include /* for EnableInterrupts macro */ #include /* include peripheral declarations */ unsigned char counter1; /********* Timer init procedure *********/ void InitTimer(void) { TSC |= 0x70; TSC |= 0x07; /* Prescaler 64 BUS Cycles, 8MHz - 1/8uS */ TMODH = 0x03; /* Modulo value set to create 100Us overflow - interrupt */ TMODL = 0x20; TSC = 0x47; } /********* Timer interrupt Procedure ***********/ #pragma TRAP_PROC /* mark it as interrupt service routine */ void TimerInterrupt(void) { /*PWM 2.4kHZ counter++;*/ if (counter1 == 0) { PTB_PTB1=0; } else if (counter1 >= 1 && counter1 <= 1) { PTB_PTB1=0; } else if (counter1 >= 2 && counter1 <= 3) { PTB_PTB1=1; } else { PTB_PTB1=0; counter1=0; } counter1++; TSC &= 0x7F; /*reset TOF flag */ } void main(void) { InitTimer(); EnableInterrupts; /* allow interrupts to occur */ for(;;) { COPCTL = COPCTL;/*COP refresh */ ReadAD(); /*Read ADC8-10 */ __RESET_WATCHDOG(); }/* for ever */
按照你的程序,时钟100us产生一次中断,频率是10k
counter1=0   PTB1=0
counter1=1   PTB1=0
counter1=2   PTB1=1
counter1=3   PTB1=1
counter1=4   PTB1=0
总共5个部分,有三个部分是低,两个部分是高,得到的方波频率是2k,2/5是高。
还是你的设置有问题,先把频率设置对了。

而且外部时钟8M的话,总线频率是2M


[此贴子已经被作者于2005-5-31 10:12:07编辑过]

返回列表