智能车制作
标题:
高手帮着看看,定时中断不进中断
[打印本页]
作者:
pangyuo
时间:
2011-4-19 17:46
标题:
高手帮着看看,定时中断不进中断
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
unsigned int vTmpPIT=0;
#define PITTIME 50000//设定为500MS定时
void SetBusClock(void)
{
CLKSEL=0X00; //disengage PLL to system
PLLCTL_PLLON=1; //turn on PLL
SYNR=0xc0|0x02;
REFDV=0x80|0x01; //pllclock=2*osc*(1+SYNR)/(1+REFDV)=48MHz;
_asm(nop); //BUS CLOCK=24M
_asm(nop);
while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;
CLKSEL_PLLSEL =1; //engage PLL to system;
}
void Dly_ms(int ms) //24M时为0.5ms
{
int i,j;
for(i=0;i<ms;i++)
for(j=0;j<0x7ff;j++);
}
void initPIT(void)//定时中断初始化函数50MS定时中断设置
{
PITCFLMT_PITE=0;//定时中断通道0关
PITCE_PCE0=1;//定时器通道0使能
PITMTLD0=240-1;//8位定时器初值设定。240分频,在24MHzBusClock下,为0.1MHz。 即 10us.
PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.01MS
PITINTE_PINTE0=1;//定时器中断通道0中断使能
PITCFLMT_PITE=1;//定时器通道0使能
}
void main(void)
{
SetBusClock();
initPIT();
DDRB=0xff ;
for(;;)
{
}
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)
{
vTmpPIT++;
if(vTmpPIT==2) // 定时1S
{
Dly_ms(40);
PORTB=~PORTB;//输出取反
vTmpPIT=0;
}
PITTF_PTF0=1;//清中断标志位
}
作者:
pangyuo
时间:
2011-4-19 17:47
昨天还好着,今天就不进中断了,不知道哪的问题
作者:
zhjb1
时间:
2011-4-19 21:44
main中少了开中断
作者:
pangyuo
时间:
2011-4-21 13:35
初始化的时候就开了呀
作者:
河山
时间:
2011-9-27 16:20
好像懂了
作者:
369185748
时间:
2012-1-10 18:23
看看
作者:
在所不辞
时间:
2012-1-13 16:09
PIT 学习中
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2