⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 医疗电子,血氧浓度测量模块原程序,采用430 单片机.
💻 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 + -