工具/软件:Code Composer Studio
我将使用微控制器的内部温度传感器制作温度计。 它将由 ADC 计时器触发并每10秒测量一次。 然后温度值将出现在显示屏上。 问题是:
1) 1)我无法使用计时器触发 ADC。 SHC_3或 SHC_2或 SHC_1未执行此任务? 如何使用计时器触发 ADC? 我的错在哪里?
2) 2)如果可以使用计时器触发 ADC、是否有其他方法可以每10秒进行一次测量、而不使用我在计时器中断中编写的代码?
e2e.ti.com/.../WhatsApp-Video-2020_2D00_12_2D00_14-at-15.21.55.mp4
#include const int dizi[]={0x7E、0xC、0xB6、0x9E、0xCC、 0xDA、0xFA、0xE、0xFE、0xDE、0xC6、0x72}; 长 ADC_mem_value; 长度; int TENS_digit; int one_digit; int counter=0; //对于10_second int x=0; int main (void) { WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器 BCSCTL1 |= DIV_0; // 32kHz 低温 BCSCTL3 |= XCAP_3 + LFXT1S_0; /* PİN SETTİNG */ P2DIR |= BIT0+BIT1+BIT2+BIT3;// 7段显示摄像机捕捉能量引脚组 D1-D2-D3-D4 P2OUT |=(BIT0+BIT1+BIT2+BIT3);// 7段显示 D1-D2-D3-D4能量引脚优先为低电平 P1DIR |= 0xFF; //7段显示 LED 套件 P1OUT=0x00; //前7段显示 LED 低电平 /* TİMER SETTİNG */ TA0CTL = MC_1 + TASSEL_1 +TAIE;//UP 至 CCR0-- TA0CCR0 =32767;//1秒; /*ADC SETTİNG */ ADC10CTL0 |= ADC10ON +REFON+SREF_1 + ADC10SHT_3;// ADC akative-- REFON (1、5V)-采样时间64 x ADC10CLKs -中断使能 ADC10CTL0&=~ REF2_5V; //REF 1、5V 感应电压 ADC10CTL1 |=SHS_3+INCH_10+ADC10SSEL_0 + CONSEQ_0;//带有定时器的 ADC 触发器(TA3 OUT1)。我不知道有工作 //温度选择通道10 -选择 ADC 振荡器5MHZ -单通道单次转换 ADC10CTL0 |= ENC+ADC10SC; //启用转换并开始覆盖 _bis_SR_register (GIE); while (1) { /*显示7段*/ P2OUT |=(BIT2+BIT1 + BIT0); P1OUT=0x72; P2OUT &=~(BIT3); _DELAY_CYCLES (1000); P2OUT |=(BIT0+BIT1 + BIT3); P1OUT=0xC6; P2OUT &=~(BIT2); _DELAY_CYCLES (1000); P2OUT |=(BIT0+BIT3+BIT2); P1OUT=DIZI[ONS_DIGENT]; P1OUT|=BIT0; P2OUT &=~(BIT1); _DELAY_CYCLES (1000); P2OUT |=(BIT1 + BIT3 + BIT2); P1OUT=DIZI[TENS_DIGENT]; P2OUT &=~(BIT0); __DELAY_CYCLES (1000); } } #pragma vector=TIMER0_A1_vector __interrupt void TA0_kesme_func (void) { switch (TAIV){ case 2: 中断; // CCR1未使用 情况4: 中断; // CCR2未使用 案例10: COUNTER++; X++; if (counter =10)// if counter10 =10秒 { ADC10CTL0 |= ENC+ ADC10SC; /*计算温度*/ ADC_MEM_VALUE = ADC10MEM; 度=((adc_mem_value - 672)* 423)/ 1024; TENS_Digitity=degre/10; ons_digits=degre% 10; 计数器=0; } 中断; }