请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430G2553 工具/软件:Code Composer Studio
大家好、我能够对由具有1个模拟输入的计时器 CC ISR 触发的 ADC ISR 进行编码。
我已经尝试为2个引脚编写 ADC 代码数天了、但到目前为止还不能。
定时器 ISR 由捕捉比较模式触发。
在我的定时器 ISR 内部、我想制作一个 A3引脚的 ADC 并将其保存到可变温度1中。
在第1个 ADC 之后、我尝试将通道切换为 A4、但通道永远不会切换。
我还尝试切换 ADC 中断中的通道、但这也不起作用。
这是我的代码:(我希望有人能帮我)
#include #include long temp1; long temp2; void main (void){ __ENABLE_INTERRUPT (); WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器 TACTL = tassel_1 + MC_1;// ACLK-CLOCK+ tempup模式 CCTL0 = CCIE;// CCR0中断使能 CCR0 = ADC104 = ADC10_INCH;// ADC104 = ADC10_INCH;ADC10_CCTL1 = ADC10_INCH;ADC10_CCTL1//通道选择 A4+转换序列模式选择=>通道序列+ ACLK -时钟(无输入 div) ADC10CTL0 = SREF_0 + ADC10SHT_2 + ADC10ON + ADC10IE;// REF = VCC & VSS + ADC SampleAndHoldTime 16 x ADC10CLK +// ADC10AE3 + ADC100 | BIT4//这些位启用相应的模拟输入 P1SEL 引脚|= BIT3 + BIT4;//ADC 输入选择模式 P1.4 P1DIR |= 0x00;// ADC 输入 P1.3 P2DIR |=(BIT0 + BIT1 + BIT2)+(BIT3 + BIT4 + BIT2);//引脚作为输出// A3的 P2.0-2+A4 P2OUT = 0x00的 P2.3-5;//所有引脚设置为低电平(输入)//端口2 } #pragma vector = TIMER0_A0_vector; __interrupt void 计时器(void){ ADC10CTL1 = INCH_3;//为 ADC 选择通道 A3; ADC10ENSC = ADC10EN0 | ADC10ENC// ADC10SC =0 >>无样本启动会话+ ENC == EnableConversation temp1 = ADC10MEM;//将 ADC 测量值保存在第1个温度变量 中 while (!ADC10BUSY)//等待 ADC 不再繁忙 { ADC10CTL0 &=~ENC;//禁用会话 } ADC10CTL0 &=~ADC10IFG;//删除下一个对话的 ADC10CTL1 = INCH_4;//选择通道 A4作为输入 ADC10CTL0 |= ADC10SC + ENC; if (ADC10CTL1 =INCH_4) temp2 = ADC10MEM;//在第2个温度变量中保存 ADC 测量 ,而(!ADC10BUSY) { 和 ADC10CTL= ENC 标志};//删除 ADC10CTL=~~TACF (当 cotinues 模式达到0xFFFFFFx 时、计时器将自动设置) } #define A0 0x00 #define A1 BIT0 #define A2 BIT0 + BIT1 #define A3 BIT0 + BIT1 + BIT2 #define B0 0x00 #define B1 BIT3 #define B2 BIT3 + BIT4 #define B3 BIT3 + BIT4 + BIT4 + BIT4 #pragma vector = ADC10_vector; _interrupt void ADC (void){ const int output1[4]={A0、A1、A2、A3}; const int output2[4]={B0、B1、B2、B3}; if (temp1 >= 0 & temp1 <= 50) p2OUT = output1[0]; 否则 if (1 >= 50)<= p2150;out1 = 1 = 1 = 1 = 1 = 400;out1 = 1 = 1 = 1 = 1 = 1 = 400;out1 = 1 = 1 = 1 = 1 = 1 = 1 = 1 = 400;out1 = 1 = 1 = 1 = 1 else P2OUT = output1[3]; if (temp2 >=0 && temp2 <= 50) P2OUT |= output2[0]; 否则、if (temp2 >=50 && temp2 <= 400) P2OUT |= output2[1]; 否则(temp2 >=400 &temp2 <= 750) P2A4 |=output2 ;= output2[INCH}/ADC102]/ INCH = output2[INCH;选择 output2]/ output2[INCH