代码如下
#include "reg52.h"
sbit LED1=P2^0;
void main(){
LED1=0;
while(1){
}
}
在"reg52.h"头文件里已经定义好管脚P2了
sfr P2 = 0xA0;
sbit在这个头文件里也有
sbit P = PSW^0
参照以上语句对P进行重命名
sbit LED1=P2^0;
注意^符号
LED1=0;指在这个管脚输出低电平,可以不在while循环里面,因为后面没有改变电平的语句
如果要延时,代码如下
#include "reg52.h"
typedef unsigned int u16;
sbit LED1=P2^0;
void delay_1(u16 ten){//传入1大约延迟10微秒
while(ten--);
}
void main(){
while(1){
LED1=0;//点亮
delay_1(50000);
LED1=1;//在高电平时熄灭
delay_1(50000);
}
}
delay的时间不精确,这里delay_1(50000);理论上延迟0.5s,实际上为0.45s
做一个流水灯
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
#define LED_PORT P2//对这个端口进行宏定义
sbit LED1=P2^0;
void delay_1(u16 ten){//传入1大约延迟10微秒
while(ten--);
}
void main(){
u8 i;//用char节省内存
while(1){
for(i=0;i<8;i++){
LED_PORT=~(0x01<<i);//i=0,第一个亮
delay_1(50000);
}
}
}
因为所有LED都连在P2端口,因此对它进行宏定义,将一个二进制数字传入它就会根据数字中的1和0输出相应的电平