打印

b口上拉问题

[复制链接]
2584|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vr571|  楼主 | 2015-1-15 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
诸位大侠,发现两奇怪现象,1 pic如果开弱上拉,程序不运行,关闭上拉,就可以运行,但不能用b口输入。2 简单的程序运行正常,但第二天上电又无反应。程序是从教材粘贴的,编译没问题。板子是自己做的,做过几个流水灯小实验,没发现问题。已经找了3天了。停滞不前,急啊。诸位帮帮忙
沙发
youss| | 2015-1-15 13:09 | 只看该作者
本帖最后由 youss 于 2015-1-15 13:10 编辑

电路图没有程序也没有叫人家怎么说?  估计程序中有检测B口低电平状态的--上拉了测不到就一直循环了!

使用特权

评论回复
板凳
vr571|  楼主 | 2015-1-15 14:56 | 只看该作者
奥,最小系统,RE0点亮LED,RB0外部中断,中断熄灭。没别的了啊,回头上图,给我把把脉

使用特权

评论回复
地板
vr571|  楼主 | 2015-1-15 21:25 | 只看该作者
#include <pic.h>
#define uchar unsigned char
#define uint  unsigned int
__CONFIG(HS&WDTDIS);
#define        LED        RD0
#define  BEEP  RE0                   //蜂鸣器
char        flag;                        //全局变量,保存LED状态
/********延时程序********/
void Delay_ms(uint xms)
{
        int i,j;
        for(i=0;i<xms;i++)
                { for(j=0;j<71;j++) ; }
}
/*********蜂鸣器响一声函数********/
void  beep()
{
  BEEP=0;                       //蜂鸣器响
  Delay_ms(100);
  BEEP=1;                   //关闭蜂鸣器
  Delay_ms(100);   
}
/********端口设置函数********/
void port_init(void)
{
        RBPU=0;                                //端口B弱上位使能
        TRISB=0b00000001;                        //RB0设置为输入
        TRISD = 0x00;                                //RD设为设为输出
        ADCON1=0x06;                        //定义RA、RE为IO端口
        TRISE=0x00;                                 //端口E为输出,蜂鸣器(RE0)、继电器(RE1)工作
        PORTE=0xff;
}
/********主函数********/
void main(void)
{
        port_init();
        GIE=1;                                        //开发总中断
        INTE=1;                                //允许RB0/INT中断
        INTEDG=0;                                //下降沿触发
LED=0;
        flag=1;                                       
  while(1);                                //原地等待
}
/********中断服务程序********/
void interrupt ISR(void)
{   
if (INTF==1)
        {
                 Delay_ms(30);                        //延时30ms,躲过抖动时间
                INTF=0;                                //清中断标志位,须在延时之后!
                if (flag==1)
                        {flag=0;LED=0;beep();}
                else
                        {flag=1;LED=1;beep();}
        }
}

使用特权

评论回复
5
vr571|  楼主 | 2015-1-15 21:27 | 只看该作者
程序没问题,板子是最小系统板,问题出在哪啊?帮帮忙啊

使用特权

评论回复
6
wangtao478552| | 2015-1-16 15:33 | 只看该作者
什么芯片祖宗

使用特权

评论回复
7
youss| | 2015-1-16 19:17 | 只看该作者
vr571 发表于 2015-1-15 21:27
程序没问题,板子是最小系统板,问题出在哪啊?帮帮忙啊

不要说这么绝对......看看//原地等待

使用特权

评论回复
8
NE5532| | 2015-1-17 16:38 | 只看该作者
程序没问题,板子也没问题,芯片更没问题,那你还问啥问题?

都说了程序里有RB口外部中断了,你都不去怀疑一下跟B口上拉有没有点关系?教材就是正确的了啊?拿本教材就可以当饭吃?要学会自己思考,自己分析,自己走路,才有自己的饭吃啊。

使用特权

评论回复
9
vr571|  楼主 | 2015-1-22 10:09 | 只看该作者
用的pic16f877a,没法了。买块板子试试,到底是软件还是硬件的问题。谢谢大家。

使用特权

评论回复
10
youss| | 2015-1-22 12:21 | 只看该作者
买板子也解决不了问题呵, 最好是你仿真单步运行,肯定可以看出问题出在哪里,对程序的理解将更上一层楼!

使用特权

评论回复
11
youss| | 2015-1-22 12:24 | 只看该作者
没有仿真器可以买个 pickit2  pickit3  山寨的几十元搞定

使用特权

评论回复
12
兰天白云| | 2015-1-22 16:23 | 只看该作者
先查硬件,看看电源是否正常,单片机是否很热?
再看看程序,如果没有头绪,先写个简单的代码测试一下

使用特权

评论回复
13
vr571|  楼主 | 2015-1-28 10:49 | 只看该作者
谢谢诸位,找到原因了,芯片坏了

使用特权

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

本版积分规则

2

主题

7

帖子

0

粉丝