eleluq 发表于 2010-9-12 07:03:39

请教(傻孩子):关于开关的问题

傻孩子,您好。
我现在有个问题,想请教你一下,希望您能给我个思路。
PB口连接3个开关,PB0口连接的是自锁开关,PB1,PB2连接的是点触开关。
需要完成的功能如下:
1、PB0如果是低电平的话,LED0亮;高电平,LED0灭。
2、PB1如果被按下,LED1亮;松开,LED0灭。
3、PB2第一次按下,LED2亮;第二次按下,LED2灭。

这个程序如果用状态机的话,我怎么实现?

谢谢您了!

Gorgon_Meducer 发表于 2010-9-12 14:30:37

1、PB0如果是低电平的话,LED0亮;高电平,LED0灭。
2、PB1如果被按下,LED1亮;松开,LED0灭。
------------------------------------------
这两个分别用一个独立的状态机来处理——只要有一个状态就好了。

3、写一个子状态机,用于检测PB3按下又松开的状况。然后写一个状态机调用这个子状态机,利用子状态机的返回作为LED亮灭的切换条件。

eleluq 发表于 2010-9-16 12:38:22

谢谢你,问题我已经解决了,但不是用状态机的。感觉在这个问题上如果PIN脚的数量多的话,用状态机好像很麻烦。

Gorgon_Meducer 发表于 2010-9-19 09:41:21

如果多,那么应该用另外一个结构

写一个按键码处理的状态机,然后写一个键盘扫描程序,给按键状态进行编码。这实际上就是键盘缓冲区以及按键扫描的基本原理,在我以前的一个帖子里面有很详细的代码范例。
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=827434&bbs_page_no=1&search_mode=3&search_text=Gorgon
页: [1]
查看完整版本: 请教(傻孩子):关于开关的问题