初学单片机,编程不太熟悉,51单片机根据开关状态输出高低电平,有逻辑判断,请教编程思路,用C语言!

初学单片机,编程不太熟悉,51单片机根据开关状态输出高低电平,有逻辑判断,请教编程思路,用C语言!,第1张

编程思路:每次都是将P1口的值读取进来,再屏蔽低4位,仅对高4位进行判断

{

#define INPUTMASK 0xF0

char ReadPort = 0;

ReadPort = P1 & INPUTMASK;

switch(ReadPort)

{

case 0xf0: break; / 没有任何按键按下,跳出 /

case 0x10: Subfunction1();break; / P14按下,跳转到子函数1 /

case 0x20: Subfunction2();break; / P15按下,跳转到子函数2 /

case 0x40: Subfunction3();break; / P16按下,跳转到子函数3 /

case 0x80: Subfunction4();braak; / P17按下,跳转到子函数4 /

default:

Subfunction5();braak; / 任意2个或以上按键按下,跳转到子函数5 /

}

}

在switch case函数中采用模块块编程,这里的子函数,即在相应的按键状态下其它端口的状态实现,不再赘述。

这要有一个能配合实现这个功能的 电源控制ic(假设为U1)才行。

按键短按时,这个U1的CE为CE=1,则可给单片机及后面的电路供电。单片机运行后并输出一个

io-1信号控制U1,实现短按后能锁定U1正常继续供电。

按键长按时,让单片机的一个io-2输出低电平 让U1的CE和单片机控制U1的io-1拉低,这样U1就断开对后面电路的供电。

一直循环下去。

所以硬件还需要修改才能实现,

这是我想到的方法,可能还有其他更好的方法吧。

你可以先去找找这方面的ic 然后根据这个ic的特性来做

如果是手动按键,肯定有抖动,所以测试结果肯定与你的理想状态不符。记得上次这个提问,我回答过,程序就如楼上所说的一样。

键盘刚被按下,因为抖动,所以反应到P21时,输出的波形也会随这抖动而比较不稳定。

关键还是看你需要达到的具体效果,P21是随稳定的键按下&抬起而变化,还是必须随P31的状态而变化。

以上就是关于初学单片机,编程不太熟悉,51单片机根据开关状态输出高低电平,有逻辑判断,请教编程思路,用C语言!全部的内容,包括:初学单片机,编程不太熟悉,51单片机根据开关状态输出高低电平,有逻辑判断,请教编程思路,用C语言!、单片机单按建开关机,输入输出状态设置问题、单片机按键程序(按键开关状态0和1.且自锁)P3.1 输入,P2.1输出。输入有变化P2.1就取反。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存