?? main.c
字號(hào):
//******************************************************************
//功能作用;實(shí)現(xiàn)CO2濃度和溫度的檢測
//2007-1-21 9:33
//晶振;32768
//CPU;MSP430F147
//使用資源:12位A/D轉(zhuǎn)換,IO口,信息存儲(chǔ)段A,串口0,串口1,
// 基本定時(shí)器;
//使用庫文件;"MSP430x14x.h"
//編譯器;IAR Embedded Workbench V3.21A
//版本;CO2-1
//作者;彭三軍
//版權(quán);華盛昌
//******************************************************************
void main(void)
{
//關(guān)閉開門狗
WDTCTL = WDTPW + WDTHOLD;
//選擇晶振的去藕電容
FLL_CTL0 |= XCAP18PF;
//用默認(rèn)的時(shí)鐘,SCFQCTL=31,MCLK = 1048576Hz
for (i = 0; i < 0x3600;i++); // Delay for clock set up
//選擇MCLK工作頻率為1~2M之間
SCFQCTL = 63;
SCFI0 = FN_2;
init_io();
init_ad();
init_uart();
while(1)
{
}
}
//**********************************************************************
// 名稱: init_io
// 說明:初始化IO口
// 功能: 設(shè)置IO口
// 調(diào)用:無
// 輸入:無
// 返回值:無
//**********************************************************************
void init_io(void)
{
//將P1口所有的管腳設(shè)置為輸入方向
P1DIR = 0;
//將P1口所有的管腳設(shè)置為一般I/O口
P1SEL = 0;
// 將P1.4 P1.5 P1.6 P1.7設(shè)置為輸出方向
P1DIR |= BIT4;
P1DIR |= BIT5;
P1DIR |= BIT6;
P1DIR |= BIT7;
//先輸出低電平
P1OUT = 0x00;
// 將中斷寄存器清零
P1IE = 0;
P1IES = 0;
P1IFG = 0;
//打開管腳的中斷功能
//對(duì)應(yīng)的管腳由高到低電平跳變使相應(yīng)的標(biāo)志置位
P1IE |= BIT0;
P1IES |= BIT0;
P1IE |= BIT1;
P1IES |= BIT1;
P1IE |= BIT2;
P1IES |= BIT2;
P1IE |= BIT3;
P1IES |= BIT3;
//將P2口所有的管腳設(shè)置為輸出方向
P2DIR = 0x0ff;
//將P2口所有的管腳設(shè)置為一般I/O口
P2SEL = 0;
//先輸出低電平
P2OUT = 0x00;
// 將中斷寄存器清零
P2IE = 0;
P2IES = 0;
P2IFG = 0;
//將P3口所有的管腳設(shè)置為輸入方向
P3DIR = 0;
//將P3口所有的管腳設(shè)置為一般I/O口
P3SEL = 0xf0;
//將P4口所有的管腳設(shè)置為輸出方向
P4DIR = 0x0ff;
//將P4口所有的管腳設(shè)置為一般I/O口
P4SEL = 0;
//先輸出高電平
P4OUT = 0x0ff;
//將P5口所有的管腳設(shè)置為輸出方向
P5DIR = 0x0ff;
//將P5口所有的管腳設(shè)置為一般I/O口
P5SEL = 0;
//先輸出高電平
P5OUT = 0x0ff;
//將P6口所有的管腳設(shè)置為輸出方向
P6DIR = 0x0ff;
//將P6.0口所有的管腳設(shè)置為一般I/O口
P6SEL = 3;
//先輸出高電平
P6OUT = 0x0ff;
}
//**********************************************************************
// 名稱: init_io
// 說明:初始化AD口
// 功能: 設(shè)置12位AD
// 調(diào)用:無
// 輸入:無
// 返回值:無
//**********************************************************************
void init_ad(void)
{
P6SEL |= 0x01; // Enable A/D channel A0
ADC12CTL0 = ADC12ON+SHT0_8+MSC; // Turn on ADC12, set sampling time
ADC12CTL1 = SHP+CONSEQ_2; // Use sampling timer, set mode
ADC12IE = 0x01; // Enable ADC12IFG.0
ADC12CTL0 |= ENC; // Enable conversions
ADC12CTL0 |= ADC12SC; // Start conversion
}
//**********************************************************************
// 名稱: init_uart
// 說明:初始化串口口
// 功能: 設(shè)置串口1串口2成一般UART
// 調(diào)用:無
// 輸入:無
// 返回值:無
//**********************************************************************
void init_uart(void)
{
//將寄存器的內(nèi)容清零
U1CTL = 0X00;
//數(shù)據(jù)位為8bit
U1CTL += CHAR;
//將寄存器的內(nèi)容清零
U1TCTL = 0X00;
//波特率發(fā)生器選擇SMCLK
U1TCTL += SSEL1;
//波特率為19200
UBR0_1 = 0X36;
UBR1_1 = 0X00;
//調(diào)整寄存器
UMCTL_1 = 0X6b;
//使能UART1的TXD和RXD
ME2 |= UTXE1 + URXE1;
//使能UART1的RX中斷
//IE2 |= URXIE1;
//使能UART1的TX中斷
//IE2 |= UTXIE1;
//設(shè)置P3.6為UART1的TXD
P3SEL |= BIT6;
//設(shè)置P3.7為UART1的RXD
P3SEL |= BIT7;
//P3.6為輸出管腳
P3DIR |= BIT6;
return;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -