完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我不是C语言,我是为18F的微型计算机组装的。我一直在考虑用微控制器来控制电梯。在阅读了几篇文章和参考文献之后,我发现状态机经常(如果不总是)被提及,我所理解的是考虑问题的方法。然后,我浏览了两个实现基础的软件(我后悔没有跟踪它们),并且取决于它们是否在(可能)C或Assembly中编写,它们所做的是在Assembly中实现长块的“开关盒”链或类似的东西:找到实现它的相当粗略的方法。我看不出其他的办法。我的问题是:这是用微控制器实现状态机的实际方式吗?
|
|
相关推荐
7个回答
|
|
我会在C中检查代码,然后转换成ASM:
|
|
|
|
啊哈,所以作弊卡罗达尔…我无法访问任何代码,编译后的结果我可以可靠地检查。我怀疑自己是否能做到这一点。因此,我更愿意直接了解它在大会中的表现。
|
|
|
|
我明白了。我的意思是,你研究它是如何实现的,并试图在汇编程序中编写同样的代码,我并不打算使用分解代码!TCP/IP协议栈有很多状态机的例子。
|
|
|
|
在汇编中,您可以使用由状态变量索引的跳转表来完成此操作,类似于通过修改程序计数器来访问RETLW表的方式。因为GOTO是两个单词指令,所以需要将状态变量左移2位(一个原因是PIC18 PC在2位内递增,另一个是表中两个单词指令)。显然,您需要对状态变量进行边界检查,或者任何错误将执行发送到蓝色的远处。C等价物是由状态变量索引的常量函数指针数组。然而,对于许多状态来说,具有几个互锁或嵌套的状态机要比必须处理单个状态变量中的许多“不在乎”位更有效。
|
|
|
|
HI,搜索:“基于软件的有限状态机(FSM)与通用处理器”。这是Axrm汇编程序,但被评论并在底部附近显示各种各样的例子。祝你好运,迈克。
|
|
|
|
谢谢大家的回复。将下载一个RM的东西。
|
|
|
|
伊恩,那是!不是一个大的FSM而是几个…格拉西亚斯
|
|
|
|
只有小组成员才能发言,加入小组>>
5238 浏览 9 评论
2028 浏览 8 评论
1950 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3204 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2253 浏览 5 评论
778浏览 1评论
666浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
595浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
677浏览 0评论
576浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:28 , Processed in 1.763050 second(s), Total 57, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号