菜鸟PIC16按键LED不亮,求解

2020-02-06 09:57发布

本帖最后由 wang479871 于 2014-3-1 19:42 编辑

//我想通过PIC16F883单片机的RA1管脚按键输入,RB6管脚接LED做指示灯
//我已经用万用表测了RA1管脚信号电压不管是0V还是5V,RB6LED都不亮,如果PORTB=0xFF,则LED亮
//编译环境为 MPLAB IDEv8.7,编译器用HI-TECH C,下面这是单片机配置位
配置位.png (34.8 KB, 下载次数: 0) 下载附件 2014-3-1 19:40 上传
#include <pic.h>
#define uchar unsigned char
#define uint  unsigned int

void Port_Init()
{
        TRISA |= 0x02;        //RA1管脚配置输入
        TRISB &= ~0x40;        //RB6管脚配置输出
        INTCON = 0x00;   //关闭所有中断
}


void main()
{
        Port_Init();
        while(1)
        {
                if(PORTA & 0x02)
                        PORTB |= 0x40;
                else
                        PORTB &= ~0x40;        
        }
}

//请教LED不亮的原因是程序不对,还是配置位不对,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
lzandyc
2020-02-07 14:49
wang479871 发表于 2014-3-1 23:01
真是太感谢你了,我加了个ANSEL &= ~0x02;就可以了。
我仔细看了下手册配置IO端口

楼主,以下我根据你的代码改的,根据RC2的电平来控制RC0的电平,可是实际上测试RC0一直都是低电平,我还有什么问题吗?查了2天资料都没有发现


#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;       
        }
}

一周热门 更多>