满意答案
lohboon
2016.07.31
采纳率:52% 等级:7
已帮助:1159人
#include "reg52.h"#define uint unsigned int#define uchar unsigned charsbit K1 = P3^2; //独立按键void Delayms(uint x){ uint i,j; for(i=x;i>0;i--) for(j=100;j>0;j--);}void main(){ uchar x; uint i; uchar temp; uint s=1; //新增一个值来记录按键值 ,初始化为1 while(1) //大的死循环一直扫描按键变化 { if(K1==0) { Delayms(10); //按键去抖动 if(K1==0) s=0; //按键按下此时是键值s=0 } while(s==0) //当按键第一次按下时进入循环点亮灯的循环 { temp=0x01; for(i=0;i<8;i++) { P0=~temp; Delayms(100); temp<<=1; // if(K1==0) break; //增强反应速度,有按键按下立马跳出 } if(K1==0) //当再次按下使键值s=1,将不符合点亮的死 { //循环,进入判断按键的死循环 Delayms(10); if(K1==0) s=1; } } }}
00分享举报