?? test26.c
字號:
/*這是一個簡單的單通道多次轉換程序的源代碼,轉換的精度
*是小數點一位(很差,但是畢竟是開始)*/
#include<msp430x14x.h>
const unsigned char Seg[]={
0x84, //0
0xbd, //1
0xe0, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xbc, //7
0x80, //8
0x90, //9
};
void Delay(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P4DIR=0xff;
P5DIR=0x0f;
P6SEL = 0x01; //P6引腳可以作8個模擬信號的輸入引腳
ADC12CTL0=ADC12ON+SHT0_2+REFON+REF2_5V; //啟用內部的參考電壓2.5V
ADC12CTL1=SHP+CONSEQ_2; //SHP表示由采樣信號觸發采樣定時器,CONSEQ_2采用單通道多次轉換
ADC12MCTL0=SREF_0; //0-3.3V的范圍 Vcc-Vss
ADC12MCTL0=INCH_0; //選擇模擬輸入通道
ADC12IE|=BIT0; //允許轉換中斷
_EINT();
ADC12CTL0|=ENC+ADC12SC; //開始轉換
for(;;);
}
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{
char h,l,m,n;
ADC12CTL0&=~ENC; //關閉轉換
float result=(ADC12MEM0*3.3)/4096;
h = (int)result;
l = (int)(result*10)%10;
m = (int)(result*100)%100;
n = (int)(result*1000)%1000;
/*本來下面的語句是想用循環來做的,其實也沒有必要*/
P5OUT = BIT0;
P4OUT = Seg[h]&(~BIT7);
Delay();
P5OUT = BIT1;
P4OUT = Seg[l];
Delay();
P5OUT = BIT2;
P4OUT = Seg[m];
Delay();
P5OUT = BIT3;
P4OUT = Seg[n];
Delay();
ADC12CTL0|=ENC+ADC12SC;//使能再次轉換
}
void Delay(void)
{
int i = 700; //自己調出最適合的值
while(i--);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -