//文件名:main.c //版本: 1.0 //描述:MC430F14開發板的主程序,實現讀單路單次A7然后進行數值顯示。 //編程環境:IAR WE430 3.40A //時期: 2006.8.26. # include # include "f14demo_1.h" //**************************************************** //定義區 unsigned int value; unsigned char ADVAL[5]={'x','x','x','x','\0'}; unsigned char number_tab[]={'0','1','2','3','4','5','6','7','8','9'}; //**************************************************** //說明:實驗標題1,應用單實形式發送. void send_title() //標題顯示 { //sendCMD(DDRAM_0); //DDRAM sendCMD(off_cursor); //關光標 sendCMD(LCD_L21); display(LCD_L21,0xBD,0xE1); //結 display(LCD_L22,0xB9,0xFB); //果 sendDAT('A'); sendDAT('D'); sendDAT('7'); sendDAT('='); } //**************************************************** //說明:單片機初始化 void init(void) { initlcm(); //LCD初始化 char_string (title,LCD_L11); //發送本實驗標題1 send_title(); //發送本實驗標題2 sendCMD(off_cursor); //關光標 //ADC12初始化---------------------- //單通道,單次采樣模式 P6SEL |= 0x80; //使能A/D通道 A7 ADC12CTL0 = ADC12ON + SHT0_2; //開ADC12內核和設置SHIT0=2(N=4) ADC12CTL1 |= SHP; //SAMPCON信號選擇為采樣定時器輸出 ADC12CTL1 |= CSTARTADD_7; //定義單次轉換地址 ADC12MCTL7 |= INCH_7; //ADC12MCTL0 = SREF_2; // 使用外部參考電壓 Vr+ = VeREF+ ADC12CTL0 |= ENC; //ADC轉換允許 //Timer_A初始化-------------------- P1DIR = 0x02; CCR0 = 1638-1; CCTL0 = CCIE; TACTL = TASSEL_1+MC_1; //timerA CLK=ACLK,增計數模式 _EINT(); //開總中斷 } //**************************************************** //說明:數值轉換 void conv(unsigned int intdata, unsigned char *pc) { unsigned int a,b,c; pc[0]=number_tab[intdata/1000] ; a=intdata%1000 ; pc[1]=number_tab[a/100] ; b=a%100 ; pc[2]=number_tab[b/10] ; c=b%10; pc[3]=number_tab[c/1] ; } //**************************************************** //TimerA0中斷服務程序 #pragma vector=TIMERA0_VECTOR __interrupt void Timer_a(void) { LPM0_EXIT; } //---------------------------------------------------- void main(void) { WDTCTL=WDTPW+WDTHOLD; //停止WDT init(); LPM3; while(1) {ADC12CTL0 |= ADC12SC; // 開始轉換 while((ADC12IFG & BIT7)==0); _NOP(); P1OUT ^= BIT1; //反轉 P1.1 value=ADC12MEM7; // 讀取結果 conv(value,ADVAL); //數據轉換調用 char_string (ADVAL,LCD_L25); //發送本實驗標題1 LPM3; } } |