下載程序
AT89SXX系列單片機實現了ISP下載功能,故而取代了89CXX系列的下載方式,也是因為這樣,ATMEL公司已經停止生産89CXX系列的單片機,現在市面上的AT89CXX多是停産前的庫存産品。
2控制線,共4根。
(1)輸入:
RST——複位輸入信号,高電平有效。在振蕩器工作時,在RST上作用兩個機器周期以上的高電平,将器件複位。
EA/Vpp——片外程序存儲器訪問允許信号,低電平有效。在編程時,其上施加12V的編程電壓。
(2)輸入,輸出:
ALE/PROG——地址鎖存允許信号,輸出。用做片外存儲器訪問時,低字節地址鎖存。ALE以1/6的振蕩頻率穩定速率輸出,可用做對外輸出的時鐘或用于定時。在EPROM編程期間,作輸入。輸入編程脈沖。ALE可以驅動8個LSTTL負載。
(3)輸出:
PSEN——片外程序存儲器選通信号,低電平有效。在從片外程序存儲器取指期間,在每個機器周期中,當PSEN有效時,程序存儲器的内容被送上P0口(數據總線)。PSEN可以驅動8個LSTTL負載。
3、I/O口:4個口,32根
單片機51系列共有四個8位雙向并行I/O通道口,分别是P0、P1、P2、P3,各具有特殊的電路結構,每位均有自己的鎖存器、輸出驅動器和輸入緩沖器。
這種結構,在數據輸出時可鎖存,即輸出新的數據之前,通道口上原數據一直保持不變,但對輸入信息是不鎖存的,因此從外部輸入的信息必須保持到取數指令執行完為止。
在這四個8位雙向并行I/O通道口中,我們應該選擇哪一個通道口作為輸入信号和輸出信号的端口呢?下面我們先來了解一下四個通道口的結構。
(1)P0口介紹
P0口在訪問外部存儲器時,P0口既是一個真正的雙向數據總線口,又是從分時輸出8位地址口。它包括一個輸出鎖存器,兩個三态緩沖器,一個輸出驅動電路和一個輸出控制電路
(2)P1口介紹
P1口是專門為用戶使用的I/O口,是準雙向口,P1口為8位準雙向口,每一位均可單獨定義為輸入或輸出口。在編程校驗期間,用做輸入低位字節地址。P1口可以驅動4個LSTTL負載。
(3)P2口介紹
P2口也是雙向口。它是供系統擴展時輸出高8位地址。如果沒有系統擴展時,也可以作為用戶的I/O口使用。P2口作為外部數據存儲器或程序存儲器的地址總線的高8位輸出口AB8-AB15,P0口由ALE選通作為地址總線的低8位輸出口AB0-AB7。
外部的程序存儲器由PSEN信号選通,數據存儲器則由WR和RD讀寫信号選通,因為2=64k,所以89S51最大可外接64kB的程序存儲器和數據存儲器
(4)P3口介紹
P3口是個雙功能口,第一功能作通用I/O口,第二功能是作變異功能用,為适應引腳的第二功能的需要,增加了第二功能控制邏輯,在真正的應用電路中,第二功能顯得更為重要。由于第二功能信号有輸入輸出兩種情況,我們分别加以
說明。
P3口的輸入輸出及P3口鎖存器、中斷、定時/計數器、串行口和特殊功能寄存器有關,P3口的第一功能和P1口一樣可作為輸入輸出端口,同樣具有字節操作和位操作兩種方式,在位操作模式下,每一位均可定義為輸入或輸出。
現在我們已經對四個8位雙向并行I/O口有了初步的了解。根據以上的介紹我們知道隻有P1口是标準的I/O口,所以我們選用P0口作為數據端口,P0口可逐位分别定義各口線為輸入或輸出線。
3.1.289S51單片機的中斷系統
本次畢業設計的汽車多功能報警器是利用外部中斷觸發單片機中斷處理程序,以實現防盜報警的功能。所以,以下内容是對89S51單片機的中斷系統的介紹。
1,中斷:程序執行過程中,允許外部或内部事件通過硬件打斷程序的執行,使其轉向為處理内部事件的中斷服務程序中去;完成中斷服務的程序後,CPU繼續原來被打斷的程序,這樣的過程稱為中斷過程。
2,中斷源:能産生中斷的外部和内部事件。
89S51有5個中斷源:
(1)INT0:外部中斷0請求,低電平有效。通過P3.2引腳輸入。
(2)INT1:外部中斷1請求,低電平有效。通過P3.3引腳輸入。
(3)T0:定時器/計數器0溢出中斷請求。
(4)TI:定時器/計數器1溢出中斷請求。
(5)TXD/RXD:串行口中斷請求。當串行口完成一幀數據的發送或接收時,便請求中斷。
每一個中斷源都對應一個中斷請求标志位,它們設置在特殊功能寄存器TCON和SCON中。當這些中斷源請求中斷時,相應的标志分别有TCON和SCON中的相應位來鎖存。
3,89S51中斷系統有以下4個特殊功能寄存器:
(1)定時器控制寄存器TCON(用6位);
(2)串行口控制寄存器SCON(用2位);
(3)中斷允許寄存器IE;
(4)中斷優先級寄存器IP。
其中,TCON和SCON隻有一部分用于中斷控制。通過對以上各特殊功能寄存器的各位進行置位或複位等操作,可實現各種中斷控制功能。
4,中斷的響應過程及中斷矢量地址
中斷處理過程可分為3個階段:中斷響應、中斷處理和中斷返回。89C51的CPU在每個機器周期的S5P2期間順序采樣每個中斷源,CPU在下一個機器周期S6期間按優先級順序查詢中斷标志。如查詢到某個中斷标志為1,則将在接下來的機器周期S1期間按優先級進行中斷處理。中斷系統通過硬件自動将相應的中斷矢量地址裝入PC,以便進入相應的中斷服務程序。表2既是各個中斷源對應的中斷矢量地址。
由于89S51系列單片機的兩個相鄰的中斷源中斷服務程序入口地址相距隻有八個單元,一般的中斷服務程序是容納不下的,通常是在相應的中斷服務程序入口地址中放一條常跳轉指令LJMP,這樣就可以轉到64KB任何可用區域了。
中斷服務程序從矢量地址開始執行,一直到返回指令RETI為止。RETI指令的操作一方面告訴中斷系統該中斷服務程序已執行完畢,另一方面把原來壓入堆棧保護斷點地址從棧頂彈出,裝入程序寄存器PC,使程序返回到被中斷的程序斷點處繼續執行。
5,在編寫中斷服務程序時應注意:
(1)在中斷矢量地址單元處存放一條無條件轉移指令(如LJMP××××H),使中斷程序可靈活的安排在64KB程序存儲器的任何空間。
(2)在中斷服務程序中,用戶應注意用軟件保護現場,以免中斷返回後丢失原寄存器、累加器中的信息。
(3)若要在執行當前中斷程序時禁止更高優先級中斷,則可先用軟件關閉CPU中斷或禁止某中斷源中斷,在中斷返回前在開放中斷。
性能強大
AT89S51具有完整的輸入輸出、控制端口、以及内部程序存儲空間。與我們通常意義上的微機原理類似,可以通過外接A/D,D/A轉換電路及運放芯片實現對傳感器傳送信息的采集,且能夠提供以點陣或LCD液晶及外接按鍵實現人機交互,能對内部衆多I/O端口連接步進電機對外圍設備進行精确操控,具有強大的工控能力。
易于學習
AT89S51系列單片機編寫程序的基本流程。其語法結構與我們常用的計算機C語言基本相同,不同之處在于增加了控制具體引腳工作的語句和命令,相對于計算機C語言,單片機C語言更簡練和明确,可以控制每個引腳的輸入輸出狀态。
其主要語句集中在例如:“ifelse”、“while”、“for”等循環與判斷語句上,相比計算機C語言更簡單。有過計算機C語言學習經曆經過一段時間的熟悉就能夠熟練進行編程。
使用AT89S51系列單片機編程,可以在沒有實物單片機的情況下在普通電腦上進行程序編寫甚至是調試工作。一般工作中使用Keil公司開發的51單片機編程軟件進行編程,它采用目前流行的開發環境,集編輯,編譯和仿真于一體。
在該軟件上用戶可以編寫彙編語言或C語言源程序,并利用該軟件生成單片機能運行的程序。
價格低廉
AT89S51芯片價格便宜,适合對大批量的計量儀器進行規模化改造,其單片售價不超過5元。