高手談?wù)剢纹瑱C(jī)編程思路
我曾經(jīng)做過(guò)兩年的單片機(jī)產(chǎn)品,在對(duì)單片機(jī)編程的過(guò)程中逐漸形成了一個(gè)大體固定的整體框架,也可以說(shuō)是編程思路,F(xiàn)提出來(lái)供大家參考。
首先,對(duì)外圍芯片進(jìn)行分類,屬同一功能或同一芯片的程序采用模塊化的形式,用固定的幾個(gè)函數(shù)實(shí)現(xiàn),一般不同芯片之間的函數(shù)功能盡量不重疊,也不要使用一個(gè)函數(shù)覆蓋幾個(gè)芯片,以便于后期的調(diào)試,如果涉及到芯片之間通訊的,可以單獨(dú)列出,使用專門的函數(shù)進(jìn)行處理;
其次,將單片機(jī)中需要完成的工作按輕重緩急進(jìn)行分類,一般我會(huì)設(shè)置兩個(gè)定時(shí)中斷,其中一個(gè)定時(shí)時(shí)間大致在20mS左右,用來(lái)處理一些按鈕防抖處理、時(shí)間日期計(jì)算、對(duì)輸入處理后產(chǎn)生對(duì)應(yīng)標(biāo)志位、器件刷新等一些實(shí)時(shí)性要求不是很高,但必須有時(shí)間要求的事物處理,另外設(shè)立一個(gè)定時(shí)中斷大概在1mS以下,主要用來(lái)實(shí)現(xiàn)時(shí)鐘基準(zhǔn)和做一些實(shí)時(shí)性要求很高的操作,一般需要將實(shí)時(shí)性要求較高的定時(shí)中斷設(shè)置為高優(yōu)先級(jí),否則不能實(shí)現(xiàn)正常運(yùn)行,如果還有串行中斷需要處理,則需要嚴(yán)格控制實(shí)時(shí)中斷中的代碼長(zhǎng)度,以免耽誤串行中斷的處理,還有就是如果使用軟件實(shí)現(xiàn)串口及無(wú)線通訊軟解碼的場(chǎng)合,也要合理分配各部分的代碼長(zhǎng)度;
最后,將普通的事件檢測(cè)和處理以及響應(yīng)放在主程序體中實(shí)現(xiàn),該部分一般只需要幾個(gè)并行的函數(shù)就可以了,主程序體可以以簡(jiǎn)單的幾行代碼實(shí)現(xiàn)。
本人采用以上結(jié)構(gòu)開發(fā)了若干個(gè)單片機(jī)產(chǎn)品,包括包含無(wú)線軟解碼的無(wú)線防盜報(bào)警主機(jī)、RS485中繼器(一拖100)、帶中文顯示的報(bào)警接收機(jī)等,都實(shí)現(xiàn)了穩(wěn)定有效的運(yùn)行。
希望本人的一些體會(huì)會(huì)能給大家有所幫助!
編輯:admin 最后修改時(shí)間:2018-05-18