|
发表于
2018-11-22 13:47:31
|
显示全部楼层
按你的电路图随手写了一个,公司电脑上没装keil 51环境,逻辑应该没问题
#include “reg52.h”
#define uint8_t unsigned char
#define uint16_t unsigned short
#define Key P3.3
#define CD4066_A P3.2
#define CD4066_B P3.1
#define CD4066_C P3.0
void dlyms(uint16_t val);
void main(void)
{
uint8_t ucStatu=0;
bit bFlagKeyPress=0;
if(Key==0){
dlyms(20);
if(Key==0&&bFlagKeyPress==0){
ucStatu++; //改变状态
ucStatu=ucStatu%4;
bFlagKeyPress=1;
}
}
else{
bFlagKeyPress=0;
}
switch(ucStatu){
case 0:
CD4066_A=1;
CD4066_B=1;
CD4066_C=1;
break;
case 1:
CD4066_A=0;
CD4066_B=1;
CD4066_C=1;
break;
case 2:
CD4066_A=1;
CD4066_B=0;
CD4066_C=1;
break;
case 3:
CD4066_A=1;
CD4066_B=1;
CD4066_C=0;
break;
default:
CD4066_A=1;
CD4066_B=1;
CD4066_C=1;
break;
}
}
void dlyms(uint16_t val)
{
uint16_t i=1000;
for(;val!=0;val--)
{
while(i--);
}
} |
|