智能车制作
标题:
一个简单程序,但输不出预期结果,烦请哪位帮忙看一下
[打印本页]
作者:
共和国之辉
时间:
2009-2-13 16:26
标题:
一个简单程序,但输不出预期结果,烦请哪位帮忙看一下
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
void main(void) {
DDRB=0xFF;//PORTB设定为输出
PORTB=0xf0;//PORTB初始化为全高
TSCR1=0x90;//定时器使能且TFLG1能被自动清除
TSCR2=0x07;//定时器预分频系数设定 Prescale Factor=128
TIE=0x01;//定时器通道0使能
TIOS_IOS0=1;//定时器通道0设定为输出比较
TCTL1=0X00;
TCTL2=0X03 ;
TC0=0x0100;
EnableInterrupts;//开中断
for(;;) {} /* wait forever */
/* please make sure that you never leave this function */
}
/*
***************************************************************************
*语法格式:interrupt void Timer(void)
*实现功能:
*程序描述:
**************************************************************************/
void interrupt Timer(void) //8为定时器通道0的中断标号
{
DisableInterrupts; //关中断
PORTB=0b11110011;//
EnableInterrupts;//
}
结果无法进入中断程序
作者:
lucev
时间:
2009-2-13 21:03
应该将中断程序放进中断向量表吧。
打开.prm文件【如果用BDM就打开它对应的PRM】,在最后一行加上VECTOR ADDRESS 0xFFEE Timer
再试试吧!
还有,B口全高该是00吧,打错了?
作者:
yanghu20
时间:
2009-2-14 11:50
/*****************/
//说明:利用定时器输出比较功能产生定时中断,
/**********变量定义***********/
static unsigned int waittime = 0;
/*********初始化函数***********/
/*时钟初始化*/
void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{ //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
REFDV=1; //总线时钟=48/2=24MHz
SYNR=2;
while(!(CRGFLG&0x08));
CLKSEL=0x80;
}
/*定时器初始化*/
void ECT0_Init(void)
{
TIOS_IOS0=1; //定时器通道0设置为输出比较
TCTL2=0x02; //输出低电平
TSCR2_TOI=0; //溢出中断禁止
TSCR2_PR=6; //24M/64=2.67微秒,计一个数用2.67微秒
TC0=0x00FF; //给输出比较通道0赋初值,当TCNT从0计数到此值时第一次进入中断
//TSCR1_TFFCA=1; //定时器标志快速清零
TIE_C0I=1; //通道0输出比较中断允许
TSCR1_TEN=1; //使能定时器
}
/*******主函数********/
void main(void)
{
PLL_Init();
ECT0_Init();
DisableInterrupts;
DDRB=0xff;
PORTB=0x00;
//PTT_PTT0=0;
for(;;)
{
EnableInterrupts;
}
}
/********中断函数处理***********/
#pragma CODE_SEG NON_BANKED
void interrupt 8 Timer0_ISR(void) //8为定时器通道0的中断标号
{
unsigned int m;
TFLG1_C0F=1;//清中断标志位
DisableInterrupts;
m=TCNT;
TC0=m+37500; //定时时间100毫秒后进入中断, 8/3*375=1000微秒 3750--10毫秒 37500--100毫秒
waittime++;
if(waittime>=200)
{
waittime=0;
}
PORTB=waittime;
}
看看这个吧
作者:
共和国之辉
时间:
2009-2-14 17:12
多谢两位,新手上路,在此谢过了!
作者:
共和国之辉
时间:
2009-2-14 18:39
我试了,还是不行,不过我按照楼下的格式修改了一下,可以通过。
2#
lucev
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2