导航:首页 > 操作系统 > 单片机的独立按键程序

单片机的独立按键程序

发布时间:2022-12-06 03:54:15

A. 请问51单片机如何用一个独立按键控制程序的暂停和继续

1.你的程序并不能实现显0~9,1357,0246,亮灯和响铃是可以。
2.用P1.1按键是可以实现暂停和继续的,并不需要中断。不是什么事都需要中断,好像离开中断就什么也不能做了?
3.你想暂停,是随时暂停,还是什么时候暂停?

B. 求解读51单片机用四个按键独立控制四个led的c程序

#include<reg51.h>
//k2~k4分别控制le1~le4
voiddelay(unsignedintx)//延时函数
{
while(x--);//延时数减一
}
voidkey_event(unsignedchard)//根据扫描到的键值,亮相应的LED
{
switch(d)
{
case14:P1^=(1<<0);break;//k1键按下了
case13:P1^=(1<<1);break;//k2键按下了
case11:P1^=(1<<2);break;//k3键按下了
case7:P1^=(1<<3);break;//k4键按下了
//
default:P1^=(1<<7);break;//缺省值,都不亮
}
}

voidkey()//按键扫描
{
staticchari;
unsignedchara;
unsignedcharb;
a=P2;//0000aaaa,000076543210;
a>>=4;//a=a>>4;//移动4位,a取值
if(a!=15)//至少有个键按下
{
if(i==0)//0的时候,标示没有建按下
{
delay(1000);//延时1000次
b=P2;//把按键的口赋给变量b
b>>=4;//移动四位,b取值
if(a==b)//如果a和b相等
{
key_event(b);//这次按键有效
i=1;//1不允许其它键按下
}
}
}
else
{
i=0;//不是有效键按下,清0
}
}
voidmain()//主函数开始
{
while(1)//进入循环,检测按键按下情况
{
key();

}
}

C. 51单片机独立式按键程序

#include<reg52.h>
unsignedcharID;
sbitk1=P3^7;//定义按键端口
voiddelay()
{
TMOD=0x10;//定时器的工作方式
TH1=0xd8;
TL1=0xf0;
TR1=1;
while(!TF1);//这里错了,是定时器1
TF1=0;
}
voidmain()
{
while(1)
{
if(k1==0)
{
delay();//去抖动
if(k1==0)//检测按键确实按下,进行按键处理
{
ID++;
if(ID==0)
{
ID=0;
}
while(!k1);//这里错了,多余的加了==0
}
}
switch(ID)
{
case0:P1=0x3f;break;
case1:P1=0x06;break;
case2:P1=0x5b;break;
case3:P1=0x4f;break;
case4:P1=0x66;break;
case5:P1=0x6d;break;
case6:P1=0x7d;break;
case7:P1=0x07;break;
case8:P1=0x7f;break;
case9:P1=0x6f;break;
default:break;
}
}
}

D. 51单片机汇编语言编程独立按键

四个按键,定义如下:

KEY1 BIT P3.0
KEY2 BIT P3.1
KEY3 BIT P3.2
KEY4 BIT P3.3

按键处理程序:
;-----------------------------------
READ_KEY:

JB KEY1, K2
CALL DELAY
JB KEY1, K2
JNB KEY1, $

PUSH ACC
INC 75H
MOV A, 75H
CJNE A, #10, ZINT01
MOV 75H, #0
ZINT01:
POP ACC

JMP K_EXIT
;---------------
K2: JB KEY2, K3
CALL DELAY
JB KEY2, K3
JNB KEY2, $

PUSH ACC
INC 76H
MOV A, 76H
CJNE A, #10, ZINT01
MOV 76H, #0
ZINT01:
POP ACC

JMP K_EXIT
;---------------
K3: JB KEY3, K4
CALL DELAY
JB KEY3, K4
JNB KEY3, $

PUSH ACC
DEC 75H
MOV A, 75H
CJNE A, #255, ZINT03
MOV 75H, #9
ZINT03:
POP ACC

JMP K_EXIT
;---------------
K4: JB KEY4, K_EXIT
CALL DELAY
JB KEY4, K_EXIT
JNB KEY4, $

PUSH ACC
DEC 76H
MOV A, 76H
CJNE A, #255, ZINT04
MOV 76H, #9
ZINT04:
POP ACC

K_EXIT:
RET
;---------------
DELAY:
DJNZ R7, $
DJNZ R7, $
RET
;-----------------------------------

E. 51单片机两程序独立按键切换连接程序怎么写

两段程序还是要合并成一个主程序的,只是分开成两段而已。
sbit ins1=独立按键所在I/O脚;
bit keyab=0; //区分执行A,B程序的标志位,=0,执行A段,=1执行B段
main()
{
...........
while(1) //while前的程序照常写
{
if(ins1==0)
{
keyab=!keyab;
while(ins1==0);
}
if(keyab==1)
{
A段程序写在这里
}
else
{
B段程序写在这里
}
}
}
这样写后,原来A、B程度中的while(1)就不能再写了。而是将while(1)以下程序写到这里。

F. 请问单片机怎么用独立按键按一下实现一个功能,按另一个按键实现另一个功能 这个代码要怎么写啊

如果这两个功能都是一个死循环,可以考虑用中断,这样就不必在两个独立的功能中插入按键检测了
while(1)
{
while(flag==1){死循环1}
while(flag==2){死循环2}
}
如果这两个功能不是死循环,就 简单了
while(1)
{
if(key1==0) {延时消抖 功能1}
if(key2==0) {延时消抖 功能2}
}

G. 单片机一个独立按键

#include<reg51.h> // 4*4 按键+数码管仿真,可以参考。

#define uchar unsigned char

uchar temp;

int key1,key,disbuf;// 此表为 LED 的字模 0 1 2 3 4 5 6 7 8 9 a b c d e f

unsigned char code LED7Code[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};

unsigned char ledx[8];

bit s0,s1;

void delay(uchar z)

{

uchar i,j;

for(i=0;i<120;i++)

for(j=0;j<z;j++);

}

void scan() //要是按键了,扫描键盘编码值

{

P1=0xF0;

delay(1);

temp=P1;

switch(temp)

{

case 0xe0: key1=0;

break;

case 0xd0: key1=1;

break;

case 0xb0: key1=2;

break;

case 0x70: key1=3;

break;

}

P1=0x0f;

delay(1);

temp=P1;

switch(temp)

{

case 0x0E: key=key1+0;

break;

case 0x0D: key=key1+4;

break;

case 0x0B: key=key1+8;

break;

case 0x07: key=key1+12;

break;

default : key=-1;

}

if((key1+1)&&(key+1)) disbuf=key;

}

void ejjc() //判断是否按键

{

P1=0xF0;

if(P1!=0xF0) { scan();s0=1;}

else { s0=0; s1=1;}

}

void main()

{

uchar i;

while(1)

{

ejjc();

if(s0==1 && s1==1)

{

s0=0;s1=0;

for(i=0;i<8;i++)

{ ledx[i]=ledx[i+1]; ledx[8]=disbuf; }

}

P0=0xff;

P2=LED7Code[ledx[0]];

P0=0xfe;

delay(5);

P0=0xff;

P2=LED7Code[ledx[1]];

P0=0xfd;

delay(5);

P0=0xff;

P2=LED7Code[ledx[2]];

P0=0xfb;

delay(5);

P0=0xff;

P2=LED7Code[ledx[3]];

P0=0xf7;

delay(5);

P0=0xff;

P2=LED7Code[ledx[4]];

P0=0xef;

delay(5);

P0=0xff;

P2=LED7Code[ledx[5]];

P0=0xdf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[6]];

P0=0xbf;

delay(5);

P0=0xff;

P2=LED7Code[ledx[7]];

P0=0x7f;

delay(5);

}

}

H. 简述单片机独立按键的任务分为几步,分别是什么

5步。分别是判断按键是否按下,延时消抖,再次判断按键是否按下,等待按键抬起,执行预定语句。
一种是普通io口,一种是中弹的形式,普通io口是按下按键触发按键子程序案件,指程序经过一段时间的,比如20~50毫秒的延时再次毒案件,如果按键值还是会按下,那么就延时等待按键抬起按键,抬起后执行按键程序,然后返回中弹也是一样的,按下按键之后进入中段读按键状态,是否还是为按一下是按一下等待延时再读等待,然后等待案件采取后执行相应的代码,然后退出总代。

I. 单片机应用中,独立式按键操作的流程是什么

一种是普通io口,一种是中弹的形式,普通io口是按下按键触发按键子程序案件,指程序经过一段时间的,比如20~50毫秒的延时再次毒案件,如果按键值还是会按下,那么就延时等待按键抬起按键,抬起后执行按键程序,然后返回中弹也是一样的,按下按键之后进入中段读按键状态,是否还是为按一下是按一下等待延时再读等待,然后等待案件采取后执行相应的代码,然后退出总代。

J. c51单片机独立按键控制,流水灯程序

while(1)
{ P1=aa;

delayms(1000);
aa=_crol_(aa,1);
}
这前面的while(1)根本不会退出,也就是不会执行下面的if(key1 == 0)的语句了,所以按键按下去当然没有反应了
if(key1==0)
{
P1=0x7e;

阅读全文

与单片机的独立按键程序相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:144
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:736
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163