b口上拉问题

[复制链接]
2937|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();}
        }
}
 楼主| vr571 发表于 2015-1-15 21:27 | 显示全部楼层
程序没问题,板子是最小系统板,问题出在哪啊?帮帮忙啊
wangtao478552 发表于 2015-1-16 15:33 | 显示全部楼层
什么芯片祖宗
youss 发表于 2015-1-16 19:17 | 显示全部楼层
vr571 发表于 2015-1-15 21:27
程序没问题,板子是最小系统板,问题出在哪啊?帮帮忙啊

不要说这么绝对......看看//原地等待
NE5532 发表于 2015-1-17 16:38 | 显示全部楼层
程序没问题,板子也没问题,芯片更没问题,那你还问啥问题?

都说了程序里有RB口外部中断了,你都不去怀疑一下跟B口上拉有没有点关系?教材就是正确的了啊?拿本教材就可以当饭吃?要学会自己思考,自己分析,自己走路,才有自己的饭吃啊。
 楼主| vr571 发表于 2015-1-22 10:09 | 显示全部楼层
用的pic16f877a,没法了。买块板子试试,到底是软件还是硬件的问题。谢谢大家。
youss 发表于 2015-1-22 12:21 | 显示全部楼层
买板子也解决不了问题呵, 最好是你仿真单步运行,肯定可以看出问题出在哪里,对程序的理解将更上一层楼!
youss 发表于 2015-1-22 12:24 | 显示全部楼层
没有仿真器可以买个 pickit2  pickit3  山寨的几十元搞定
兰天白云 发表于 2015-1-22 16:23 | 显示全部楼层
先查硬件,看看电源是否正常,单片机是否很热?
再看看程序,如果没有头绪,先写个简单的代码测试一下
 楼主| vr571 发表于 2015-1-28 10:49 | 显示全部楼层
谢谢诸位,找到原因了,芯片坏了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部