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

[复制链接]
4421|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仔细看喽。
 楼主| 西早念子 发表于 2013-6-3 16:19 | 显示全部楼层
读了手册好几次了,是根据手册上的设置的,还是不对。芯片也换过了。不是偷懒让人帮解答。是想不明白简单的几行代码为什么就不行呢,有经验的请指导一下 谢谢。
16777216 发表于 2013-6-3 16:21 | 显示全部楼层
if else 里面的语句 直接k=1 k=2 不就好了么  这么搞一下是干嘛?
 楼主| 西早念子 发表于 2013-6-3 16:26 | 显示全部楼层
K是无关紧要的就是想测试RB1能不能读到高电平。结果是读不到高电平,我是直接拉高到5V的,但是仿真放置断点根本没有进入else if(PORTBbits.RB1==1)
            
llqjmy 发表于 2013-6-4 12:21 | 显示全部楼层
ADCON1 =0X0E;配置对吗?
ADCON1=0x0;   //禁止AD,使能Digtal
wolfdong7 发表于 2013-6-5 09:41 | 显示全部楼层
lz,我們必須交朋友了,你遇到的问题我都遇到过,哈哈!
RB0-4因为PIC功能复用了,因为那是AD的采集口。网上得到答复是要先关闭,将它设置成数字IO。
我修改了一下,没成功,后面我直接换成RB6了。呵呵!
 楼主| 西早念子 发表于 2013-6-6 10:51 | 显示全部楼层
问题解决了。要设置ANCON寄存器。另外一定要找对规格书
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

45

帖子

1

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