黃曉峰
摘 要 文章針對“單片機C語言程序設計”教學中存在的編程困擾,提出在教學實踐中重視引導學生進行模塊化、規(guī)范性程序設計,強調規(guī)范化編程對學生理解程序的結構與功能的重要作用,并貫穿于課程教學的始終,使學生的單片機應用能力得到了極大的提高。
關鍵詞 單片機 C語言 規(guī)范性
中圖分類號:G424 文獻標識碼:A DOI:10.16400/j.cnki.kjdkz.2015.08.062
On the C Language Programming Normative in MCU Course
HUANG Xiaofeng
(Advanced Vocational Technical College, Shanghai University of Engineering Science, Shanghai 200437)
Abstract: For "SCM C language programming" teaching in programming problems, he attached importance to guide students in teaching practice modular, standardized program design emphasizes standardized programming for students to understand the structure and function of the program's important role and throughout the Teaching has always been, so that students micro controller applications has been greatly improved.
Keywords: SCM; C language; normative
0 引言
單片機技術課程一直以來作為高職計算機應用、電氣自動化、應用電子技術等專業(yè)的主干課程。通過對單片機技術職業(yè)崗位需求分析可知,高職畢業(yè)生從事與單片機相關的職業(yè)技術崗位,主要有硬件測試工程師、軟件測試工程師、硬件設計助理工程師、軟件設計助理工程師等工作崗位。目前高職單片機課程多以MCS51系列為主,學生踏入工作崗位后,會涉及到其他各種類別的單片機,如AVR、MSP430、PIC等。由于軟件編程靈活性強,對邏輯思維能力要求高,在單片機教學中學生普遍反映編程時無從下手,程序調試錯誤百出,面對調試中出現(xiàn)的問題不知如何修改驗證,上機編程的教學實踐過程更多則淪為代碼錄入。本文針對“單片機C語言程序設計”教學中存在的編程困擾,提出在教學實踐中重視引導學生進行模塊化、規(guī)范性程序設計,培養(yǎng)學生良好的編程習慣,提高程序的易讀性、可移植性,為將來步入職業(yè)技術崗位打下堅實基礎。
1 單片機C語言編程的規(guī)范性
以Kei C51軟件編程為例并結合多年的教學經(jīng)驗,將單片機C語言編程的規(guī)范性主要歸納為:(1)文檔的規(guī)范性;(2)變量、函數(shù)的規(guī)范性;(3)程序書寫的規(guī)范性;(4)模塊化編程等四個方面。
1.1 文檔的規(guī)范性
任何一個單片機C程序都應該在工程下進行編譯和管理,一個工程可以包含多個C文件,不同的C文件分別實現(xiàn)一個相對獨立的功能。在單片機課程教學中部分學生一開始就忽略了工程的概念,或者通過一個C文件試圖實現(xiàn)所有功能,這在功能較為單一的系統(tǒng)中是可行的,但稍微復雜一點的系統(tǒng)要想通過一個程序來完成其所有功能,程序的可讀性和可移植性就會變差。因此,在編程之初就要強調工程對C程序源文件的管理作用,以及工程所包含的各個C文件之間的相互關系,并通過對C文件規(guī)范化的命名體現(xiàn)其功能,如鍵盤模塊命名為key.c,顯示模塊命名為display.c,數(shù)據(jù)處理模塊命名為datapro.c。
1.2 變量、函數(shù)的規(guī)范性
變量、函數(shù)的規(guī)范主要體現(xiàn)在命名的規(guī)范,一般要符合匈牙利命名規(guī)范。如表1所示,主要注意字母的大小寫是有區(qū)分的,取名要與變量或函數(shù)的含義或完成功能相一致,并且要在教學中一直貫徹使用,望文生義以增強易讀性。
此外,由于單片機頭文件對一些常用的符號變量和特殊功能寄存器進行了定義聲明,因此編程時對相關符號變量和特殊功能寄存器的操作一定要與頭文件中的定義聲明保持一致。如51單片機reg51.h頭文件對端口(P0~P3口)、特殊寄存器、特殊的位、中斷函數(shù)等做了定義聲明,用戶在對相關端口或SFR進行操作時只能嚴格的按照頭文件中的聲明使用,不能按照自己的想法隨便更換名字,否則會造成編譯出錯,如果要想按照自己的習慣書寫,要重新聲明定義。如P1.0口在<reg51.h>定義為P1^0,若想用P1_0表示則必須用“sbit P1_0=P1^0;”作聲明。常用的51系列單片機在KeilC51軟件中的一些定義格式如表2所示。
表2 <reg51.h>或<reg52.h>頭文件中常用的一些定義
3 模塊化編程
模塊化、規(guī)范化的程序設計,是提高程序的易讀性、可移植性和復用性最為重要的手段。模塊化程序設計的集中體現(xiàn)為六個字即“高內聚低耦合”。按照自頂向下的原則進行程序設計時,首先是引導學生進行系統(tǒng)功能分析,按照“低耦合”的原則進行軟件模塊的劃分,勾勒出由主程序及各模塊子程序搭建的大骨架、粗線條輪廓,繼而深入到各個軟件模塊內部,依據(jù)“高內聚”的原則確定模塊內程序結構。
以單片機無線多路溫度采集系統(tǒng)為例,簡單介紹軟件編程的具體思路。如圖1所示,無線多路溫度采集系統(tǒng)主要包括單片機、溫度數(shù)據(jù)采集、無線信號傳輸、鍵盤與顯示器等模塊,完成四路溫度數(shù)據(jù)采集,并在液晶屏上顯示實時溫度信息。
圖1 溫度采集系統(tǒng)硬件框圖
圖2 溫度采集系統(tǒng)軟件模塊組成
在課程教學中,依據(jù)無線多路溫度采集系統(tǒng)功能,軟件編程劃分為溫度采集、按鍵控制、顯示、無線通信等子模塊。其中溫度采集程序完成溫度數(shù)據(jù)采集與處理,鍵盤控制程序鍵掃描及處理,LCD顯示程序完成屏幕刷新,無線通信程序實現(xiàn)單片機與PC機間的數(shù)據(jù)交換。各模塊功能單一,且模塊之間無直接聯(lián)系,通過主程序對各模塊進行調用與協(xié)調完成系統(tǒng)功能,每個模塊作為一個函數(shù)、或單獨作為一個C文件,并通過主程序完成各模塊文件的調用與協(xié)調,其關系圖如圖2所示??梢钥吹剑K與模塊之間耦合度較低,有利于程序的維護與移植。
1.4 程序書寫的規(guī)范性
程序書寫的規(guī)范性能夠極大增加了程序的易讀性。主要體現(xiàn)在:采用空行或注釋符號分隔程序段落;if、for、while、do等語句自占一行,執(zhí)行語句不得緊跟其后;程序的分界符‘{和‘}應獨占一行并且位于同一列,同時與引用它們的語句左對齊;如果出現(xiàn)嵌套的{},則使用縮進對齊;一般重要的代碼行或段落采用“//” 注釋提示等。
2 結束語
單片機C語言編程由于邏輯性強,高職學生普遍存在編程困難,在課程教學中通過引入規(guī)范性編程,從文檔的規(guī)范性、變量及函數(shù)的規(guī)范性、程序書寫的規(guī)范性,以及模塊化編程等四個方面,強調規(guī)范性程序設計對于學生認識、理解程序的結構與功能至關重要,在此基礎上進行程序設計,使學生單片機應用能力得到了極大的提升,所帶學生在全國職業(yè)院?!皺C器人應用技術”取得了優(yōu)異成績,畢業(yè)后也得到用人單位的肯定與好評。