求编程单片机89c51,要求:按key1(P3.4,p3.5)键三次后,P1口的LED灯全部点亮,再按1次key1

用汇编语言

/*****************
晶振4MHZ,按键key1为P3.4,P3.5接口
功能:按 key1键三次,P1灯亮,再按一次灭 ,如此重复
******************/
#include<reg51.h>
sbit key1 = P3^4;
/******************
void delay40us(uint time)
输入参数:time
输出参数:无
函数功能:延时程序40us
******************/
void delay40us(unsigned int time)
{
unsigned char ks;
while(time !=0)
{
for(ks=0;ks<10;ks++)
{ }
time--;
}
}
void main()
{
unsigned char num,flag;
flag=0;num=0;
P3=0x10;
while(1)
{
if((key1==0)&&(flag==0))
{
delay40us(250); //延时10ms去抖
if(key1==0) //再次判断key1键是否按下
{
while(!key1); //判断按键key1是否松开
delay40us(250); //延时10ms去抖
while(!key1); //再次判断按键key1是否已松开
num++;
}
}
if(num>2) //按键按下3次,P1口灯亮
{
num = 0;
flag = 1;
P1 = 0; //P1口灯亮,为P1口输出低电平灯亮

}
if((key1==0)&&(flag==1))
{
delay40us(250);
if(key1==0)
{
while(!key1);
delay40us(250);
while(!key1);
flag = 0;
P1 = 0xff; //P1口灯灭,P1口输出高电平灯灭
}
}
}
}追问

用51单片机汇编程序:按下key1键3次后p1口的LED灯全亮,再按一次,LED灯全灭。次此操作可反复执行。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-01
你这个题目??key(3.4 3.5)是怎么回事?两个都可以还是同时要按住两个?追问

按哪个都行

第2个回答  2012-03-31
能不能把题目说完了呢?追问

用51单片机汇编程序:按下key1键3次后p1口的LED灯全亮,再按一次,LED灯全灭。次此操作可反复执行。

求编程单片机89c51,要求:按key1(P3.4,p3.5)键三次后,P1口的LED灯全部点...
while(!key1); \/\/再次判断按键key1是否已松开 num++;} } if(num>2) \/\/按键按下3次,P1口灯亮 { num = 0;flag = 1;P1 = 0; \/\/P1口灯亮,为P1口输出低电平灯亮 } if((key1==0)&&(flag==1)){ delay40us(250);if(key1==0){ while(!key1);delay40us(250);while(!

利用单片机AT89C51与ADC0808设计一个数字电压表,能够测量0~5V的直流电...
P1口:把AT89C51中的P1口与ADC0808的输出端相连,做为数字信号的接收端。 P2口:我们把P2口做为位码输出口,以P2.0—2.3输出位控线与LED显示器相连. P3口:利用P3.0,P3.1,P3.2,P3.4,P3.5,P3.6分别与ADC0808的OE,EOC,START\/ALE,A,B,C端相连。 XTAL1 ,XTAL2:外接一振荡电路。 图2.1.2 振荡电路 RST:在...

汇编语言51单片机怎么实现用KEY 1控制数码管上显示的数字加1 KEY2控制...
INC R4 ;key1按下为加 RET CK11:JB P3.5,KEYDOWN ;key2没有按下则转到key1 LCALL DS1MS ;P3.5=0表示Key2按下 JB P3.4,KEYDOWN ;key2还不能松开 MOV R5,#10H DEC R4 ;key2按下为减 RET D1::MOV R4,R5 DISPLAY:MOV A,R4 MOVC A,@A+DPTR JZ D1\/\/累加...

AT89C51和AT89S51的区别?
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I\/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
P1.4--P1.7:单片机的P1口,和反光二极管L1--L4相连,通过单片机的P1.4--P1.7控制,用以显示秒表和时钟的时间变化。(3)功能简介LED显示模块与单片机的连接中,对LED显示模块的读写和字位、字段通道的选择是通过单片机的P2.6、P2.7口完成。其中,P2.6、P2.7口的片选信号需要和读写信号做一定的逻辑操作,以保证字位和...

典型51单片机的P0,P1,P2,P3口都有哪些功能?
2、P1口:最简单的口,输入也要先置1,无高阻态,只能是输出或者输入。能驱动4个TTL负载。 3、P2口:I\/O(输入\/输出)与P1口一样,当有片外存储器时,作地址线使用,寻址64K片外数据存储器。能驱动4个TTL负载。 4、P3口:I\/O(输入\/输出)与P1口一样,但无论输入输出都要...

...编写一段程序,单片机是51系列的,要求编写8个LED灯有三种以上的闪烁方...
给你最简单的,看得清楚易懂的,P1口接8位LED,有多种闪烁方式。P2(扫描端在P2口,P3为位选端,注意看代码)口接上两位数码管的话还可以显示00-99的数字:ZHUCX: MOV A,#11111110B MOV P1,A ACALL YANSHI MOV A,#11111100B MOV P1,A ACALL YANSHI MOV A,#11111000B MOV P1,A ACALL...

求篮球30秒倒计时器的设计和制作,数字电路课程设计,详细论文
1、按键输入 “30秒倒计时器”采用了三个按键来完成计数器的启动计数、复位、暂停\/继续计数等功能。 (1)K1键:启动按钮(P3.2)。 按下K1键,计数器倒计时开始,数码管显示数字从30开始每秒递减计数,当递减到到零时,报警电路发出声、光报警信号。当计数器处于暂停状态时按下K1键将回到计时状态。 (2)K2键:复位按...

求一个以单片机为核心,组成一个电子时钟系统的程序
L2: JB K4,L0 ;未按下K4键则继续扫描 JNB K4, $ ;有按下则等待放开来 ACALL BZ ;压电喇叭鸣响一声 ;K4设置完成 ACALL LED_BL ;LED闪动 SETB TR0 ;启动定时器 RET ;---―喇叭和指示灯等其它子程序 ---―― ;计时单元清零 INIT: MOV DEDA, #0 ;5ms计数值清除为0 MOV SEC, #0 ;秒钟变...

...并仿真实现4个按键产生4个外部中断以4个LED点亮响应对应的外部中断...
51单片机只有2个外中断是P3.2 和 P3.3 可以用计数器再实现2个外中断(计数器0, P3.4和计数器1, P3.5)4个按键分别接到P3.2--P3.5 4个LED随便接其它IO口

相似回答