高级会员
- 积分
- 804
- 威望
- 456
- 贡献
- 170
- 兑换币
- 0
- 注册时间
- 2012-2-10
- 在线时间
- 89 小时
|
想用PT7口来计算累加脉冲,用1602来显示的,可是1602变动特别大!根本无规律可循。下面的代码设置怎么回事?哪错了啊?求高手们解答!
PACTL_PAEN=0;//0-16b计数禁止,1允许,先禁止
PACTL_PAMOD=0;//0-计数模式,1-门时计数模式,设0
PACTL_PEDGE=0;//0下降沿,1-上升沿,指定有IOC7-PT7口输入,此位受PACTL_PAMOD影响,此设0
PACTL_CLK1=0;//当计数位外部脉冲,此设置无意义,都设0
PACTL_CLK0=0;
PACTL_PAOVI=0;//0-溢出中断禁止,1-允许,本例计数个数有time0时钟中断读取,不需要溢出中断,设0
PACTL_PAI=0;//0禁止中断,1允许,设0
PACNT=0;//计数器寄存器的值,可以使0000~FFFF,先清0
PAFLG_PAOVF=1;//计数溢出FFFF>0000
PAFLG_PAIF=1;//脉冲数入1=IOC7-PT7,最大65536个脉冲
PACTL_PAEN=1;//16b计数允许
PITCFLMT_PITE=0; //禁止PIT
PITCE_PCE0=1; //允许时钟通道0
PITMUX_PMUX0=0; //通道0
PITMTLD0=0X01; //通道0预设计数值为255
PITLD0=0X61A7; //time-out period=(PITMTLD+1)*(PITLD+1)/fBUS=256X25000/64000000=0.1s
PITINTE_PINTE0=1;//通道0中断允许
PITCFLMT_PITE=1; //开PIT中断
EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 Timer0_Onput(void)
{
aa++;
PORTB=aa; //用LED闪烁来观察进入中断的次数,,这里灯一直闪烁,停不下来,{:soso_e154:}
time=PACNT ;
//PACNT = 0;
LCD_disp_char(1,1,time/10000+0x30); //用1602显示PACNT的值
LCD_disp_char(2,1,time%10000/1000+0x30);
LCD_disp_char(3,1,time%10000%1000/100+0x30);
LCD_disp_char(4,1,time%10000%1000%100/10+0x30);
LCD_disp_char(5,1,time%10000%1000%100%10+0x30);
LCD_disp_char(6,1,'q');
if(aa>=255)
{
aa=0;
}
}
|
|