knrt.net
当前位置:首页 >> C51单片机编程中,怎么检测按键? >>

C51单片机编程中,怎么检测按键?

while (K1!=0)//K1没有被按下执行循环{d1=0;d2=1;delay();d1=1;d2=0;delay();}

用伟福编译时,需要设置仿真器,选择8031,否则编译就出错。 你这程序没有问题,用keil 是可以编译成功的。但不等于程序的功能就是对的。这需要运行程序,看运行的效果对不对才知道。

单片机有中断引脚,连到它们上面就行了,执行 返回值 函数名([参数]) interrupt n [using m] 如:void INT0_Interrupt (void) interrupt 0 using 0 { xxxxxxxx } n对应中断源的编号,为0~15的常整数,不允许使用表达式 n对应中断源的编号查手册...

if..... else 之间不能有其他语句,所以你将延时程序放入大括号里面就应该可以了。 if(K1==0) { i=1; delay(5); } else if......

1.设置一个状态变量,如flag,定义flag=0为开状态,flag=1为关状态。 2.因为是按键(不是开关),所以实际上单片机读取的应该是脉冲形式的输入。设按键接单片机P01引脚,故可采用以下程序实现按键扫描 if(P01==0)//按下按键,进入下降沿 { delay...

用一个变量来计数,每按一次计一个数,就可以根据计数值来判断按下的是第几次了。 但要保证每次只能按键一次有效,即要有消除抖动,并有等待按键释放。

发这些提示信息没有用的,看不到你的程序,是不知道哪里错的,程序不能发上来吗?

LED BIT P1.0 KEY BIT P1.4 SPEAKER BIT P1.7 LOWCNT EQU 30H ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV LOWCNT,#0 LOOP: JB KEY,LOOP1 SETB LED JNB KEY,$ INC LOWCNT MOV A,LOWCNT CJNE A,#8,LOOP1 MOV LOWCNT,#0 LCALL FMQ SJMP LOOP LOOP1: ...

一次定时20ms,初值是40000 sbit shebei=P2𠆢1; sbit key=P3𠆢7; bit flag=1; 主程序中: TMOD=0x01;TH0=(65536一40000)/256;TL0=(65536-40000)%256; ET0=1; while(1) { if (key==0) { delayms(10);if(key==0) flag=!flag;...

你这段程序,如果按下按键,则程序会进入 while(1) 里面一直运行,不会跳出,所以除非断电,无论按什么按键都不会影响灯闪程序。 如果要求K1=0时灯闪烁,K1=1时灯灭掉,可以在DELAY_MS程序之后改为以下内容: #define light 1 #define black 2 v...

网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com