打印
[疑难问答]

MA805 蜂鸣器

[复制链接]
1719|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

原理图是很常用的那种,MA805-64,接的是OCD服用的那个引脚,在切换外部晶振的时候,我设置了P4.5为普通IO口。
void change_ocInit(void)        //切换外部晶振
{         
  IFD    = 0x0c;  //ISP Flash data,访问AUXRA时,IFD=AUXRA,使能外部晶振和默认内部高频,
                  //关闭OCD功能  
  IFMT   = 0x06;  //ISP Mode Table AUXRA寄存器写操作
  ISPCR |= 0x80;  //ISP Control Register 使能ISPEN
  SCMD   = 0x46;
  SCMD   = 0xb9;
        _nop_();          //等待晶振稳定
    _nop_();
    _nop_();
        _nop_();
        _nop_();
  IFD    = 0x0b;  //使能外部晶振和使用外部晶振
  IFMT   = 0x06;
  ISPCR |= 0x80;
  SCMD   = 0x46;
  SCMD   = 0xb9;
  ISPCR  = 0x00;  //关闭擦除功能
  IFMT   = 0x00;  //进入待命状态
}

void main()
{
  change_ocInit();
   P4M0=0x00;             //推挽
  P4M1=0xff;
  //P4=0x70;
  //DelayMs(1000);
while(1)
{
    P4 = 0xff;
        P1 =~ P1;
// P4=0x00;                                //P4口置0
  DelayMs(500);

}
}
为啥蜂鸣器没响呢,我昨天测试的时候,只要把P4.5设置为推挽,就直接响了,而且低电平还拉不下来。



沙发
Dong~| | 2015-1-12 11:03 | 只看该作者
按楼主的程序,测试了下,无**确的切换到外部晶振!
更改了一下程序,测试可以正确切换晶振,P45也可正常输出!

#include "REG_MA805.H"

//毫秒延时程序
void DelayMs(unsigned int DelayTime)
{
    do{
            TR0=0;
            TR0 = 0;
        TH0=0xFC;
        TL0=0x66;
            TF0 = 0;
            TR0 = 1;
            while(!TF0);
    }while(--DelayTime != 0);
}

void change_ocInit(void)        //切换外部晶振
{         
        IFD    = 0x0C;  //ISP Flash data,访问AUXRA时,IFD=AUXRA,使能外部晶振和默认内部高频,
              //关闭OCD功能  
        IFMT   = 0x06;  //ISP Mode Table AUXRA寄存器写操作
        ISPCR |= 0x80;  //ISP Control Register 使能ISPEN
        SCMD   = 0x46;
        SCMD   = 0xb9;
        _nop_();         
        DelayMs(10);        //等待晶振稳定
        IFD    = 0x0F;  //切换到外部晶振
        IFMT   = 0x06;
        ISPCR |= 0x80;
        SCMD   = 0x46;
        SCMD   = 0xb9;
        _nop_();         
        DelayMs(10);         //等待切换稳定
        IFD    = 0x0B;  //关闭内部晶振
        IFMT   = 0x06;
        ISPCR |= 0x80;
        SCMD   = 0x46;
        SCMD   = 0xb9;
        _nop_();         

        ISPCR  = 0x00;  //关闭擦除功能
        IFMT   = 0x00;  //进入待命状态
}

void main()
{

    TMOD = 0x11;
        change_ocInit();

    while(1)
    {   
                P1=~P1;
                P45=!P45;
                DelayMs(400);
    }
}

MA805-P45.jpg (230.04 KB )

MA805-P45.jpg

使用特权

评论回复
板凳
mx2海贼|  楼主 | 2015-1-13 09:35 | 只看该作者
恩恩,是的,我后来改了一下,晶振可以正确起振了,蜂鸣器也可以工作了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

18

帖子

0

粉丝