搜索
bottom↓
回复: 10

熟悉PIC12编程的来帮个忙(已解决)

[复制链接]

出0入0汤圆

发表于 2016-2-26 12:11:51 | 显示全部楼层 |阅读模式
本帖最后由 saddam911 于 2016-2-26 13:54 编辑

之前一个产品用PIC12F629产生一个14K方波驱动蜂鸣器,以前控制整个方波开关是控制单片机电源开关,现在想改成一直供电,用一个IO口高电平来控制14K方波开关,
所以需要修改一下程序,以前程序是一直产生一个14K方波,现在得改成读GPIO1,如果是高电平则产生14K方波,若是低电平就不产生14K方波,没用过PIC单片机,简单看了一下PIC12的手册改了一下程序,可是不行,
我把GPIO1接成高电平了可是没有14K方波,下面是程序,大家有熟悉PIC12的帮我看一下哪里有问题。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include<pic.h>
#define uchar unsigned char
#define uint  unsigned int
__CONFIG(0X01B1);/*00,000,数据保护为1,代码保护为1,BODEN为0,MCLR为1,
上电定时启动1,看门狗禁止0,震荡XT 101   00 0001 1011 0101 */
//晶振3.579545M
void init()
{
       
        TRIS0=0;TRIS1=1;TRIS2=0;TRIS3=0;TRIS4=0;TRIS5=0;//设置GPIO1为输入,其余GPIO为输出

        GPIO=0;
        //OPTION =0X00;//分频,及时钟分频
        INTCON=0Xc0;//中断控制
        PIE1=0X01;
        TMR1L=(65536-50000)%256;
        TMR1H=(65536-50000)/256;
        T1CON=0X01;
       
}

void main()
{
        init();
        while(1);
}

void interrupt time0()
{
        TMR1IF=0;
        TMR1L=237;//(65536-22)%256;
        TMR1H=255;//(65536-22)/256;
    if(GPIO1==1)
    {
        GPIO2=!GPIO2;
    }
    else
    {
            GPIO2=0;
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-2-26 13:06:16 | 显示全部楼层
楼主先去掉判断GP1的语句,试试看会响吗?

出0入0汤圆

发表于 2016-2-26 13:16:41 | 显示全部楼层
这个IC用C写支持不好,以前我用汇编写的.

出0入18汤圆

发表于 2016-2-26 13:32:29 | 显示全部楼层
你的GIE全局中断没开啊?

出0入0汤圆

发表于 2016-2-26 13:40:49 | 显示全部楼层
用的是啥编译器

出0入0汤圆

 楼主| 发表于 2016-2-26 13:52:47 | 显示全部楼层
河图洛书 发表于 2016-2-26 13:06
楼主先去掉判断GP1的语句,试试看会响吗?

加了一句CMCON=0x07就可以了,好像是默认IO是模拟IO,这句是设置成数字IO

出0入0汤圆

 楼主| 发表于 2016-2-26 13:53:37 | 显示全部楼层
waronder 发表于 2016-2-26 13:32
你的GIE全局中断没开啊?

加了一句CMCON=0x07就可以了,好像是默认IO是模拟IO,这句是设置成数字IO

出0入8汤圆

发表于 2016-2-26 23:31:54 来自手机 | 显示全部楼层
卧槽直接买个有源蜂鸣器不行吗?

出0入0汤圆

 楼主| 发表于 2016-2-27 10:44:54 | 显示全部楼层
mkliop 发表于 2016-2-26 23:31
卧槽直接买个有源蜂鸣器不行吗?

刚才查了一下有源蜂鸣器的频率好像都是4K,我的蜂鸣器需要14K,不知道有没有这样的有源蜂鸣器,有的话更好,我的蜂鸣器不是用来听响声的,是干别的用的,所以对频率有要求。有时间再仔细找找看看有没有14K的有源蜂鸣器。

出0入20汤圆

发表于 2016-2-27 14:26:16 来自手机 | 显示全部楼层
Firman 发表于 2016-2-26 13:16
这个IC用C写支持不好,以前我用汇编写的.

无法理解的表达,个人认为这类片子最好用C。2003年以后PIC12C508,'683等的片子,全部用C。

出0入213汤圆

发表于 2016-3-19 02:29:02 来自手机 | 显示全部楼层
这么弱的片子,还是用汇编强
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 23:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表