这行 *** 作没变吗?可能性有几个,第一是你看寄存器值的时间不对,要在这条指令做完,也就是游标已经移到下一条指令时,才能看到IE2的变化;第二是,|= *** 作是只改变UCA0RXIE对应位的,只有相关的位改变,而如果原来就已经是这个值,它就不会发生改变。
/* 在P1.4上可用示波器看到三角波. */#include <msp430x42x0.h>
void main(void)
{
unsigned char i,j
WDTCTL = WDTPW + WDTHOLD// Stop watchdog timer
SD16CTL = SD16REFON // 1.2V ref
DAC12_0CTL = DAC12OPS + DAC12SREF_2 + DAC12IR + DAC12AMP_5 + DAC12ENC
// DAC o/p external, Ref Voltage = internal (SD16),
// O/p Voltage range = 1x ref, Enable conversion
while(1){
for(i=0i<100i++)
{
DAC12_0DAT = 20*i // 步进输出三角上升阶梯
for(j=0j<10j++) // 软延时
}
for(i=100i>0i--)
{
DAC12_0DAT = 20*i // 步进输出三角下降阶梯
for(j=0j<10j++) // 软延时
}}
} // main
可以设置这两个脚为中断脚,在P1.1中段函数中电量LED,在P1.2中断函数中熄灭它,用示波器量一下波形就可以测出时间了。如果用程序来实现的话,你可以将这两个脚都设置成PWM捕获功能,捕获模式设置成下降沿触发。如果捕获到有标志位会置位,你可以据此判断该引脚已捕获到下降沿,然后将一计数器的计数值清零,若另一个引脚也捕获到下降沿,你可以此时读取该计数器的计数值,这样就可以根据你计数器的分频系数和主频计算出时间了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)