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

求助mc9s12dg128b定时重装问题

求助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(;;);

}

问句天几高 心中似比天更高
用输出比较功能产生定时中断的基本概念是,TCNT计数器自由运行,当其值等于通道寄存器的值时,产生比较事件,即产生中断。
海纳百川  有容乃大
哦, 那么TCNT=32768;这句就不需要了 是吧
就说定时始终是65536到0了?
问句天几高 心中似比天更高
还有
另外一个问题 (mc9s12dg128b)
我用PWM设定了1Hz 50%的方波 用B口LED可以显示变化像现的对的
但是用示波器检测不出来方波
看到的是像正弦波 又像三角波的10Hz的波形
且几乎每个引脚都是一样


最大的问题 烧程序后和没烧程序是一样的

但是为什么有可以实现LED的1Hz变化呢?
(示波器应该没有问题)

请大虾们指点迷津,先谢谢了!
问句天几高 心中似比天更高
你的示波器探头的接地连接似乎有问题吧。
海纳百川  有容乃大
返回列表