打印

为啥蜂鸣器没响呢

[复制链接]
680|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
冰清玉洁|  楼主 | 2016-7-10 18:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
wenfen| | 2016-7-10 18:09 | 只看该作者
讲讲你得图

使用特权

评论回复
板凳
冰清玉洁|  楼主 | 2016-7-10 18:10 | 只看该作者
原理图是很常用的那种,MA805-64,接的是OCD服用的那个引脚,在切换外部晶振的时候,我设置了P4.5为普通IO口。

使用特权

评论回复
地板
zhuhuis| | 2016-7-10 18:12 | 只看该作者
有程序吗

使用特权

评论回复
5
冰清玉洁|  楼主 | 2016-7-10 18:16 | 只看该作者

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);

}
}

使用特权

评论回复
6
tian111| | 2016-7-10 18:17 | 只看该作者
一直没想过?

使用特权

评论回复
7
冰清玉洁|  楼主 | 2016-7-10 18:19 | 只看该作者
只要把P4.5设置为推挽,就直接响了,而且低电平还拉不下来。

使用特权

评论回复
8
宋倩2010| | 2016-7-10 18:22 | 只看该作者
按楼主的程序,测试了下,无**确的切换到外部晶振!
更改了一下程序,测试可以正确切换晶振,P45也可正常输出!

使用特权

评论回复
9
冰清玉洁|  楼主 | 2016-7-10 18:22 | 只看该作者
怎么弄得

使用特权

评论回复
10
宋倩2010| | 2016-7-10 18:24 | 只看该作者
按楼主的程序,测试了下,无**确的切换到外部晶振!
更改了一下程序,测试可以正确切换晶振,P45也可正常输出!

使用特权

评论回复
11
冰清玉洁|  楼主 | 2016-7-10 18:25 | 只看该作者
我看看程序

使用特权

评论回复
12
宋倩2010| | 2016-7-10 18:26 | 只看该作者

#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);
    }
}

使用特权

评论回复
13
冰清玉洁|  楼主 | 2016-7-10 18:27 | 只看该作者
恩恩,是的,我后来改了一下,晶振可以正确起振了,蜂鸣器也可以工作了

使用特权

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

本版积分规则

307

主题

3250

帖子

5

粉丝