求单片机msp430f149 C程序 :当I/O口输入低电平时,驱动蜂鸣器响 ,蜂鸣器连p6.7。

如题所述

你的要求说的不是太清,没有说明当哪个IO口输入低时驱动蜂鸣器,也没有说明是高还是低电平驱动蜂鸣器。我这个程序的作用是p30输入低时,p67输出高,否则p67输出低,不合适的话,你只需稍微改下,即可满足你的要求
#include <msp430x14x.h> //声明库
void main(void) //主函数
{
WDTCTL=WDTPW+WDTHOLD; //关掉看门狗
P6DIR |=0x80; //设定P67为输出
P3DIR &=0xfe; //设定P30为输输入
while(1) {
if(P3IN&0X01==0)
P6OUT|=0x80;
else
P6OUT&=0x7f;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-21
/*蜂鸣器接在P67口上*/
#include <msp430x14x.h>
#define CPU_F ((double)8000000) //假设晶振8M
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
/*系统时钟初始化*/
void Clock_Init()
{ unsigned char i;
BCSCTL1&=~XT2OFF; //打开XT2振荡器
BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZ
do{
IFG1&=~OFIFG; //清除振荡器错误标志
for(i=0;i<100;i++)
_NOP();
}
while((IFG1&OFIFG)!=0); //如果标志位1,则继续循环等待
IFG1&=~OFIFG;
}
/*端口初始化*/
void Port_Init()
{ P6SEL&= ~BIT7; //p67口为普通I/O
P6DIR |= BIT7; //P67为输出方向
P6OUT |= BIT7; //P67口初始高,蜂鸣器不响
}
/*主程序*/
void main(void)
{ WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
Clock_Init(); //时钟初始化
Port_Init(); //端口初始化

while(1)
{ P6OUT &= ~BIT7; //P67置低,蜂鸣器响
delay_ms(200); //延时200ms
P6OUT |= BIT7; //P67置高,蜂鸣器不响
delay_ms(200); //延时200ms
}
}追问

谢谢,很详细。但是主程序没有I/O口输入(任意一个)。另外我没说清楚 低电平输入有效,蜂鸣器接P67 高电平响。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网