利用单片机中断写出按键程序实现每按下一个按键一个程序立马停止而去执行另一个程序,写出主程序

利用单片机中断写出按键程序实现每按下一个按键一个程序立马停止而去执行另一个程序,写出主程序,第1张

看没有给你出代码,我就花几分钟给你写一个程序

#include "REG52H"

sbit KEY1_Outak = P1^3;

sbit Temp_Out001 = P1^0;

sbit Temp_Out002 = P1^1;

sbit Temp_Out003 = P1^2;

unsigned char Value_tem;

/

带形参延时1ms子函数

/

void Delay_1ms(unsigned int Temp)

{

unsigned int x, y;

for(x = Temp; x > 0; x--)

for(y = 110; y > 0; y--);

}

/

按键选择不同程序执行

/

void Scank_keyCmd(void)

{

if( KEY1_Outak == 0) //判断按键是否按下

{

Delay_1ms(10); //延时去抖动

if( KEY1_Outak == 0) //按键确实按下

{

Value_tem++; //开始执行变量加加

if(Value_tem == 3) //判断按键变量按下次数等于3

{

Value_tem = 0; //变量清零

}

while(KEY1_Outak == 0); //判断按键松手不等于零退出

}

}

}

/

不同程序按键选择执行

/

void Display_VslutsbekCmd(void)

{

if(Value_tem == 0) //如果没有按键按下变量默认值是0,执行LED1

{

do //进入循环

{

Temp_Out001 = 0; //LED1 = 0;

Delay_1ms(500); //延时500ms

Temp_Out001 = 1; //LED1 = 1;

Delay_1ms(500); //延时500ms

} while(Value_tem == 0); //判断变量等于0一直循环执行否则退出

}

else if(Value_tem == 1) //如果按键按下变量加1, 等于 1 执行LED1

{

do //进入循环

{

Temp_Out002 = 0;

Delay_1ms(500);

Temp_Out002 = 1;

Delay_1ms(500);

} while(Value_tem == 1); //判断变量等于1一直循环执行否则退出

}

else if(Value_tem == 2) //如果按键按下变量加1, 等于2执行LED2

{

do

{

Temp_Out003 = 0;

} while(Value_tem == 2);

}

}

/

主程序

/

int main(void)

{

while(1)

{

Scank_keyCmd(); //循环扫描检测是否有按键按下

Display_VslutsbekCmd(); // 主程序循环扫描显示相应程序

}

}

嘿嘿 俺帮你详细分析一下吧1 这段代码 总共有2个程序 一个是主程序MAIN 一个是定时计数器0的中断服务程序IPTO2 定时计数器0 工作在定时方式1 即使一个16位的定时计数器 定时时间=50ms R1做为软件计数器(初始值为14H 即20) 每当定时器定时时间到( 50ms到) 就会进入 定时计数器0的中断服务程序IPTO,重新送定时时间常数3CB0H 同时软件计数器R1内容减1 减为0时,表示1秒时间到(即 50ms×20=1秒) 置1秒时间到标志 SETB 00H 即可寻址位 00H=13 在主程序中 最后一部分代码 NT: JNB 00H,NT ;判断1秒时间到否 可寻址位 00H=0 表示没到 转NT继续判断和等待 RL A ;如果1秒时间到了 即可寻址位 00H=1 则使LED的点亮位左移一位 MOV P1,A CLR 00H ;清除1秒时间到的标志 LJMP NT ; 跳转到NT处 继续判断和等待下一个1秒时间到4 程序的功能就是定时每到1秒后,让LED的点亮位左移一位。 呵呵 给你分析完了 明白了 就选满意回答喽 详细的解释 见右上角百度知道的消息

OKUMA呼叫子程序方法如下

一般呼叫:CALL O1235 (等同FANUC的M98 P1235)

模态呼叫: MODIN O1235 (等同FANUC的G66 P1235)

程序动作完成后需用G100或MODOUT取消模态循环

以上就是关于利用单片机中断写出按键程序实现每按下一个按键一个程序立马停止而去执行另一个程序,写出主程序全部的内容,包括:利用单片机中断写出按键程序实现每按下一个按键一个程序立马停止而去执行另一个程序,写出主程序、8个LED灯循环点亮程序,求助各位老师(给500m、求助日本大隈 OKUMA 系统 主程序调用多个子程序方法,调度程序用法~谢谢!!感激不尽!MAR-500H等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9803669.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存