51单片机点灯
1.点亮LED灯
#include "reg52.h"sbit ledOne = P3^7;void main()
{//灯亮,给一个P3.7低电平ledOne = 0;
}
给LED1对应标号的P3^7一个低电平,就能点亮LED灯
2.LED灯闪烁
#include "reg52.h"sbit ledOne = P3^7;void Delay500ms() //@11.0592MHz
{unsigned char i, j, k;i = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}void main()
{//灯灭,给一个高电平//重复执行while(1){//灯亮,给一个P3.7低电平ledOne = 0;//数数,数的期间,维持低电平,灯亮,延迟Delay500ms();//灯灭,给一个高电平ledOne = 1;//数数,数的期间,维持高电平,灯灭,延迟Delay500ms();}}
使用延时函数
3.按键控制灯(状态位)
#include "reg52.h"
#include <intrins.h>#define ON_STATUS 1
#define OFF_STATUS 0sbit key1 = P2^1;
sbit key2 = P2^0;
sbit ledOne = P3^7;void Delay50ms() //@11.0592MHz
{unsigned char i, j, k;_nop_();_nop_();i = 3;j = 26;k = 223;do{do{while (--k);} while (--j);} while (--i);
}void main()
{int ledMark = OFF_STATUS;ledOne = 1;//查询法检测,是否被按下while(1){if(key1 == 0)//KEY1位置和GND接通,表现为低电平,值为0{//感觉被按下,不知道是抖动还是人为,延迟50ms再判断一次//软件消除抖动Delay50ms();if(key1 == 0){//记住,key1被按下,记住,在其他地方点灯ledMark = ON_STATUS;}}if(key2 == 0){//KEY2位置和GND接通,表现为低电平,值为0ledMark = OFF_STATUS;}if(ledMark == OFF_STATUS){ledOne = 1;}else{ledOne = 0;}}
}
点灯时标志好,后面再判断