学了一星期了,前两天又看了遍【计算机科学速成课】,终于知道代码怎么控制的单片机上的灯,蜂鸣器,之类的了.也算是可以按自己的理解写一些功能了.
一.1个独立按钮控制一个灯例子
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
sbit KEY1 = P3^1; // 独立按键
#define LED P2 // 指示灯
void main()
{
while (1)
{
if(KEY1 ==0)
{
LED = 0XFE;
}
else
{
LED = 0XFF;
}
}
}
代码,中间犯了个错误导致一直仿真失败.
可以这样写
还可以这样写
经过前面的例子,后面就可以随意发挥了.
二.在加一个独立按键,控制第二个灯
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
sbit KEY1 = P3^1; // 独立按键
#define LED P2 // 指示灯
void main()
{
while (1)
{
if((P3 & 0x01) == 0)
{
LED = 0XFE;
}
else
{
if((P3 & 0x02) == 0)
{
LED = 0XFD;
}
else
{
LED = 0XFF;
}
}
}
}
简单点还可以这样写
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
sbit KEY1 = P3^0; // 独立按键
sbit KEY2 = P3^1; // 独立按键
sbit LED1 = P2^0; // 指示灯1
sbit LED2 = P2^1; // 指示灯2
void main()
{
while (1)
{
LED1 = KEY1;
LED2 = KEY2;
}
}
三. 第一个开关 开灯, 第二个开关关灯
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
sbit KEY1 = P3^0; // 独立按键
sbit KEY2 = P3^1; // 独立按键
#define LED P2 // 指示灯
void main()
{
while (1)
{
if(KEY1 == 0)
{
LED = 0XFE;
}
if(KEY2 == 0)
{
LED = 0XFF;
}
}
}
四.点一下开灯,在点一下关灯
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
//#include <SiLABS\shared\si8051Basestdbool.h>
sbit KEY1 = P3^0; // 独立按键
// sbit KEY2 = P3^1; // 独立按键
sbit LED1 = P2^0; // 指示灯1
// sbit LED2 = P2^1; // 指示灯2
void main()
{
bit firstIn = 1;
while (1)
{
if (KEY1 == 0 && firstIn == 1)
{
firstIn = 0;
LED1 =~LED1;
}
if (KEY1 == 1)
{
firstIn = 1;
}
//LED1 = KEY1;
//LED2 = KEY2;
}
}
习惯用bool的话, 还可以这样写.
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
#include <SiLABS\shared\si8051Base\stdbool.h>
sbit KEY1 = P3^0; // 独立按键
// sbit KEY2 = P3^1; // 独立按键
sbit LED1 = P2^0; // 指示灯1
// sbit LED2 = P2^1; // 指示灯2
void main()
{
bool firstIn = 1;
while (1)
{
if (KEY1 == 0 && firstIn)
{
firstIn = false;
LED1 =~LED1;
}
if (KEY1 == 1)
{
firstIn = true;
}
//LED1 = KEY1;
//LED2 = KEY2;
}
}