导航:首页 > 操作系统 > 单片机独立按键开关代码

单片机独立按键开关代码

发布时间:2023-09-17 05:11:43

A. 我想要一个按钮用单片机实现开关功能!请问怎么编程

51单片机吗?这个不是很难!
硬件连接:P1.0接按键,P1.1接LED
org 0
ajmp start
org 30h
start:mov p1,#0ffh
main: mov a,p1
jnb p1.0,next
ajmp main
next: lcall dely
mov a,p1
jnb p1.0,huan
ajmp main
huan: cpl p1.1
ajmp main
dely: mov r7,#100
dl1: mov r6,#100
dl2: mov r5,#5
djnz r5,$
djnz r6,dl2
djnz r7,dl1
ret
end

B. 单片机 汇编语言编写 独立键盘 控制小灯

单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4
程序:
ORG 00H
START: MOV A,P1
ANL A,#0F0H
RR A
RR A
RR A
RR A
ORl A,#0F0H
MOV P1,A
SJMP START
可以检测单个按键,也可以同时检测多个按键
过程:开始——读P1口数据到A——A中的数据右移4次——A中的内容和F0H相或——A中的数据送到P1口——回到开始

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

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

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单片机独立按键的代码。功能:类似设置电子表时间。见补充

void delay(unsigned char);
void main()
{
....;
}
/************IndependentButtons*************/
char Button(void)
{
unsigned char state1,a = 1,mt = 1;
P1 = 0xff;
state1 = P1;
state1 = ~ state1;
if(state1 != 0x00)
{
delay10ms(5);
do{
if(mt > 1)
dealy10ms(100);
delay10ms(50);
a ++;
mt ++;
}while(P1 != 0xff);
}
return a;
}
为相应的独立按键c代码(为8个独立按键,如果要4个独立按键可以在上面程序该的),其他的只要用main调用,在main里制表,就行了。

F. 我为51单片机设计了一个用独立按键控制LED的程序,求大神看看程序有没有什么能够优化的地方。

#include<reg51.h>
#include<intrins.h>
sbitk1=P3^1;
sbitk2=P3^0;
sbitk3=P3^2;
sbitk4=P3^3;
bitflag=0;
typedefunsignedcharu8;
typedefunsignedintu16;
#defineledP2
voiddelay(u16i)
{
while(i--);
}//延时函数
u8keyscan(void)
{
u8keyval=0;
if(k1==0)
{
while(k1==0);
keyval=1;
}
if(k2==0)
{
while(k2==0);
keyval=2;
}
if(k3==0)
{
while(k3==0);
keyval=3;
flag=~flag;
}
if(k4==0)
{
while(k4==0);
keyval=4;
}
return(keyval);

}
main()
{
u8key1,key2,num=0;
u8led[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
while(1)
{
key1=keyscan();
if(key1!=0)key2=key1;
switch(key2)
{
case1:P0=led[num];delay(10000);P0=0xff;delay(10000);num++;num%=8;break;
case2:P0=led[num];delay(10000);P0=0xff;delay(10000);num--;if(num==0)num=7;break;
case3:if(flag)P0=led[num];elseP0=0xff;break;
case4:P0=led[num];while((key1=keyscan())!=4);P0=0xff;key1=key2=0;num=0;break;
default:break;
}
}
}

G. 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;
}
}
}

阅读全文

与单片机独立按键开关代码相关的资料

热点内容
linux怎么配置网络 浏览:301
程序员想要的小礼物 浏览:184
java获取网页url 浏览:624
怎么做解压神器泡泡版 浏览:966
自己动手做一个c编译器 浏览:929
手机如何链接谷歌服务器地址 浏览:137
废掉一个程序员的武功 浏览:249
java树形算法 浏览:641
通达信加锁指标源码怎么看 浏览:754
将同名文件移动到部分同名文件夹 浏览:403
摆荡指标加压力线源码 浏览:915
新一代单片机特征 浏览:770
王者的服务器什么时候才修好 浏览:281
cad历史命令 浏览:41
php博客源代码 浏览:24
cng压缩机功率 浏览:459
pdf批量打印怎么设置 浏览:78
javamap底层 浏览:267
卖华为云服务器 浏览:111
中颖单片机烧录器 浏览:848