📄 main.c
字号:
//******************************************************************
//功能作用;实现CO2浓度和温度的检测
//2007-1-21 9:33
//晶振;32768
//CPU;MSP430F147
//使用资源:12位A/D转换,IO口,信息存储段A,串口0,串口1,
// 基本定时器;
//使用库文件;"MSP430x14x.h"
//编译器;IAR Embedded Workbench V3.21A
//版本;CO2-1
//作者;彭三军
//版权;华盛昌
//******************************************************************
void main(void)
{
//关闭开门狗
WDTCTL = WDTPW + WDTHOLD;
//选择晶振的去藕电容
FLL_CTL0 |= XCAP18PF;
//用默认的时钟,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口
// 功能: 设置IO口
// 调用:无
// 输入:无
// 返回值:无
//**********************************************************************
void init_io(void)
{
//将P1口所有的管脚设置为输入方向
P1DIR = 0;
//将P1口所有的管脚设置为一般I/O口
P1SEL = 0;
// 将P1.4 P1.5 P1.6 P1.7设置为输出方向
P1DIR |= BIT4;
P1DIR |= BIT5;
P1DIR |= BIT6;
P1DIR |= BIT7;
//先输出低电平
P1OUT = 0x00;
// 将中断寄存器清零
P1IE = 0;
P1IES = 0;
P1IFG = 0;
//打开管脚的中断功能
//对应的管脚由高到低电平跳变使相应的标志置位
P1IE |= BIT0;
P1IES |= BIT0;
P1IE |= BIT1;
P1IES |= BIT1;
P1IE |= BIT2;
P1IES |= BIT2;
P1IE |= BIT3;
P1IES |= BIT3;
//将P2口所有的管脚设置为输出方向
P2DIR = 0x0ff;
//将P2口所有的管脚设置为一般I/O口
P2SEL = 0;
//先输出低电平
P2OUT = 0x00;
// 将中断寄存器清零
P2IE = 0;
P2IES = 0;
P2IFG = 0;
//将P3口所有的管脚设置为输入方向
P3DIR = 0;
//将P3口所有的管脚设置为一般I/O口
P3SEL = 0xf0;
//将P4口所有的管脚设置为输出方向
P4DIR = 0x0ff;
//将P4口所有的管脚设置为一般I/O口
P4SEL = 0;
//先输出高电平
P4OUT = 0x0ff;
//将P5口所有的管脚设置为输出方向
P5DIR = 0x0ff;
//将P5口所有的管脚设置为一般I/O口
P5SEL = 0;
//先输出高电平
P5OUT = 0x0ff;
//将P6口所有的管脚设置为输出方向
P6DIR = 0x0ff;
//将P6.0口所有的管脚设置为一般I/O口
P6SEL = 3;
//先输出高电平
P6OUT = 0x0ff;
}
//**********************************************************************
// 名称: init_io
// 说明:初始化AD口
// 功能: 设置12位AD
// 调用:无
// 输入:无
// 返回值:无
//**********************************************************************
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
// 说明:初始化串口口
// 功能: 设置串口1串口2成一般UART
// 调用:无
// 输入:无
// 返回值:无
//**********************************************************************
void init_uart(void)
{
//将寄存器的内容清零
U1CTL = 0X00;
//数据位为8bit
U1CTL += CHAR;
//将寄存器的内容清零
U1TCTL = 0X00;
//波特率发生器选择SMCLK
U1TCTL += SSEL1;
//波特率为19200
UBR0_1 = 0X36;
UBR1_1 = 0X00;
//调整寄存器
UMCTL_1 = 0X6b;
//使能UART1的TXD和RXD
ME2 |= UTXE1 + URXE1;
//使能UART1的RX中断
//IE2 |= URXIE1;
//使能UART1的TX中断
//IE2 |= UTXIE1;
//设置P3.6为UART1的TXD
P3SEL |= BIT6;
//设置P3.7为UART1的RXD
P3SEL |= BIT7;
//P3.6为输出管脚
P3DIR |= BIT6;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -