本次单片机课程设计以失败告终。本次单片机的课程设计的日程安排如下。
星期二:系统需求分析,系统的总体设计,硬件设计。
星期三:完成系统的软件设计。包括,各部分的流程图。类存分配,程序算法。编码
星期四:编码。
星期五:调试。
失败的总结:程序的总体设计上有点小问题。说实话,自己还是不太熟悉从单片机的角度去看程序。本次总结的原因也是为了培养从嵌入式系统的角度去设计程序。
1,在设计阶段,并没有做详细的验证,导致程序的总体设计,有效的缺陷。
2,采用中断控制程序的模式转换,应为中断存在RETI指令返回。这样需要修改堆栈,达到程序的转换,这要求对中断程序的压栈,有详细的了解。对中断程序中的寄存器需要设计与规划,而这一部分,在设计阶段并没有考虑到,这导致程序中存在很多隐藏的的bug。
3,没有避免中断程序简单设计的原则,而从性能方面考虑实现。过分追求所谓的完美,所谓的完美并不是完美,而是心中的感觉。系统设计阶段的首次感觉很重要,他往往决定程序的发展走向。也是这中原因,导致总体系统设计简单,而实现难度大。需要用到不常用的技术。尊重常用的设计方式,很重要。
4,也是最重要的,在流程图到程序的具体映射上没有规划好。个人觉得从数据流程到代码的映射上应该还要经过一层抽象。从单片机的角度去考虑。
5,在软件设计完成后应该分析设计,模拟设计。
结论:
1,尊重成熟的设计方式。
2,系统设计后应该做较为详细的模拟。
3,在代码的映射中要经过一层抽象,从单片机的角度思考问题,规划工作区,寄存器。分析每一层中的特性,做详细设计。比如说,对别人的子程序的调用处理的特性。处理入口,处理出口恢复。如果大规模的调用,可以设置专门的工作区来保护。
4,面向对象的程序设计,面向过程的设计方式,和面向硬件的设计有所不同。面向对象重要的是对系统总体功能的抽象,面向过程重要的是把握系统的具体过程。面向硬件要在面向过程后,对具体硬件需要一步对资源的抽象,然后再到具体实现。
5,抽象离不开时序。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
|