本次單片機課程設計以失敗告終。本次單片機的課程設計的日程安排如下。
星期二:系統需求分析,系統的總體設計,硬件設計。
星期三:完成系統的軟件設計。包括,各部分的流程圖。類存分配,程序算法。編碼
星期四:編碼。
星期五:調試。
失敗的總結:程序的總體設計上有點小問題。說實話,自己還是不太熟悉從單片機的角度去看程序。本次總結的原因也是為了培養從嵌入式系統的角度去設計程序。
1,在設計階段,并沒有做詳細的驗證,導致程序的總體設計,有效的缺陷。
2,采用中斷控制程序的模式轉換,應為中斷存在RETI指令返回。這樣需要修改堆棧,達到程序的轉換,這要求對中斷程序的壓棧,有詳細的了解。對中斷程序中的寄存器需要設計與規劃,而這一部分,在設計階段并沒有考慮到,這導致程序中存在很多隱藏的的bug。
3,沒有避免中斷程序簡單設計的原則,而從性能方面考慮實現。過分追求所謂的完美,所謂的完美并不是完美,而是心中的感覺。系統設計階段的首次感覺很重要,他往往決定程序的發展走向。也是這中原因,導致總體系統設計簡單,而實現難度大。需要用到不常用的技術。尊重常用的設計方式,很重要。
4,也是最重要的,在流程圖到程序的具體映射上沒有規劃好。個人覺得從數據流程到代碼的映射上應該還要經過一層抽象。從單片機的角度去考慮。
5,在軟件設計完成后應該分析設計,模擬設計。
結論:
1,尊重成熟的設計方式。
2,系統設計后應該做較為詳細的模擬。
3,在代碼的映射中要經過一層抽象,從單片機的角度思考問題,規劃工作區,寄存器。分析每一層中的特性,做詳細設計。比如說,對別人的子程序的調用處理的特性。處理入口,處理出口恢復。如果大規模的調用,可以設置專門的工作區來保護。
4,面向對象的程序設計,面向過程的設計方式,和面向硬件的設計有所不同。面向對象重要的是對系統總體功能的抽象,面向過程重要的是把握系統的具體過程。面向硬件要在面向過程后,對具體硬件需要一步對資源的抽象,然后再到具體實現。
5,抽象離不開時序。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
|