我刚学单片机,想写个按键控制8个灯依次亮的程序,但总是顺序不对,不知道问题出在哪,肯请各位高手指点一下.不胜感激!!
#include <REG52.h> //52头文件
#define DY_PORT P0 //设置LED连接的I/O组 sbit DY_KEY = P3 ^ 7; //设置按键接在P3.7 unsigned char table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
/********************************************************************************************* bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED #define [代替名] [原名] //用代替名代替原名(可以方便修改常改或调试的值)例:#define LED P1 sbit [自定义名] = [系统位名] ; //自定义系统位名。例:sbit Add_Key = P3 ^ 1; unsigned char [自定义名] ; //定义一个0~255的整数变量.例:unsigned char a; unsigned int [自定义名] ; //定义一个0~65535的整数变量 /*********************************************************************************************/ void delay (unsigned int a){ // 1ms延时程序 unsigned int i; while( --a != 0){ for(i = 0; i < 600; i++); }
} /*********************************************************************************************/ void main(void){ unsigned char b; DY_KEY = 1; DY_PORT = 0xff; while(1){ for(b=0;b<8;b++) { if(DY_KEY == 0){ //如果按键按下则继续 delay(20); //延时20mS if(DY_KEY == 0){ //如果按键按下则继续 DY_PORT = table; //变化灯的状态11111110 while(DY_KEY == 0); //等待按键松开 } } } } }
|