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