标题:
求助mc9s12dg128b定时重装问题
[打印本页]
作者:
tanny123
时间:
2007-10-8 22:34
标题:
求助mc9s12dg128b定时重装问题
新手上路
遇到简单问题
请教各位来了
先谢谢了!
问题如下:
//定时器的问题 16MHz晶振
//我认为是4.1 LED变化一次,但是实际上LED是 8 s 左右变化一次,
//改变 TCNT 数值时间也没有变化,哪里错了呢?
#include
/* common defines and macros */
#include
/* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
unsigned long int flag=0;
// ******** 中断函数 **********
#pragma CODE_SEG NON_BANKED
void interrupt 8 Timer0_ISR()
{
DisableInterrupts;
TFLG2 = 0x80;
TFLG1 &= 0x01; // Interrupt Flag clear
TCNT = 32768; //重新置数
if(flag == 1000)
{ // 0.0041s*1000=4.1秒 LED变一次
PORTB = ~ PORTB;
flag=0;
}
flag++;
EnableInterrupts;
}
#pragma CODE_SEG DEFAULT
//************ 定时器初始化 ************
void Init_ECT()
{
TIOS = 0x01; //select channel 0
TCNT=32768; //中断 0.0041秒 = (65536-32768)/8/1000000=0.0041s
TIE = 0X01; //tco 开中断
TSCR1= 0X80; //enable main timer
}
void main(void)
{
Init_ECT();
DDRB=0xff;
PORTB=0xf0;
EnableInterrupts;
for(;;);
}
作者:
strongchen
时间:
2007-10-9 09:53
用输出比较功能产生定时中断的基本概念是,TCNT计数器自由运行,当其值等于通道寄存器的值时,产生比较事件,即产生中断。
作者:
tanny123
时间:
2007-10-13 00:36
哦, 那么TCNT=32768;这句就不需要了 是吧
就说定时始终是65536到0了?
作者:
tanny123
时间:
2007-10-13 00:46
还有
另外一个问题 (mc9s12dg128b)
我用PWM设定了1Hz 50%的方波 用B口LED可以显示变化像现的对的
但是用示波器检测不出来方波
看到的是像正弦波 又像三角波的10Hz的波形
且几乎每个引脚都是一样
最大的问题 烧程序后和没烧程序是一样的
但是为什么有可以实现LED的1Hz变化呢?
(示波器应该没有问题)
请大虾们指点迷津,先谢谢了!
作者:
strongchen
时间:
2007-10-15 10:00
你的示波器探头的接地连接似乎有问题吧。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0