标题:
PIC16单片机按键控制源程序错误
[打印本页]
作者:
RINIDABA
时间:
2020-6-4 15:36
标题:
PIC16单片机按键控制源程序错误
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 a,b;
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;
}
}
}
}
1.png
(31.27 KB, 下载次数: 34)
下载附件
2020-6-4 15:36 上传
作者:
RINIDABA
时间:
2020-6-4 17:44
有没有大佬教我一下,谢谢了,现在我不知道怎么改我的程序了
作者:
RINIDABA
时间:
2020-6-4 17:45
有没有大佬教我一下,小弟万分感谢
作者:
zjjhtony
时间:
2020-6-6 09:19
对于PIC16F877A,需要考虑端口复用的问题。
你的RA1~RA3要把ADC功能关闭了。
具体请看ADCON1这个寄存器。
下面代码增加了ADCON1=0X07,表示所有pa口都为数字口,不是ADC口。
#include <pic.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint x) //延时函数
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main() //主函数
{
TRISA=1;PORTA=0xff;
ADCON1=0X07;
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;
}
}
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1