你好
我对以下代码有2个问题、这些代码正常工作。 如果完全覆盖了连接到 ADC12_A 输入(引脚6.0)的光电电阻器、则代码的目的是打开连接到引脚1.0的 LED、否则它会关闭 LED。
问题是:
1 - ADC12_A 的默认分辨率是多少? 根据数据表、使用 ADC12CTL2寄存器中的 ADC12RES 位来定义分辨率。 它可以是8、10、0r 12。 在以下代码中、ADC12RES=0表示分辨率是8位、 但分辨率是12而不是8?
2 -在此代码中、转换结果可在 ADC12MEM0存储器寄存器中获得。 默认情况下、引脚6.0是否连接到此寄存器? 我想我们需要明确地配置 ADC12MEM0存储器寄存 器、以便使用 ADC12MCTL0控制寄存器从其中一个 ADC12输入引脚读取数据。 我的理解是否正确?
代码如下:
--------------------------------------------------------------------
#include
int main (空)
{
WDTCTL = WDTPW + WDTHOLD;//停止 WDT
ADC12CTL0 = ADC12SHT00 + ADC12ON;//采样时间、ADC12打开
ADC12CTL1 = ADC12SHP+ADC12SSEL1;//使用采样定时器+定时器时钟为 ACLK
ADC12IE = ADC12IE0;//启用中断,也可以使用0x01
ADC12CTL0 |= ADC12ENC;
P6SEL |= BIT0;// P6.0 ADC 选项选择
P1DIR |= BIT0;// P1.0输出
P1OUT &=~BIT0;
while (1)
{
ADC12CTL0 |= ADC12SC;//开始采样/转换
_bis_SR_register (LPM0_bits + GIE);// LPM0、ADC12_ISR 将强制退出
}
}
#pragma vector = ADC12_vector
_interrupt void ADC12_ISR (void)
{
switch (__evo_in_range (ADC12IV、34))
{
情况0:中断;//向量0:无中断
情况2:中断;//矢量2:ADC 溢出
情况4:中断;//矢量4:ADC 时序溢出
情况6://向量6:ADC12IFG0
如果(ADC12MEM0 < 0x7ff)// ADC12MEM = A0 < 0.5AVcc?
P1OUT &=~BIT0;// P1.0 = 1
其他
P1OUT |= BIT0;// P1.0 = 0
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//退出活动 CPU
情况8:中断;//向量8:ADC12IFG1
情况10:中断;//向量10:ADC12IFG2
情况12:中断;//向量12:ADC12IFG3
案例14:中断;//矢量14:ADC12IFG4
情况16:中断;//向量16:ADC12IFG5
情况18:中断;//向量18:ADC12IFG6
情况20:中断;//向量20:ADC12IFG7
情况22:中断;//向量22:ADC12IFG8
情况24:中断;//向量24:ADC12IFG9
情况26:中断;//向量26:ADC12IFG10
情况28:中断;//向量28:ADC12IFG11
情况30:中断;//向量30:ADC12IFG12
情况32:中断;//向量32:ADC12IFG13
案例34:中断;//矢量34:ADC12IFG14
默认值:break;
}
}
----------------------------------------------------
谢谢
Mahmoud