現(xiàn)在簡(jiǎn)單的總結(jié)一下,入門級(jí)的C51學(xué)習(xí)在沒有昂貴的單片機(jī)仿真器情況下,怎樣算是方便調(diào)試又花費(fèi)少吧。
先說說AT89C51,噢,差點(diǎn)忘了,這型號(hào)的單片機(jī)不知何年被停產(chǎn)了,現(xiàn)在就靠它的庫存仍在這個(gè)歷史的舞臺(tái)上掙扎。
缺點(diǎn):對(duì)入土為安的芯片沒什么好說了。
那就說AT89S51,這可是一個(gè)令人振奮的產(chǎn)物,最大的特點(diǎn)莫過于它的ISP(在線編程)功能,就是使用者每編譯好程序,就可以立即通過ISP下載線寫到單片機(jī)上去。而且ISP下載線的制作簡(jiǎn)單令單片機(jī)和我們的距離更加接近了。它的ISP原理圖如下:

其中ISP下載程序可以用easy 51pro v2.0。相比昂貴的仿真器,做上圖的元器件總共也就十塊錢左右吧。
缺點(diǎn):一、并口連接電腦,1.可能占用打印機(jī)口;2.是筆記本是沒有并口的。
二、下載線制作一次成功率不大,不是漏接了這個(gè)腳就是那個(gè)口,對(duì)于新手而言尤其這樣。
三、下載線壽命不長(zhǎng),一兩次不知明的原因(通常靜電),就可以把里面的那塊芯片(74LS244)燒壞。并且,實(shí)際你都不知道到底哪里出毛病了。
也許,世界上真的沒有最好,只要更好,自從好友張JL和陳Y介紹了STC的51系列單片機(jī)給我之后,發(fā)現(xiàn)竟然有這么方便好用功能強(qiáng)大的單片機(jī)。
STC51單片機(jī)的型號(hào)跟ATMEL的大致一樣,有STC89C51,C52等,對(duì)應(yīng)于AT89C51,C52等對(duì)應(yīng)它們的內(nèi)部RAM內(nèi)部ROM中斷口等,是完全一樣的。
當(dāng)然,STC系列單片機(jī)是改進(jìn)型的單片機(jī),它的熱重啟,串口ISP等功能確實(shí)為我準(zhǔn)備介紹給大家提供了理由。
先說說ISP功能,它跟電腦連接就只有三根線,就是通過RS-232傳輸。它ISP過程是這樣的:冷重啟(上電)-單片機(jī)運(yùn)行系統(tǒng)ISP監(jiān)控程序(出廠時(shí)已燒到里面)-檢測(cè)P3.0/RXD有沒有合法下載命令流,有的話,就下載用戶程序進(jìn)戶程序區(qū);沒有的話,就跳到用戶程序區(qū),運(yùn)行用戶程序。 所以,第一次下載程序,用戶需要先點(diǎn)ISP下載軟件的“download”,再把單片機(jī)通電。如圖:

到了這里,大家不禁會(huì)說,下載線雖然簡(jiǎn)單,但每次都要斷電上電,煩不煩?答:我都覺得煩。不過眼睛銳利的讀者發(fā)現(xiàn)了上圖右下片有一段文字。說什么的呢?哦,原來是自定義下載。什么是自定義下載?首先我先說個(gè)高興的事兒——用自定義下載,從此告別斷電上電的冷重啟ISP下載。
所謂自定義下載,就是我從上面軟件的自定義下載命令文本框中打入十六進(jìn)制數(shù)字(如:FEH)然后點(diǎn)擊發(fā)送,程序自動(dòng)下載到用戶單片機(jī)里。神奇吧。究其不用斷電上電冷重啟的原因,就是上面我所說的STC單片機(jī)具有熱重啟功能。用戶只需簡(jiǎn)單控制ISP_CONTOR特殊功能寄存器即可實(shí)現(xiàn)系統(tǒng)復(fù)位了。匯編語句是:
MOV 0E7H,#60H
那么,自定義下載又如何做到呢?其編程思想是這樣的:主程序開始初始化串口,包括設(shè)置波特率和串口中斷,然后在串口中斷子程序里寫上語句判斷是否為自定義下載碼,再延時(shí)一秒左右,和上面的那句話 MOV 0E7H,#60H 。就這樣就完了,不難吧。注意,自定義下載那里有一個(gè)波特率設(shè)置,這個(gè)波特率就是你的程序(已下到單片機(jī)中的程序哦)里設(shè)置的波特率。
下面用匯編寫段示例程序:
ORG 0000H
AJMP START
ORG 0023H
LJMP ZIJI
ORG 0100H
START: MOV SP,#70H
MOV TMOD,#20H ;T1方式2
MOV TH1,#0F4H ;4800B/S
MOV TL1,#0F4H
SETB TR1
MOV SCON,#0F8H ;串行口為方式3,允許接收,SM2=1,TB8=1
MOV PCON,#80H ;smod=1 !!!!!!!!!
SETB EA ;開所有中斷
SETB ES ;開串口中斷
CLR RI
.....
ORG 0200H
ZIJI: CLR RI ;串口中斷子程序
PUSH ACC
PUSH PSW
MOV A,SBUF
MOV R1,A
XRL A,#0FEH ;判斷是否為自定義下載命令(FEH)
JZ ISP
...
RETURN:PUSH PSW
PUSH ACC
RETI
ISP:
CALL DL1S ;調(diào)用延時(shí)1秒子程序
MOV 0E7H,#60H ;運(yùn)行重啟程序
AJMP RETURN
附上STC的下載線原理圖:

剛上網(wǎng)搜到一個(gè)簡(jiǎn)單的電路圖(本人沒驗(yàn)證,僅供參考)

如果還是覺得用串口實(shí)在不方便的話,那我就推薦你使用USB轉(zhuǎn)串口下載線啦。
原理圖也不十分難,自己做也可以,只是其中用到的CH341S芯片有點(diǎn)貴(約15元左右)。附上原理圖
