刚学PIC,不明白一个问题,请教大侠,谢谢先

2020-02-09 11:26发布

是这样的,我想用按键控制灯,按一下,LED亮,按一下灭,PORTC_0脚接按键,PORTD_0接LED.程序如下:
LED#include <pic.h>
#include <pic1687x.h>
#include"delay.h"

void main(void)
{
  unsigned char ID=0;
  TRISD&=~0X01;//所有D0端口输出
  PORTD&=~0X01;//所有D0端口输出低电平
  TRISC=0X00;//
  PORTC|=0X01;//所有C0端口输出高电平
  
while(1){  
         
             if(RC0==0)
          {
            delay_nms(10);  
            if(RC0==0)
              {
               ID++;
              }
          }      
      switch(ID)
      {
       case 1: PORTD=0x01;
       break;
       case 2:  PORTD=0X00;
                ID=0;
       break;
       default:
       break;
      }
   }
}
按道理是要先把PORTC_0这个脚方向置为输入 TRISC=0X01;但结果是按键控制不了,灯一闪一闪的,把它改成TRISC=0X00,就可以了,不知怎么回事,望熟手指点下,谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
penny2799
2020-02-09 13:29
delay_nms(10);按下ID加了好多次,switch分支在一段 时间内会执行=1 =2等就会闪,TRISC=0X00都扫不到键了当然就不闪了


总的来说是你扫键程序不对

一周热门 更多>