这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于M3062LFGPGP的中断

共3条 1/1 1 跳转至

关于M3062LFGPGP的中断

菜鸟
2008-11-04 12:49:04     打赏

程序不能进入定时器中断,不知是否是设置有问题?
使用6M晶振

#include "sfr62p.h"

/*************************************************************************/
//定时器模式,中断A0
#pragma INTERRUPT/B vect 21 ms_timer_a0
void ms_timer_a0(void){

ta0 = 24000-1;  //1msec  @24MHz

if(beep_time==0)beep=1;
else beep_time--;

}

/*************************************************************************
等待20ms,直到PLL时钟稳定
*************************************************************************/
void pll_stable_20ms(void)      
{

//TA0MR:定时器A0模式寄存器
ta0mr = 0x80; //定时器模式,32分频

ta0 = 3750-1; //20ms:@6MHz, f32

ta0ic = 0x00; //Level 0
tabsr = 0x01; //TimerA0启动

while(ir_ta0ic == 0){} //延时20ms;Vcc = 5V
tabsr = 0x00;      //TimerA0停止
ir_ta0ic = 0;      //清中断标志位

}

/*************************************************************************/
//寄存器初始化
void mcu_init(void)
{

prc0=1;//允许写PRC0
prc1=1;//允许写PRC1

pm0 = 0x00;  //单芯片模式
pm1 = 0x08;

cm0 = 0x08;  //主时钟
cm1 = 0x20;  //系统时钟为主时钟

plc0 = 0x12;

pm2 = 0x00;

plc0 = 0x92; //PLL时钟启动

pll_stable_20ms(); //等待20ms,直到PLL时钟稳定
cm1 = 0x22;        //系统时钟为PLL时钟

pclkr = 0x03;

prc0=0;
prc1=0;//PRCR禁止写

adcon2 = 0x01; //AD4分频;端口P10;采样保持

adcon0 = 0x02; //软件触发;单次模式;通道2

adcon1 = 0x28; //不使用ANEX0和ANEX1;Vref;10位模式

//定时器设置
ta0ic = 0x01;  //有中断请求,LEVEL 1
ta0mr = 0x00;  //定时器模式,f1
ta0 = 24000-1;  //1msec  @24MHz
ta0s = 1;    //start counting

}

 

/*************************************************************************/
void main(void)
{
mcu_init(); //寄存器初始化


while(1){
 }

}




关键词: 关于     M3062LFGPGP     中断    

菜鸟
2008-11-06 17:31:44     打赏
2楼
请确定是否将中断允许标志位置为“1”
即“asm("FSET I");”

助工
2009-06-13 00:11:50     打赏
3楼
振荡处于稳定状态时,必须将驱动能力置为“LOW”,CM0和CM1寄存器的XIN-XCOUT的驱动能力选择位要清零吧。   试试把这两个寄存器清零看看

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]