最近用LPC900系列的片子,发现一些和定时器/计数器相关的问题
先说第一个: LPC9107的芯片,外部脉冲从T1(P0.7)输入 (T1C/T = 0),可是T1中并不计数,如果对PCLK计数(T1C/T = 1),则T1计数正常,测试如下程序:
//-------------------------------------------------------------------//功能:定时器初始化 //------------------------------------------------------------------- void TimerInit(void) { TMOD = 0x51; //T0为16位定时器 T1为外部计数器 //TMOD = 0x11; //T0为16位定时器 T1为定时器
TH1 = 0xff; TL1 = 0x00;
TR1 = 1; ET1 = 1; }
//------------------------------------------------------------------- //功能:管脚模式初始化 //------------------------------------------------------------------- void IOInit(void) { P1M1 = 0x00; P1M2 = 0x07; //P1.0 P1.1 P1.2推挽输出
P0M1 = P0M1 & 0xd9; P0M2 = P0M2 | 0x26; // P0.7(T1)高阻抗输入
KB5 = 0; } //------------------------------------------------------------------- // //------------------------------------------------------------------- void main(void) { TimerInit(); IOInit(); EA = 1;
while (1) { ; } } //------------------------------------------------------------------- //功能:对脉冲计数 //------------------------------------------------------------------- void Timer1_interrupt(void) interrupt 3 using 3 { TR1 = 0; TH1 = 0xff; TL1 = 0x00; TR1 = 1;
RxD = !RxD;; //闪烁指示进入中断 }
谢谢大家看看,是不是别的原因造成的?
|