打印

PIC16f690单片机不工作

[复制链接]
2601|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dlmudu|  楼主 | 2016-1-5 11:39 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dlmudu 于 2016-1-5 16:07 编辑

用PIC16f690做一个继电器控制程序,程序写进去了,但是不工作,大家给我分析一下这里是部分程序:
#include <pic.h>
__CONFIG(0x3b2a);   //XT,MCLR,CP,CPD,保护
#define uchar   unsigned char
#define uint    unsigned int
#define ulint   unsigned long

#define _XTAL_FREQ 4000000  // 4M晶振数值


void init(void)
{
     ANSEL  = 0x00;
    ANSELH = 0x00;       //数字量输入

    TRISA|=0x04;        //RA口,RA2输入,其他为特殊端口不设置
    TRISA&=0x04;

    TRISB|=0x00;        //RB口为输出口
    TRISB&=0x00;
    //WPUB=0xff;          //使能RB所有口的内部弱上拉功能。

    TRISC|=0xff;        //RC口为输入端
    TRISC&=0xff;

    T0CS=0;             //给Timer0选择内部指令周期计数,即将它设置为定时器功能。此时Timer0也开始工作了。
    PSA=0;              //将预分频器分配给Timer0.
    PS2=0;              //分频比设置为16.则在4M晶振下,Timer0一个中断周期为4096us。
    PS1=1;
    PS0=1;
    T0IE=1;             //允许Timer0中断
          PEIE=1;           //允许所有未被屏蔽的外设中断
          GIE=1;            //允许全局中断

        WDTPS3=0;           //设置看门狗分频是2048
    WDTPS2=1;
    WDTPS1=1;
    WDTPS0=0;
//        PORTC=0xff;
                  
}



void main(void)
{
        init();

        while(1)
        {
                asm("clrwdt");         
                if(RC5==0)
                        RB4=0;        
                else
                        RB4=1;        
        }
}


这里是硬件电路

未命名3.bmp (2.78 MB )

未命名3.bmp

未命名4.bmp (2.78 MB )

未命名4.bmp
沙发
dlmudu|  楼主 | 2016-1-5 12:32 | 只看该作者
测试了一下,晶振两端电压相对电压为5v,换了晶振也是一样的,什么原因

使用特权

评论回复
板凳
JY-DX-JY| | 2016-1-5 12:59 | 只看该作者
拿示波器测试一下。

使用特权

评论回复
地板
dlmudu|  楼主 | 2016-1-5 13:08 | 只看该作者
JY-DX-JY 发表于 2016-1-5 12:59
拿示波器测试一下。

应该不是晶振的问题,程序写进去后,输入信号时继电器不动作,强制动作后,保持,断开信号后继电器也断开

使用特权

评论回复
5
dlmudu|  楼主 | 2016-1-5 13:31 | 只看该作者
又测试了一下,应该是输出光耦那端的问题,单片机输出为0,光耦应该导通的,可是没有,
el817,1脚电压为1.2V,2脚为0(理论导通),可是4脚电压为3.1伏,不知道啥原因呢

使用特权

评论回复
6
dlmudu|  楼主 | 2016-1-5 14:03 | 只看该作者
是出在硬件电路的问题上了,光耦输出端不导通

使用特权

评论回复
7
JY-DX-JY| | 2016-1-5 14:15 | 只看该作者
断开后面的继电器电路测呢?

使用特权

评论回复
8
dlmudu|  楼主 | 2016-1-5 16:05 | 只看该作者
JY-DX-JY 发表于 2016-1-5 14:15
断开后面的继电器电路测呢?

犯了一个很严重的错误,是后端的光耦驱动力不行,换成达林顿的光耦就好使了

使用特权

评论回复
9
JY-DX-JY| | 2016-1-5 16:18 | 只看该作者
解决了就好

使用特权

评论回复
10
hua_ren| | 2016-1-9 12:54 | 只看该作者
用示波器测试测试,应该可以找到问题

使用特权

评论回复
11
shandi| | 2016-2-4 11:23 | 只看该作者
cp cpd保护后,单片机还能下载程序吗

使用特权

评论回复
12
Nightswhisper| | 2018-3-12 09:36 | 只看该作者
楼主,您好,我最近在研究pic16F690,我想知道这片芯片 用什么软件来编程和下载呢,我看MPLAB IDE
好像要用汇编

使用特权

评论回复
13
JLennon| | 2018-3-14 13:41 | 只看该作者
Nightswhisper 发表于 2018-3-12 09:36
楼主,您好,我最近在研究pic16F690,我想知道这片芯片 用什么软件来编程和下载呢,我看MPLAB IDE
好像要用 ...

可以C的,PICC编译器论坛可以找到。

使用特权

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

本版积分规则

18

主题

57

帖子

0

粉丝