;--------------------------------------------
ORG 0000H
AJMP MAIN
ORG 0030H ;程序从30H开始
MAIN: JB P1.0,Check ;检测p1.0是否为高
AJMP MAIN ;循环检测
Check: MOV R1,#05H ;赋值给R1
JB P1.0,START ;在检测P1.0是否为高,是跳至
RET ;
START: CPL P1.4 ;LED灯亮
LCALL DELAY ;延时
SETB P1.4 ;LED灯消灭
LCALL DELAY ;延时
DJNZ R1,START ;不是5次继续
JNB P1.0, $ ;等待下次按键被按下
RET
;------ 延时子程序 ------
DELAY: MOV R7,#228
SDL1: MOV R6,#0FFH
SDL0: DJNZ R6,SDL0
DJNZ R7,SDL1
RET
END
程序的作用是P1。0连接一个按键,被按下在台起后(不考虑去抖),使连接在P1。4的LED灯闪亮5次后停止,等待下次触发P1。0
用C语言怎样写
#include <reg51.h>
#define on 1
#define off 0
sbit led=P1^4;
sbit key=P1^0;
void delay100ms();//延时100ms函数
void led_flash(unsigned char count);//led闪烁函数
void main()
{
while(1)
{
key=1;//置1输入
while(key==1);//等键按下
//delay();去抖延时
while(key==0);//等键抬起
led_flash(5);//led闪5次
}
}
void delay100ms()
{
unsigned char i,j;
for(i=200;i!=0;i--)
for(j=250;j!=0;j--);
}
void led_flash(unsigned char count)
{
while(count--)
{
led=on;
delay100ms();
led=off;
delay100ms();
}
} |