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