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

📄 io_init.h

📁 MSP430单片机C语言应用程序设计实例精讲
💻 H
字号:
#define PWM_EN
/**********液晶管脚************/
#define LCD_DATA_IN P6IN
#define LCD_DATA_OUT P6OUT
#define LCD_RSTH P8OUT|=BIT3
#define LCD_RSTL P8OUT&=~BIT3
#define LCD_CSH P8OUT|=BIT2
#define LCD_CSL P8OUT&=~BIT2
#define LCD_DCH P8OUT|=BIT1
#define LCD_DCL P8OUT&=~BIT1
#define LCD_WRH P8OUT|=BIT0
#define LCD_WRL P8OUT&=~BIT0
/**********脉冲输出管脚************/
#define PULSEH P1OUT|=BIT4
#define PULSEL P1OUT&=~BIT4
/**********动态校零控制管脚************/
#define DynZeroValid P1OUT|=BIT5
#define DynZeroInValid P1OUT&=~BIT5
/**********报警2控制管脚************/
#define Alarm2Valid P1OUT|=BIT7
#define Alarm2InValid P1OUT&=~BIT7
/**********报警1控制管脚************/
#define Alarm1Valid P2OUT|=BIT1
#define Alarm1InValid P2OUT&=~BIT1
/**********流量有效控制************/
#define FlowValid P2OUT|=BIT4;P2OUT&=~BIT2
/**********空管输出4个低脉冲控制管脚************/
#define EmPipeValid P2OUT&=~BIT3
#define EmPipeInValid P2OUT|=BIT3
/**********空管有效控制************/
#define EmPipeCtrValid P2OUT|=BIT2;P2OUT&=~BIT4
/**********DS1302控制管脚************/
#define DS1302RSTH P3OUT|=BIT0
#define DS1302RSTL P3OUT&=~BIT0
#define DS1302DOUTH P3OUT|=BIT0
#define DS1302DOUTL P3OUT&=~BIT0
#define DS1302DIN P3IN&BIT1
#define DS1302CLKH P3OUT|=BIT2
#define DS1302CLKL P3OUT&=~BIT2
/**********RS485控制管脚************/
#define RS485OUT P3OUT|=BIT3
#define RS485IN P3OUT&=~BIT3
/**********励磁控制管脚************/
#define ExcitationH P4OUT|=BIT0;P4OUT&=~BIT1
#define ExcitationZ P4OUT|=BIT1;P4OUT&=~BIT0
#define ExcitationL P4OUT|=BIT0+BIT1
#define ExcitationValid P4OUT|=BIT2
#define ExcitationInValid P4OUT&=~BIT2
#define ExcitationDIN P4IN&~BIT3
/**********按键管脚************/
#define key_num P8IN&(BIT4+BIT5+BIT6)
void UCS_init(void)
{
  P5SEL |= BIT2+BIT3;//选择XT2,10Mhz
  UCSCTL6 &= ~XT2OFF;// 使能XT2
  UCSCTL3 |= SELREF_2;// FLL参考REFO,因为XT1不能用
  UCSCTL4 |= SELA_2;  // ACLK=REFO,SMCLK=DCO,MCLK=DCO
  //循环直到XT1,XT2,DCO稳定
  do
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);//清XT2,XT1,DCO错误标志
    SFRIFG1 &= ~OFIFG;//清错误标志
  }while (SFRIFG1&OFIFG);//测试振荡器错误标志
  UCSCTL6=XT2DRIVE0+XT1OFF_L;//XT2运行范围为8 MHz to 16 MHz,关闭XT1
  UCSCTL4=SELM__XT2CLK+SELS__XT2CLK+SELA__XT2CLK;  //ACLK,SMCLK,MCLK选择XT2
  UCSCTL5|=DIVA__32;  //ACLK=XT2/32 0.3125MHz
  UCSCTL5|=DIVM__1;  //MCLK=XT2
  UCSCTL5|=DIVS__8;  //SMCLK=XT2/8 1.25MHz
}
void IO_INIT(void)
{
    #ifdef PWM_EN //输出4~20mA
       P1SEL=BIT6; //P1.3PWM输出,P1.6输出SMCLK
       P1DIR=BIT4+BIT5+BIT6+BIT7;
    #else //仅输出频率
       P1SEL=BIT4+BIT6; //P1.4瞬时流量频率输出,P1.6输出SMCLK
       P1DIR=BIT4+BIT5+BIT6+BIT7;
    #endif
    P2SEL=BIT0;
    P2DIR=BIT1+BIT2+BIT3+BIT4;
    P3SEL=BIT4+BIT5;
    P3DIR=BIT0+BIT2+BIT3+BIT4;
    P4SEL=0;
    P4DIR=BIT0+BIT1+BIT2;
    P5SEL=BIT2+BIT3+BIT5;
    P5DIR=BIT4+BIT5;
    P6SEL=0;
    P6DIR=BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
    P7SEL=0;
    P7DIR=0;
    P8SEL=0;
    P8DIR=BIT0+BIT1+BIT2+BIT3;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -