• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

PIC16单片机按键控制源程序错误

793a95f4e4f10d4e 2020-06-06 浏览量:544
PIC16系列单片机,RA1-3引脚接按钮,三个按钮控制RC1-3引脚的高低电平变化.RA1按钮按下,RC1为高电平,RC2为高电平,RC3为低电平。
RA2按钮按下,RC1为低电平,RC2为高电平,RC3为低电平。
RA3按钮按下,RC1为高电平,RC2为高电平,RC3为高电平

下面是自己写的,但是实现不了,不知道哪里错了?求教
#include <pic.h> 
#define uint unsigned int
#define uchar unsigned char

void delay(uint x)  //延时函数
{
uint ab;
for(a=x;a>0;a--)
  for(b=110;b>0;b--);
}


void main()   //主函数
{
TRISA=1;PORTA=0xff;
TRISC=0;PORTC=0x00;
while(1)
{
if((PORTA & 0x02) != 0x02)  //判断按键是否有被按下,有则为0
  {
  delay(10); //去抖
  if((PORTA & 0x02) != 0x02) //去抖完得再判断一次
   {
         RC1=1;
         RC2=1;
         RC3=0;
   }

  }
if((PORTA & 0x04) != 0x04)  //判断按键是否有被按下,有则为0
  {
  delay(10); //去抖
  if((PORTA & 0x04) != 0x04) //去抖完得再判断一次
   {
         RC1=0;
         RC2=1;
         RC3=0;
}
  }
if((PORTA & 0x08) != 0x08)  //判断按键是否有被按下,有则为0
  {
  delay(10); //去抖
  if((PORTA & 0x08) != 0x08) //去抖完得再判断一次
   {
         RC1=1;
         RC2=1;
         RC3=1;
   }
  }
}
}


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 先从硬件上查一下,按键的操作是不是对的,再试一下输出的状态可以不可以输出正确。要是都行,应该是你的逻辑的问题了

    可以看一下去抖的时间是不是太短

    你可以再描述下,不能实现的具体现象,也更好帮你分析

    • 发布于 2020-06-18
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 这些信号的电平状态并不是保护的,而是只有按下的时候才会改变,有效的,你的逻辑有问题
    • 发布于2020-06-06
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

PIC16单片机按键控制源程序错误