打印

PIC18F25K80的RB0-RB4不能设置为数字输入口

[复制链接]
3983|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
西早念子|  楼主 | 2013-6-3 15:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main(void)
{
      int k =0 ;
        IO_INIT();

            PORTB     =0X00;
        LATB       =0X00 ;
        ADCON1 =0X0E;  //禁止模拟输入
        TRISB  =0XFF ; //设置为输入
//        INTCON2=00;
     
        while(1)
        {
                ClrWdt();
         
       if( PORTBbits.RB1==0)
          {
                   k=0;
                   k++;
          }
                else if(PORTBbits.RB1==1)
                {
                      k=1;
                    k++;
               }  



如上程序,RB1的IO拉高到5V,但是程序始终得到的是0.请问那里设置错误了?
沙发
西早念子|  楼主 | 2013-6-3 15:16 | 只看该作者
请版主帮忙看一下

使用特权

评论回复
板凳
NE5532| | 2013-6-3 15:35 | 只看该作者
Datasheet上声明了的功能不能用,一般只有2种情况——手册写错了;自己看错了。其中前一种情况概率很低,后一种的解决方法是自己把数据手册多读几次。

使用特权

评论回复
地板
yewuyi| | 2013-6-3 16:08 | 只看该作者
如果这样的问题也要版主帮忙,估计得建议每个版面设置专职版主20名以上才可以,不然根本忙不过来。

自己对着DATASHEET仔细看喽。

使用特权

评论回复
5
西早念子|  楼主 | 2013-6-3 16:19 | 只看该作者
读了手册好几次了,是根据手册上的设置的,还是不对。芯片也换过了。不是偷懒让人帮解答。是想不明白简单的几行代码为什么就不行呢,有经验的请指导一下 谢谢。

使用特权

评论回复
6
16777216| | 2013-6-3 16:21 | 只看该作者
if else 里面的语句 直接k=1 k=2 不就好了么  这么搞一下是干嘛?

使用特权

评论回复
7
西早念子|  楼主 | 2013-6-3 16:26 | 只看该作者
K是无关紧要的就是想测试RB1能不能读到高电平。结果是读不到高电平,我是直接拉高到5V的,但是仿真放置断点根本没有进入else if(PORTBbits.RB1==1)
            

使用特权

评论回复
8
llqjmy| | 2013-6-4 12:21 | 只看该作者
ADCON1 =0X0E;配置对吗?
ADCON1=0x0;   //禁止AD,使能Digtal

使用特权

评论回复
9
wolfdong7| | 2013-6-5 09:41 | 只看该作者
lz,我們必須交朋友了,你遇到的问题我都遇到过,哈哈!
RB0-4因为PIC功能复用了,因为那是AD的采集口。网上得到答复是要先关闭,将它设置成数字IO。
我修改了一下,没成功,后面我直接换成RB6了。呵呵!

使用特权

评论回复
10
西早念子|  楼主 | 2013-6-6 10:51 | 只看该作者
问题解决了。要设置ANCON寄存器。另外一定要找对规格书

使用特权

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

本版积分规则

4

主题

45

帖子

1

粉丝