PIC16LF1503 代码查了2天都查不出来,求大神指点迷津!

2020-02-06 09:55发布

根据RC2的电平控制RC0的电平,可是实际上不管RC2的电平高低,RC0都是低电平!!查了2天都查不到原因  TT

#include <htc.h>
//__CONFIG(FOSC_ECL&WDTE_OFF);
__CONFIG(0x3fe4);
//内部晶振,禁止看门狗

void init_gpio()
{
        TRISA0=1;   //ICSPDAT        
        TRISA1=1;        //ICSPCLK
        TRISA2=1;        //DIM  INT
        TRISA3=1;         //VPP
        TRISA4=1;         //DIM  SAMP
        TRISA5=1;        //NC

        SDOSEL = 1;
        ANSELC |= 0X04;
        TRISC = 0X04;

        INTCON = 0x00;   //关闭所有中断
}

main()
{
        OSCCON=0B01101011;        //fosc=4Mhz; internal osc;
        WDTCON = 0;

        init_gpio();

        while(1)
        {
                if(PORTC & 0X04)
                        PORTC |= 0X01;
                else
                        PORTC &= ~0X01;       
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
EMC菜鸟
1楼-- · 2020-02-06 13:22
作为一个强迫症患者,看到楼主“if(PORTC & 0X04)”这种语句就异常难受!写成 if((PORTC & 0X04)!=0) 能咋的?

虽然这个可能跟楼主的问题无关!
huali8412
2楼-- · 2020-02-06 19:22
EMC菜鸟 发表于 2017-2-10 08:59
作为一个强迫症患者,看到楼主“if(PORTC & 0X04)”这种语句就异常难受!写成 if((PORTC & 0X04)!=0) 能咋 ...

赞同楼上的说法,代码要写的规范一些,维护也相对容易
laujc
3楼-- · 2020-02-06 22:14
EMC菜鸟 发表于 2017-2-10 08:59
作为一个强迫症患者,看到楼主“if(PORTC & 0X04)”这种语句就异常难受!写成 if((PORTC & 0X04)!=0) 能咋 ...


这样写可以省4个byte的空间。

我试过。

我有可能我碰到了傻b编译器。
touch_mcu
4楼-- · 2020-02-06 22:26
 精彩回答 2  元偷偷看……
severewinner
5楼-- · 2020-02-07 02:10
没用过这个芯片,估计像5楼所说是配置不对,肯定输出不了高。
至于是不是模拟输入查一下芯片手册,

做驱动时候,得到不是想要的现象多半是没配置多,多看几遍手册,一个一个寄存器查
EMC菜鸟
6楼-- · 2020-02-07 07:16
laujc 发表于 2017-2-10 09:05
这样写可以省4个byte的空间。

我试过。

如果这样,还不如直接写:if(RC2) ,不是更省?

一周热门 更多>