📄 init.c
字号:
#include "global.h"
void init(void)
{
uint i;
WDTCTL=WDTPW+WDTHOLD; //关闭看门
BCSCTL1 &= ~XTOFF; //XT2振荡器开启
BCSCTL2|=SELM1+SELS; //MCLK的时钟源为DCOCLK
//SMCLK的时钟源为TX2CLK
//SMCLK 1分频
do
{
IFG1&=~OFIFG; // 清楚 OSCFault 标志
for(i=0xFF;i>0;i--); // 延时等待
}
while ((IFG1 & OFIFG)!=0); // 查询OSCFault标志,若为0,则转换完成
//===========定义输出口==================
P2DIR|=BIT0; //Q0 DG308控制
P2DIR|=BIT1; //Q1 DG308控制
P2DIR|=BIT2; //Q2 DG308控制
P2DIR|=BIT3; //Q3 DG308控制
P2DIR|=BIT4;
P2DIR|=BIT5; //红光控制
P2DIR|=BIT6; //红外控制
P2DIR|=BIT7; //Q7 AD8402 CLK
P3DIR|=BIT0; //Q8 AD8402 SDI
P3DIR|=BIT1; //Q9 AD8402片选
P3DIR|=BIT2; //Q10 AD8402 RS
P1DIR|=BIT6; //并行通讯口答线
P5DIR|=BIT0+BIT1+BIT2+BIT3;
P4DIR=0XFF; //并行通讯口数据口
//=============定义输入口=================
P5DIR|=BIT4; //输入KEY00
P5DIR&=~BIT5; //输入KEY11
P5DIR&=~BIT6; //输入KEY22
P5DIR|=BIT7; //输入KEY33
P1DIR&=~BIT7; //并行通讯口应线
//=============定义检测口=================
P1DIR&=~BIT0; //检侧1,初始化
P1SEL&=~BIT0;
P1IE=0; //将中断寄存器清零
P1IES=0;
P1IFG=0;
P1IE|=BIT0; //管脚P1.0使能中断
P1IES|=BIT0; //对应的管脚由高电平到低电平跳变使相应的标志位置位
P1DIR&=~BIT1; //检侧2
//============定义通讯口==================
//UTCTL0=0x00; //将寄存器的内容清零
UCTL0&=~SWRST; //SWRST复位,USART允许
UCTL0+=CHAR; //8位数据位,1位停止位,奇校验
UBR00=0x82; //波特率因子
UBR10=0x06;
UMCTL0=0x00; //位调整
UTCTL0=0x20; //选择smclk为时钟源
ME1|=UTXE0+URXE0; //UART0发送及接受模块允许
P3SEL=0x30; //P34,P35被UART0模块占用
P3DIR|=BIT4; //P34输出
P3DIR&=~BIT5; //P35输入
//IE1|=URXIE0+UTXIE0; //接受中断允许
IFG1&=~(UTXIFG0+URXIFG0);
//nsend_TX0=0;
//nTX0_Flag=0;
//Usart0_TX_BUF[0]=0X80;
//Usart0_TX_BUF[1]=0x00;
// Usart0_TX_BUF[2]=0x20;
//Usart0_TX_BUF[3]=0x00;
// Usart0_TX_BUF[4]=0x00;
//nTX0_Len=5;
//=============A/D转换设置=================
ADC12CTL0&=~ENC; //复位ADC的转换不允许
ADC12CTL0=ADC12ON+REF2_5V+REFON+SHT0_2; //可以进行转换
// 内部参考电压为2.5V
//内部参考电压打开
//采样周期为ADC12CLK的8倍
P6SEL=0XFF; //P6为ADC所用
ADC12CTL1=CONSEQ_0+SHP; //单通道单次转换,采样脉冲由定时器产生
//内部时钟源
ADC12MCTL0=SREF_1; //A0通道参考电压:VR+=VREF+,VR=AVSS
ADC12CTL0|=ENC; //ADC的转换允许
//============TIMERA设置======================
TACTL=TASSEL1+TACLR+MC0+ID1;
//选择MCLK时钟,4分频
//清定时器,增计数模式
CCTL1=OUTMOD_7; //捕捉/比较模块1输出模式7
CCTL2=OUTMOD_7; //捕捉/比较模块2输出模式7
P1DIR|=BIT6+BIT7; //P1.6、P1.7为输出
P1SEL|=BIT6+BIT7; //P1.6、P1.7为定时器A的输出
CCTL0=CCIE; //CCR0中断允许
//============TIMERB设置======================
TBCTL=TBSSEL1+TBCLR+MC0+ID1;
//选择SMCLK时钟
//清定时器,增计数模式
//=============================================
P2OUT&=~BIT1;
P5DIR|=BIT0+BIT1+BIT2+BIT3;
P3OUT|=BIT2;
P3OUT&=~BIT2;
P3OUT|=BIT2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -