单片机按键控制LED的C编程问题

来源:百度知道 编辑:UC知道 时间:2024/07/05 07:20:07
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一个52标准内核的头文件

sbit P10 = P1^0; //要控制的LED灯

sbit K1= P3^2; //按键K1

void main(void) // 主程序
{
bit light; //位变量
uint n;
while(1) //程序循环
{
if(!K1) //如果读到K1为0
{
for(n=0;n<1000;n++); //等待按键稳定
light=~light; //每按键一次,标记变化一次
while(!K1); //等待按键松开
for(n=0;n<1000;n++); //等待按键稳定松开
}
P10=light; //直接把位变量赋值给LED灯
}
}
这是由一个按键控制LED的程序,我觉得light在硬件中没有实际意义,那么为什么没有给它赋初值??

我感觉这个程序也有问题吧?
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一个52标准内核的头文件

sbit light = P1^0; //要控制的LED灯

sbit K1= P3^2; //按键K1

void main(void) // 主程序
{
uint n;
while(1) //程序循环
{
if(!K1) //如果读到K1为0
{
for(n=0;n<1000;n++); //消抖
while(!K1); //等待按键松开
light=~light; //每按键一次,标记变化一次
for(n=0;n<1000;n++);
}
}
}
直接这样就可以实现吧?

lihgt是控制P10是亮是暗的位,既然你想让它按一次键改变一次状态,那它一开始是亮还是按就无所谓了,所以不用赋初值。不过编程最保险稳妥的思路还是尽量设初值

C里面不赋初值的应该都默认是零吧··

这个程序编译恐怕就通不过吧。