这里有个PIT中断程序,想请教大虾们一个问题谢谢!
- UID
- 805034
|
这里有个PIT中断程序,想请教大虾们一个问题谢谢!
下面的程序里有一句void interrupt 66 PIT0(void) ,我想了解下这个入口66是在哪儿可以查到的,谢谢回复者!-
- #include <hidef.h> /* common defines and macros */
- #include <MC9S12XS128.h> /* derivative information */
- #pragma LINK_INFO DERIVATIVE "mc9s12xs128"
- //==================================================
- //定时中断函数
- //定时中断0实现500MS定时
- //author:yangtze
- //time:2009/5/2
- //==================================================
- #define PITTIME 5000//设定为50MS定时
- unsigned int vTmpPIT=0;
- void pllclk(void)//24MHz,外部时钟为16MHz
- {
- CLKSEL=0X00;
- PLLCTL=0xe1;
- SYNR=2;//PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
- REFDV=1;
- PLLCTL=0X60;
- asm NOP;
- asm NOP;
- asm NOP;
- while((CRGFLG&0X08)==0);//时钟校正同步
- CLKSEL=0X80;
- }
- void initIOBoutput(void)//IO口初始化,B口为输出
- {
- DDRB=0XFF;
- PORTB=0XFF;
- }
- 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)
- {
- pllclk();
- initIOBoutput();
- initPIT();
- EnableInterrupts;
- for(;;) {} /* wait forever */
- /* please make sure that you never leave this function */
- }
- #pragma CODE_SEG __NEAR_SEG NON_BANKED
- void interrupt 66 PIT0(void)
- {
- vTmpPIT++;
- if(vTmpPIT==10)
- {
- PORTB=~PORTB;//输出取反
- vTmpPIT=0;
- }
- PITTF_PTF0=1;//清中断标志位
- }
复制代码 |
|
|
|
|
|
- UID
- 805034
|
找到了,在头文件里面有定义,另外个问题:
这段程序- #pragma CODE_SEG __NEAR_SEG NON_BANKED
- void interrupt 66 PIT0(void)
- {
- vTmpPIT++;
- if(vTmpPIT==10)
- {
- PORTB=~PORTB;//输出取反
- vTmpPIT=0;
- }
- PITTF_PTF0=1;//清中断标志位
- }
复制代码 是不是可以直接这样写:- //#pragma CODE_SEG __NEAR_SEG NON_BANKED
- void interrupt 66 PIT0(void)
- {
- vTmpPIT++;
- if(vTmpPIT==10)
- {
- PORTB=~PORTB;//输出取反
- vTmpPIT=0;
- }
- PITTF_PTF0=1;//清中断标志位
- }
复制代码 开始的#program 可以省的吧 |
|
|
|
|
|
- UID
- 789415
- 性别
- 男
|
|
|
|
|
|