按键问题

2019-03-25 19:40发布

其中D4口连1个按键
C0和C1口分别连1个LED灯
D4按下 C0亮C1灭
再按C0灭C1亮
再按C1灭C0亮
如此按键每次按下2个灯反复亮   
程序应该怎么写  
  我自己写的乱掉了,陷入混乱中了。。。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
huang0909
1楼-- · 2019-03-26 01:42
用的16f877芯片么?
我也是初学者,临时写了一个~
不当之处请各位大侠多指教!
好像RD口有内部上拉控制寄存器?不知道怎么配置了,还有那个配置位的。。。

#include<pic.h>
void init()//初始化端口
{
        TRISC=0x00;//C口做输出
        PORTC=0x01;//对C口赋初值,00000001,RC0=1,其余为0;
        TRISD=0xff;//D口做输入
}       
void delay()  //延迟函数
{
        int i,j;
        for(i=20;i>0;i--)
                for(j=100;j>0;j--);       
}
void main()
{
        init();//初始化函数
        while(1)//死循环
        {
                if(RD4==0)                        //        判断按键是否按下
                {
                        delay();                //         延迟消抖
                        if(RD4==0)                //        再次判断按键是否按下
                        {
                                RC0=!RC0;        //  取反
                                RC1=!RC1;        //        取反
                                while(!RD4);//        等待按键释放
                        }
                }
        }
}
huang0909
2楼-- · 2019-03-26 06:54
因为没有配置内部上拉,因此RD4要外接个上拉电阻,延迟可以适当调整。

一周热门 更多>