基于51單片機(jī)的上位機(jī)通訊系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)
基于51單片機(jī)的上位機(jī)通訊系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)_第2頁(yè)
基于51單片機(jī)的上位機(jī)通訊系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)_第3頁(yè)
基于51單片機(jī)的上位機(jī)通訊系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)_第4頁(yè)
基于51單片機(jī)的上位機(jī)通訊系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄摘要11.總體任務(wù)21.1設(shè)計(jì)目的21.2設(shè)計(jì)內(nèi)容和要求21.3 設(shè)計(jì)思路22.設(shè)計(jì)原理分析32.1上位機(jī)通信系統(tǒng)框圖32.1.1串行通信工作原理32.2各部分設(shè)計(jì)原理42.2.1 +5V電源原理及設(shè)計(jì)42.2.2單片機(jī)復(fù)位電路工作原理52.2.3單片機(jī)晶振電路工作原理62.2.4 RS-232接口電器特性63.硬件電路設(shè)計(jì)93.1系統(tǒng)硬件總電路構(gòu)成及原理93.2 主控制部分AT89C52單片機(jī)簡(jiǎn)介103.3其它外圍器件174.系統(tǒng)軟件程序的簡(jiǎn)單設(shè)計(jì)185.課程設(shè)計(jì)總結(jié)32參考文獻(xiàn)3334 / 36文檔可自由編輯打印摘要 隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所

2、給人帶來(lái)的方便也是不可否定的,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展?,F(xiàn)代化集中管理需要對(duì)現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、分析、制表、打印、繪圖、報(bào)警等,同時(shí),又要求對(duì)現(xiàn)場(chǎng)裝置進(jìn)行實(shí)時(shí)控制,完成各種規(guī)定操作,達(dá)到集中管理的目的。加之單片機(jī)的計(jì)算能力有限,難以進(jìn)行復(fù)雜的數(shù)據(jù)處理。因此在功能比較復(fù)雜的控制系統(tǒng)中,通常以PC機(jī)為上位機(jī),單片機(jī)為下位機(jī),由單片機(jī)完成數(shù)據(jù)的采集及對(duì)裝置的控制,而由上位機(jī)完成各種復(fù)雜的數(shù)據(jù)處理及對(duì)單片機(jī)的控制。 本文介紹了一種基于AT89C52 單片機(jī)與上位機(jī)通信系統(tǒng), 并對(duì)其工作原理及軟、硬

3、件的設(shè)計(jì)和實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的闡述。 在單片機(jī)的輸入輸出控制中,除直接接上小鍵盤(pán)和LCD顯示等方法外,一般都通過(guò)串口和上位機(jī)PC進(jìn)行通信,后面一種方法由于PC機(jī)擁有強(qiáng)大的數(shù)據(jù)處理功能以及友好的控制界面并且能實(shí)現(xiàn)遠(yuǎn)程控制所以顯得尤為有用。此系統(tǒng)可以由上位機(jī)控制,通過(guò)串口操作單片機(jī)模塊實(shí)現(xiàn)其相應(yīng)功能。本次設(shè)計(jì)就是來(lái)完成由上位機(jī)通過(guò)串口控制來(lái)實(shí)現(xiàn),以發(fā)光二極管的發(fā)光狀態(tài)模擬開(kāi)關(guān)電路的通斷,用上位機(jī)的DOS命令對(duì)其進(jìn)行控制。并用LED屏顯示程序的傳輸。關(guān)鍵字  AT89C52單片機(jī);上位機(jī);串口通信;開(kāi)關(guān)電路. 1.總體任務(wù)1.1設(shè)計(jì)目的1) 通過(guò)單片機(jī)課程設(shè)計(jì),熟練掌握匯編語(yǔ)言的

4、編程方法,將理論聯(lián)系到實(shí)踐中去,提高我們的動(dòng)腦和動(dòng)手的能力。2) 通過(guò)上位機(jī)通信系統(tǒng)的設(shè)計(jì),了解上位機(jī)通信系統(tǒng)的工作原理和簡(jiǎn)單的程序編寫(xiě),最終提高我們的邏輯思維能力。1.2設(shè)計(jì)內(nèi)容和要求1) 內(nèi)容:設(shè)計(jì)一個(gè)AT80C52單片機(jī)上位機(jī)通信系統(tǒng),由上位機(jī)通過(guò)串口操作控制單片機(jī)模塊。2) 要求:以發(fā)光二極管的發(fā)光狀態(tài)模擬開(kāi)關(guān)電路的通斷,用上位機(jī)DOS命令,對(duì)發(fā)光二極管進(jìn)行控制。1.3 設(shè)計(jì)思路1) 熟悉設(shè)計(jì)原理,熟練掌握 Vision和ISIS Professional軟件的應(yīng)用,了解上位機(jī)通信系統(tǒng)的工作過(guò)程和工作原理。2) 了解各個(gè)硬件的工作原理。3) 繪制電路原理圖,編寫(xiě)程序,并進(jìn)行仿真,DOS

5、命令對(duì)其進(jìn)行控制,基本實(shí)現(xiàn)上位機(jī)通信系統(tǒng)的功能。2.設(shè)計(jì)原理分析2.1上位機(jī)通信系統(tǒng)框圖電源電路AT89C52單片機(jī)發(fā)光二極管上位機(jī)接口復(fù)位電路晶振電路LED顯示電路 圖2.1 基于AT89C52單片機(jī)與上位機(jī)通信系統(tǒng)框圖 2.1.1串行通信工作原理 串行通信是指利用一條傳輸線(xiàn)將數(shù)據(jù)一位位的順序傳送。其特點(diǎn)是通信線(xiàn)路簡(jiǎn)單,利用電話(huà)或電報(bào)就可實(shí)現(xiàn)通信,降低成本,適用于遠(yuǎn)距離通信,但傳輸速度較慢。這里需要說(shuō)明幾個(gè)概念。1) 波特率:?jiǎn)纹瑱C(jī)需要根據(jù)使用的系統(tǒng)時(shí)鐘頻率(fo ),結(jié)合選定的通信波特率, 計(jì)算出UART寄存器設(shè)置值為1280。 為了保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,上位COM口的通信波特率也必須設(shè)置

6、成和單片機(jī)采用的速率相一致。 2) 數(shù)據(jù)格式:數(shù)據(jù)格式采用1位起始位、8位數(shù)據(jù)位、無(wú)奇偶校驗(yàn)位、1位停止位組成,如圖所示。STARTD0D1D6D7STOP START啟動(dòng)位 D0D78位數(shù)據(jù) STOP停止位 圖2.1.1串口通信數(shù)據(jù)格式 數(shù)據(jù)位標(biāo)準(zhǔn)的值有5、7和8位,如何設(shè)置取決于系統(tǒng)設(shè)計(jì)時(shí)需要傳送的信 息。比如,標(biāo)準(zhǔn)的ASCII碼是0 127 (7位),擴(kuò)展的ASCII碼則是0255 (8位)。停止位用于表示單個(gè)包的最后一位,典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線(xiàn)上定時(shí)的,并且每一個(gè)設(shè)備有 自己的時(shí)鐘,很可能在通信中兩臺(tái)設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并

7、且提供系統(tǒng)校正時(shí)鐘同步的機(jī)會(huì)。奇偶校驗(yàn)位在串口通信中僅是一種簡(jiǎn)單的檢錯(cuò)方式,可以不考慮。 2.2各部分設(shè)計(jì)原理2.2.1 +5V電源原理及設(shè)計(jì)穩(wěn)定直流源設(shè)計(jì)的一般思路是讓輸入電壓先通過(guò)電壓變壓器,再通過(guò)整流網(wǎng)絡(luò),然后經(jīng)過(guò)濾波網(wǎng)絡(luò)最后經(jīng)過(guò)穩(wěn)壓網(wǎng)絡(luò)。以全波整流電路作為整流網(wǎng)絡(luò),以極性電容作為濾波網(wǎng)絡(luò),采用固定式三端集成穩(wěn)壓電路7805和7905設(shè)計(jì)制作連續(xù)可調(diào)的雙極型直流穩(wěn)壓電源。如下圖所示,220V(幅值311V)50Hz市電經(jīng)變壓器220:25輸出兩組獨(dú)立的25V交流,經(jīng)橋堆整流、大電容濾波后分別經(jīng)過(guò)集成穩(wěn)壓塊LM7805C與LM7905C作用得到±5V的直流輸出。 圖2.2.1直流

8、電源系統(tǒng)方框圖電源變壓器:將電網(wǎng)提供的220V交流電壓轉(zhuǎn)換為各種電路設(shè)備所需的交流電壓。整流電路:利用單向?qū)щ娖骷⒔涣麟娹D(zhuǎn)換成脈動(dòng)直流電路。濾波電路:利用儲(chǔ)能元件(電感或電容)把脈動(dòng)直流電轉(zhuǎn)換成比較平坦的直流電。穩(wěn)壓電路:利用電路的調(diào)整作用使輸出電壓穩(wěn)定的過(guò)程稱(chēng)為穩(wěn)壓。具體電路如下:圖2.2.1 ±5V設(shè)計(jì)電原理圖 輸入電容C1、C2用于抑制紋波電壓,輸出電容C3、C4用于消振,緩沖沖擊性負(fù)載,保證電路工作穩(wěn)定。同時(shí)由于輸出電容C3、C4的存在,容易發(fā)生電容放電而損壞穩(wěn)壓器,RV1和RV2是滑動(dòng)變阻器,可以調(diào)節(jié)輸出的電壓。R1和R2是限流電阻,防止線(xiàn)路電流太大。LM7805集成穩(wěn)壓

9、三極管輸出電流可達(dá)1A,輸出電壓5V,過(guò)熱保護(hù),過(guò)流保護(hù),輸出晶體管SOL保護(hù)。2.2.2單片機(jī)復(fù)位電路工作原理 電容在上接高電平,電阻在下接地,中間為RST。這種復(fù)位電路的工作原理是:通電時(shí),電容兩端相當(dāng)于是短路,于是RST引腳上為高電平,然后電源通過(guò)電阻對(duì)電容充電,RST端電壓慢慢下降,降到一定程度,即為低電平,單片機(jī)開(kāi)始正常工作。 首先RST保持兩個(gè)機(jī)器周期以上的高電平時(shí)自動(dòng)復(fù)位1) 上電復(fù)位:上電瞬間,電容充電電流最大,電容相當(dāng)于短路,RST端為高電平,自動(dòng)復(fù)位;電容兩端的電壓達(dá)到電源電壓時(shí),電容充電電流為零,電容相當(dāng)于開(kāi)路,RST端為低電平,程序正常運(yùn)行。2) 手動(dòng)復(fù)位:首先經(jīng)過(guò)上電

10、復(fù)位,當(dāng)按下按鍵時(shí),RST直接與VCC相連,為高電平形成復(fù)位,同時(shí)電解電容被短路放電;按鍵松開(kāi)時(shí),VCC對(duì)電容充電,充電電流在電阻上,RST依然為高電平,仍然是復(fù)位,充電完成后,電容相當(dāng)于開(kāi)路,RST為低電平,正常工作。圖2.2.2復(fù)位電路電原理圖2.2.3單片機(jī)晶振電路工作原理晶振分為有源晶振和無(wú)源晶振兩種,其作用是在電路產(chǎn)生震蕩電流,發(fā)出時(shí)鐘信號(hào)。它是時(shí)鐘電路中最重要的部件,它的作用是向IC等部件提供基準(zhǔn)頻率,它就像個(gè)標(biāo)尺,工作頻率不穩(wěn)定會(huì)造成相關(guān)設(shè)備工作頻率不穩(wěn)定,自然容易出現(xiàn)問(wèn)題。由于制造工藝不斷提高,現(xiàn)在晶振的頻率偏差、溫度穩(wěn)定性、老化率、密封性等重要技術(shù)指標(biāo)都很好,已不容易出現(xiàn)故障

11、,但在選用時(shí)仍可留意一下晶振的質(zhì)量。圖2.2.3晶振電路電原理圖2.2.4 RS-232接口電器特性 目前RS-232是PC機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。R S-232被定義為一種在低速率串行通信中增加通信距離的單端標(biāo)準(zhǔn)。R S-232采用不平衡傳輸方式,即所謂單端通信,該接口具有使用方便、連線(xiàn)少等優(yōu)點(diǎn)。RS-232接口主要電氣特性如下: 1) RS-232串口通信最遠(yuǎn)距離為15m。 2) 不帶負(fù)載時(shí)的驅(qū)動(dòng)器輸出電平為 -25V +25V 。 3) 接收器輸入電壓的允許范圍為-25V +25V 。 4) RS-232上傳送的數(shù)字量采用負(fù)邏輯,且與地對(duì)稱(chēng)。邏輯1:-3V -15V ;

12、邏輯0: +3V +15V 。 5) 最大負(fù)載電容2500pF。 6) 信號(hào)有效(接通,ON狀態(tài),正電壓)為+3V +15V,信號(hào)無(wú)效(斷開(kāi),OFF狀態(tài),負(fù)電壓 )為 -3V -15V。由RS-232標(biāo)準(zhǔn)對(duì)邏輯電平的定義可知,在發(fā)送引腳(TxD )和接收引腳(RxD )上, 對(duì)于數(shù)據(jù)信息:邏輯“1”的電平要低于-3V,邏輯“0”的電平要高于+3V;對(duì)于控制信號(hào),接通狀態(tài)(ON )即信號(hào)有效的電平高于+3V,斷開(kāi)狀態(tài)(OFF )即信號(hào)無(wú)效的電平低 于 -3V,也就是當(dāng)傳輸電平的絕對(duì)值大于3V時(shí),電路可以有效地檢查出來(lái),介于 -3 +3V之間的電壓無(wú)意義,低于-15V高于+15V的電壓也認(rèn)為無(wú)意義

13、,因此,實(shí)際工作時(shí),應(yīng)保證電平在4(315 )V之間。表2.2.4TTL邏輯電平與RS-232邏輯電平對(duì)比關(guān)系表電平狀態(tài)TTLRS-232邏輯電平“1” +2.4V-3 -15V邏輯電平“0” +0.4V+3 +15V 圖2.2.4上位機(jī)通信與RS-232接口電原理圖3.硬件電路設(shè)計(jì)3.1系統(tǒng)硬件總電路構(gòu)成及原理實(shí)現(xiàn)本設(shè)計(jì)具體功能,可選用AT80C52單片機(jī)及外圍器件,實(shí)現(xiàn)最小控制通信系統(tǒng)。電源電路為單片機(jī)及其他模塊提供標(biāo)準(zhǔn)的+5V外界電源,晶振模塊為單片機(jī)提供時(shí)鐘標(biāo)準(zhǔn),使系統(tǒng)各部分能協(xié)調(diào)工作。復(fù)位電路模塊為單片機(jī)提供復(fù)位電路功能,單片機(jī)作為主控器,根據(jù)輸入信號(hào)對(duì)系統(tǒng)進(jìn)行相應(yīng)的控制。9針接口與

14、單片機(jī)和上位機(jī)的RS-232相連,實(shí)現(xiàn)上位機(jī)和單片機(jī)之間的通信,發(fā)光二極管是單片機(jī)控制的控制對(duì)象,實(shí)際應(yīng)用中,它連接光電隔離器和驅(qū)動(dòng)電路,可以作為電路開(kāi)關(guān)。本次設(shè)計(jì)還提供LED顯示屏,顯示程序的傳輸過(guò)程。圖3.1單片機(jī)上位機(jī)通信系統(tǒng)電原理圖 本次設(shè)計(jì)的所需元件清單如表3.1 元件名稱(chēng)型號(hào)數(shù)量/個(gè)用途單片機(jī)AT80C521控制核心晶振12MHz1晶振電路電容30pF2電解電容10F/10V1復(fù)位電路電阻10K1按鍵1串口9針1接微機(jī)集成芯片MAX2321電平轉(zhuǎn)換電路電解電容1F/10V2發(fā)光二極管6控制對(duì)象電阻1K6電源+5V/0.5A1提供電源LED1顯示程序傳輸3.2 主控制部分AT89C5

15、2單片機(jī)簡(jiǎn)介AT89C52是51系列單片機(jī)的一個(gè)型號(hào),它是ATMEL公司生產(chǎn)的。AT89C52是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大的AT89C52單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場(chǎng)合。AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫(xiě)口線(xiàn),

16、AT89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線(xiàn)編程(S系列的才支持在線(xiàn)編程)。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。AT89C52P為40 腳雙列直插封裝的8 位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會(huì)聚調(diào)整時(shí)的功能控制。功能包括對(duì)會(huì)聚主IC 內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會(huì)聚調(diào)整控制,會(huì)聚測(cè)試圖控制,紅外遙控信號(hào)IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振蕩器輸入輸出端口,外接12MHz

17、 晶振。RST/Vpd(9 腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40 腳)和VSS(20 腳)為供電端口,分別接+5V電源的正負(fù)端。P0P3 為可編程通用I/O 腳,其功能用途由軟件定義,在本設(shè)計(jì)中,P0 端口(3239 腳)被定義為N1 功能控制端口,分別與N1的相應(yīng)功能管腳相連接,13 腳定義為IR輸入端,10 腳和11腳定義為I2C總線(xiàn)控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12 腳、27 腳及28 腳定義為握手信號(hào)功能端口,連接主板CPU 的相應(yīng)功能端,用于當(dāng)前制式的檢測(cè)及會(huì)聚調(diào)整狀態(tài)進(jìn)入的控制功能。P0 口P0 口是一組8位漏極開(kāi)路型雙

18、向I/O 口,也即地址/數(shù)據(jù)總線(xiàn)復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門(mén)電路,對(duì)端口P0 寫(xiě)“1”時(shí),可作為高阻抗輸入端用。在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線(xiàn)分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線(xiàn)復(fù)用,在訪(fǎng)問(wèn)期間激活內(nèi)部上拉電阻。在Flash 編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。P1 口P1 是一個(gè)帶內(nèi)部上拉電阻的8 位雙向I/O 口, P1 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門(mén)電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳

19、被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時(shí)/計(jì)數(shù)器2 的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),F(xiàn)lash 編程和程序校驗(yàn)期間,P1 接收低8 位地址。表3.2 P1.0和P1.1的第二功能引腳號(hào)功能特性P1.0T2,時(shí)鐘輸出P1.1T2EX(定時(shí)/計(jì)數(shù)器2)P2 口P2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL 邏輯門(mén)電路。對(duì)端口P2 寫(xiě)“1”,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部

20、信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪(fǎng)問(wèn)外部程序存儲(chǔ)器或16 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX DPTR 指令)時(shí),P2 口送出高8 位地址數(shù)據(jù)。在訪(fǎng)問(wèn)8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX RI 指令)時(shí),P2 口輸出P2 鎖存器的內(nèi)容。Flash 編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。P3 口P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門(mén)電路。對(duì)P3 口寫(xiě)入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。P3 口除了作為一般的I/O 口線(xiàn)

21、外,更重要的用途是它的第二功能。P3 口還接收一些用于Flash 閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。RST復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。ALE/PROG當(dāng)訪(fǎng)問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ALE 仍以時(shí)鐘振蕩頻率的1/6 輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE 脈沖。對(duì)Flash 存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過(guò)對(duì)特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位

22、,可禁止ALE 操作。該位置位后,只有一條MOVX 和MOVC指令才能將ALE 激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE 禁止位無(wú)效。PSEN程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52 由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器,將跳過(guò)兩次PSEN信號(hào)。EA/VPP外部訪(fǎng)問(wèn)允許。欲使CPU 僅訪(fǎng)問(wèn)外部程序存儲(chǔ)器(地址為0000HFFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1 被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端

23、),CPU 則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash 存儲(chǔ)器編程時(shí),該引腳加上+12V 的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V 編程電壓Vpp。XTAL1振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。XTAL2振蕩器反相放大器的輸出端。特殊功能寄存器在AT89C52 片內(nèi)存儲(chǔ)器中,80H-FFH 共128 個(gè)單元為特殊功能寄存器(SFE),SFR 的地址空間映象如表2 所示。并非所有的地址都被定義,從80HFFH 共128 個(gè)字節(jié)只有一部分被定義,還有相當(dāng)一部分沒(méi)有定義。對(duì)沒(méi)有定義的單元讀寫(xiě)將是無(wú)效的,讀出的數(shù)值將不確定,而寫(xiě)入的數(shù)據(jù)也將丟失。不應(yīng)將數(shù)據(jù)“1”寫(xiě)入未定義的單元,由于

24、這些單元在將來(lái)的產(chǎn)品中可能賦予新的功能,在這種情況下,復(fù)位后這些單元數(shù)值總是“0”。AT89C52除了與AT89C51所有的定時(shí)/計(jì)數(shù)器0 和定時(shí)/計(jì)數(shù)器1 外,還增加了一個(gè)定時(shí)/計(jì)數(shù)器2。定時(shí)/計(jì)數(shù)器2 的控制和狀態(tài)位位于T2CON(參見(jiàn)表3)T2MOD(參見(jiàn)表4),寄存器對(duì)(RCAO2H、RCAP2L)是定時(shí)器2 在16 位捕獲方式或16 位自動(dòng)重裝載方式下的捕獲/自動(dòng)重裝載寄存器。數(shù)據(jù)存儲(chǔ)器AT89C52 有256 個(gè)字節(jié)的內(nèi)部RAM,80H-FFH 高128 個(gè)字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM 和特殊功能寄存器的地址是相同的,但物理上它們是分開(kāi)的。

25、當(dāng)一條指令訪(fǎng)問(wèn)7FH 以上的內(nèi)部地址單元時(shí),指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪(fǎng)問(wèn)高128 字節(jié)RAM 還是訪(fǎng)問(wèn)特殊功能寄存器。如果指令是直接尋址方式則為訪(fǎng)問(wèn)特殊功能寄存器。例如,下面的直接尋址指令訪(fǎng)問(wèn)特殊功能寄存器0A0H(即P2 口)地址單元。MOV 0A0H,#data間接尋址指令訪(fǎng)問(wèn)高128 字節(jié)RAM,例如,下面的間接尋址指令中,R0 的內(nèi)容為0A0H,則訪(fǎng)問(wèn)數(shù)據(jù)字節(jié)地址為0A0H,而不是P2 口(0A0H)。MOV R0,#data堆棧操作也是間接尋址方式,所以,高128 位數(shù)據(jù)RAM 亦可作為堆棧區(qū)使用。定時(shí)器0和定時(shí)器1:AT89C52的定時(shí)器0和定時(shí)器1 的工作

26、方式與AT89C51 相同。定時(shí)器2定時(shí)器2 是一個(gè)16 位定時(shí)/計(jì)數(shù)器。它既可當(dāng)定時(shí)器使用,也可作為外部事件計(jì)數(shù)器使用,其工作方式由特殊功能寄存器T2CON的C/T2 位選擇。定時(shí)器2 有三種工作方式:捕獲方式,自動(dòng)重裝載(向上或向下計(jì)數(shù))方式和波特率發(fā)生器方式,工作方式由T2CON 的控制位來(lái)選擇。定時(shí)器2 由兩個(gè)8 位寄存器TH2 和TL2 組成,在定時(shí)器工作方式中,每個(gè)機(jī)器周期TL2 寄存器的值加1,由于一個(gè)機(jī)器周期由12 個(gè)振蕩時(shí)鐘構(gòu)成,因此,計(jì)數(shù)速率為振蕩頻率的1/12。在計(jì)數(shù)工作方式時(shí),當(dāng)T2 引腳上外部輸入信號(hào)產(chǎn)生由1 至0 的下降沿時(shí),寄存器的值加1,在這種工作方式下,每個(gè)機(jī)

27、器周期的5SP2 期間,對(duì)外部輸入進(jìn)行采樣。若在第一個(gè)機(jī)器周期中采到的值為1,而在下一個(gè)機(jī)器周期中采到的值為0,則在緊跟著的下一個(gè)周期的S3P1 期間寄存器加1。由于識(shí)別1 至0 的跳變需要2 個(gè)機(jī)器周期(24 個(gè)振蕩周期),因此,最高計(jì)數(shù)速率為振蕩頻率的1/24。為確保采樣的正確性,要求輸入的電平在變化前至少保持一個(gè)完整周期的時(shí)間,以保證輸入信號(hào)至少被采樣一次。捕獲方式在捕獲方式下,通過(guò)T2CON 控制位EXEN2 來(lái)選擇兩種方式。如果EXEN2=0,定時(shí)器2 是一個(gè)16 位定時(shí)器或計(jì)數(shù)器,計(jì)數(shù)溢出時(shí),對(duì)T2CON 的溢出標(biāo)志TF2 置位,同時(shí)激活中斷。如果EXEN2=1,定時(shí)器2 完成相同

28、的操作,而當(dāng)T2EX 引腳外部輸入信號(hào)發(fā)生1 至0 負(fù)跳變時(shí),也出現(xiàn)TH2 和TL2 中的值分別被捕獲到RCAP2H 和RCAP2L 中。另外,T2EX引腳信號(hào)的跳變使得T2CON 中的EXF2 置位,與TF2 相仿,EXF2 也會(huì)激活中斷。捕獲方式如圖4 所示。自動(dòng)重裝載(向上或向下計(jì)數(shù)器)方式當(dāng)定時(shí)器2工作于16位自動(dòng)重裝載方式時(shí),能對(duì)其編程為向上或向下計(jì)數(shù)方式,這個(gè)功能可通過(guò)特殊功能寄存器T2CON的DCEN 位(允許向下計(jì)數(shù))來(lái)選擇的。復(fù)位時(shí),DCEN 位置“0”,定時(shí)器2 默認(rèn)設(shè)置為向上計(jì)數(shù)。當(dāng)DCEN置位時(shí),定時(shí)器2 既可向上計(jì)數(shù)也可向下計(jì)數(shù),這取決于T2EX 引腳的值,當(dāng)DCEN

29、=0 時(shí),定時(shí)器2 自動(dòng)設(shè)置為向上計(jì)數(shù),在這種方式下,T2CON 中的EXEN2 控制位有兩種選擇,若EXEN2=0,定時(shí)器2 為向上計(jì)數(shù)至0FFFFH 溢出,置位TF2 激活中斷,同時(shí)把16 位計(jì)數(shù)寄存器RCAP2H 和RCAP2L重裝載,RCAP2H 和RCAP2L 的值可由軟件預(yù)置。若EXEN2=1,定時(shí)器2 的16 位重裝載由溢出或外部輸入端T2EX 從1 至0 的下降沿觸發(fā)。這個(gè)脈沖使EXF2 置位,如果中斷允許,同樣產(chǎn)生中斷。定時(shí)器2 的中斷入口地址是:002BH 0032H。當(dāng)DCEN=1 時(shí),允許定時(shí)器2 向上或向下計(jì)數(shù)。這種方式下,T2EX 引腳控制計(jì)數(shù)器方向。T2EX 引腳

30、為邏輯“1”時(shí),定時(shí)器向上計(jì)數(shù),當(dāng)計(jì)數(shù)0FFFFH 向上溢出時(shí),置位TF2,同時(shí)把16 位計(jì)數(shù)寄存器RCAP2H 和RCAP2L重裝載到TH2 和TL2 中。 T2EX 引腳為邏輯“0”時(shí),定時(shí)器2 向下計(jì)數(shù),當(dāng)TH2 和TL2 中的數(shù)值等于RCAP2H 和RCAP2L中的值時(shí),計(jì)數(shù)溢出,置位TF2,同時(shí)將0FFFFH 數(shù)值重新裝入定時(shí)寄存器中。當(dāng)定時(shí)/計(jì)數(shù)器2 向上溢出或向下溢出時(shí),置位EXF2 位。波特率發(fā)生器當(dāng)T2CON(表3)中的TCLK 和RCLK 置位時(shí),定時(shí)/計(jì)數(shù)器2 作為波特率發(fā)生器使用。如果定時(shí)/計(jì)數(shù)器2 作為發(fā)送器或接收器,其發(fā)送和接收的波特率可以是不同的,定時(shí)器1 用于其

31、它功能。若RCLK 和TCLK 置位,則定時(shí)器2工作于波特率發(fā)生器方式。波特率發(fā)生器的方式與自動(dòng)重裝載方式相仿,在此方式下,TH2 翻轉(zhuǎn)使定時(shí)器2 的寄存器用RCAP2H 和RCAP2L 中的16位數(shù)值重新裝載,該數(shù)值由軟件設(shè)置。在方式1 和方式3 中,波特率由定時(shí)器2 的溢出速率根據(jù)下式確定:方式1和3的波特率=定時(shí)器的溢出率/16定時(shí)器既能工作于定時(shí)方式也能工作于計(jì)數(shù)方式,在大多數(shù)的應(yīng)用中,是工作在定時(shí)方式(C/T2=0)。定時(shí)器2 作為波特率發(fā)生器時(shí),與作為定時(shí)器的操作是不同的,通常作為定時(shí)器時(shí),在每個(gè)機(jī)器周期(1/12 振蕩頻率)寄存器的值加1,而作為波特率發(fā)生器使用時(shí),在每個(gè)狀態(tài)時(shí)間

32、(1/2 振蕩頻率)寄存器的值加1。波特率的計(jì)算公式如下:方式1和3的波特率=振蕩頻率/32*65536-(RCP2H,RCP2L)式中(RCAP2H,RCAP2L)是RCAP2H 和RCAP2L中的16 位無(wú)符號(hào)數(shù)。定時(shí)器2 作為波特率發(fā)生器使用的電路如圖7 所示。T2CON 中的RCLK 或TCLK=1 時(shí),波特率工作方式才有效。在波特率發(fā)生器工作方式中,TH2 翻轉(zhuǎn)不能使TF2 置位,故而不產(chǎn)生中斷。但若EXEN2 置位,且T2EX 端產(chǎn)生由1 至0 的負(fù)跳變,則會(huì)使EXF2 置位,此時(shí)并不能將(RCAP2H,RCAP2L)的內(nèi)容重新裝入TH2 和TL2 中。所以,當(dāng)定時(shí)器2 作為波特率

33、發(fā)生器使用時(shí),T2EX 可作為附加的外部中斷源來(lái)使用。需要注意的是,當(dāng)定時(shí)器2 工作于波特率器時(shí),作為定時(shí)器運(yùn)行(TR2=1)時(shí),并不能訪(fǎng)問(wèn)TH2 和TL2。因?yàn)榇藭r(shí)每個(gè)狀態(tài)時(shí)間定時(shí)器都會(huì)加1,對(duì)其讀寫(xiě)將得到一個(gè)不確定的數(shù)值。然而,對(duì)RCAP2 則可讀而不可寫(xiě),因?yàn)閷?xiě)入操作將是重新裝載,寫(xiě)入操作可能令寫(xiě)和/或重裝載出錯(cuò)。在訪(fǎng)問(wèn)定時(shí)器2或RCAP2 寄存器之前,應(yīng)將定時(shí)器關(guān)閉(清除TR2)??删幊虝r(shí)鐘輸出定時(shí)器2 可通過(guò)編程從P1.0 輸出一個(gè)占空比為50%的時(shí)鐘信號(hào),如圖8 所示。P1.0 引腳除了是一個(gè)標(biāo)準(zhǔn)的I/O 口外,還可以通過(guò)編程使其作為定時(shí)/計(jì)數(shù)器2 的外部時(shí)鐘輸入和輸出占空比50%

34、的時(shí)鐘脈沖。當(dāng)時(shí)鐘振蕩頻率為16MHz 時(shí),輸出時(shí)鐘頻率范圍為61Hz4MHz。當(dāng)設(shè)置定時(shí)/計(jì)數(shù)器2 為時(shí)鐘發(fā)生器時(shí),C/T2(T2CON .1)=0,T2OE (T2MOD.1) =1,必須由TR2(T2CON.2)啟動(dòng)或停止定時(shí)器。時(shí)鐘輸出頻率取決于振蕩頻率和定時(shí)器2 捕獲寄存器(RCAP2H,RCAP2L)的重新裝載值,公式如下:輸出時(shí)鐘頻率=振蕩器頻率/4*65536-(RCP2H,RCP2L)在時(shí)鐘輸出方式下,定時(shí)器2 的翻轉(zhuǎn)不會(huì)產(chǎn)生中斷,這個(gè)特性與作為波特率發(fā)生器使用時(shí)相仿。定時(shí)器2 作為波特率發(fā)生器使用時(shí),還可作為時(shí)鐘發(fā)生器使用,但需要注意的是波特率和時(shí)鐘輸出頻率不能分開(kāi)確定,這

35、是因?yàn)樗鼈兺褂肦CAP2L和RCAP2L。UART AT89C52的UART 工作方式與AT89C51 工作方式相同。中斷AT89C52 共有6 個(gè)中斷向量:兩個(gè)外中斷(INT0 和INT1),3 個(gè)定時(shí)器中斷(定時(shí)器0、1、2)和串行口中斷。所有這些中斷源如圖9 所示。這些中斷源可通過(guò)分別設(shè)置專(zhuān)用寄存器IE 的置位或清0 來(lái)控制每一個(gè)中斷的允許或禁止。IE 也有一個(gè)總禁止位EA,它能控制所有中斷的允許或禁止。時(shí)鐘振蕩器AT89C52 中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1 和XTAL2 分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英晶體或陶瓷諧振器

36、一起構(gòu)成自激振蕩器,振蕩電路參見(jiàn)圖10。外接石英晶體(或陶瓷諧振器)及電容C1、C2 接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1、C2 雖然沒(méi)有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程序及溫度穩(wěn)定性,如果使用石英晶體,我們推薦電容使用30pF±10pF,而如使用陶瓷諧振器建議選擇40pF±10F。用戶(hù)也可以采用外部時(shí)鐘。采用外部時(shí)鐘的電路如圖10 右圖所示。這種情況下,外部時(shí)鐘脈沖接到XTAL1 端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2 則懸空。由于外部時(shí)鐘信號(hào)是通過(guò)一個(gè)2 分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以對(duì)

37、外部時(shí)鐘信號(hào)的占空比沒(méi)有特殊要求,但最小高電平持續(xù)時(shí)間和最大的低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。3.3其它外圍器件在設(shè)計(jì)原理部分,我們已經(jīng)講述了晶振電路、復(fù)位電路、單片機(jī)與上位機(jī)的RS-232相連部分的相關(guān)原理,這里就不再詳述。發(fā)光二極管是單片機(jī)控制的控制對(duì)象,實(shí)際應(yīng)用中,它連接光電隔離器和驅(qū)動(dòng)電路,可以作為電路開(kāi)關(guān)。圖3.2 發(fā)光二極管 圖3.2 LED顯示屏 4.系統(tǒng)軟件程序的簡(jiǎn)單設(shè)計(jì)4.1程序流程圖 開(kāi)始初始化讀取命令子程序發(fā)控制命令 圖4.1 程序流程圖4.2程序清單基于AT80C52單片機(jī)與上位機(jī)通信系統(tǒng)程序清單:RXBUFFSTART EQU 040H ;接受隊(duì)列首址(170

38、字節(jié))XBUFFSTART EQU 050H ;發(fā)送隊(duì)列首址(170字節(jié))RXBUFFEND EQU 0F0H ;接收緩沖區(qū)隊(duì)列末址CMDANDLEN EQU 0080H ;命令字符最大長(zhǎng)度 ;編程延時(shí)P15MS EQU 0C9HP1US EQU 0FEHP50US EQU 0D1H ;控制鍵BACKSPACE EQU 00B0H ;退后刪除鍵;內(nèi)部寄存器定義T2CON EQU 0C8H ;T2控制寄存器T2MOD EQU 0C9HTL2 EQU 0CCH ;T2計(jì)時(shí)寄存器低字節(jié)TH2 EQU 0CDH ;T2計(jì)時(shí)寄存器高字節(jié)TR2 EQU 0CAH ;T2啟動(dòng)位RCAP2L EQU 0CAH

39、 ;T2計(jì)數(shù)重載寄存器低字節(jié)RCAP2H EQU 0CBH ;T2計(jì)時(shí)重載寄存器高字節(jié)CHPCON EQU 0BFH ;在系統(tǒng)編程控制寄存器CHPENR EQU 0F6H ;編程狀態(tài)下MTP ROM的控制 ;控制標(biāo)志位定義TXOKFLAG EQU 04H ;發(fā)送OK標(biāo)記CMDSPACEFLAG EQU 06H ;命令刪除OK標(biāo)記RXCMDOKFLAG EQU 07H ;命令接受OK標(biāo)記 ;全局變量定義 ;串口RXBUFFTAIL EQU 3BH ;接受緩沖區(qū)尾指針RXBUFFHEAD EQU 3AH ;接受緩沖區(qū)頭指針RXBUFFLEN EQU 39H ;命令長(zhǎng)度計(jì)數(shù)BLKCHK EQU 35

40、HORG 0000HLJMP STARTORG 0030H ;中斷入口表RETIORG 00B0HRETIORG 0013HRETIORG 001BHRETIORG 0023HLJMP S_INTORG 002BHRETIORG 00B0H ;在線(xiàn)編程控制STARTAB: DB "ONLINE OPERATION SYSTEM",00DH ,00AHDB "INPUT?TO HELP", 0FFHFRQUTAB:DB 00DH,"0)38400 1)19200 2)9066 3)4800 4)EXIT INPUT:",0FFHB_TA

41、B:DB 0F6H,0ECH,0D9H,0B2H,0FFH;12.0000MHZ設(shè)置 ;功能控制CMDTAB:DB "?",00DH,00AH,0FFH,0FFH,0FFH,0FFHDB "0P5",00dh,00AH,0FFH,0FFH,0FFHDB "0P0",00DH,00AH,0FFH,0FFH,0FFHDB "0P1",00DH,00AH,0FFH,0FFH,0FFHDB "0P2",00DH,00AH,0FFH,0FFH,0FFHDB "0P3",00DH,00A

42、H,0FFH,0FFH,0FFHDB "SETB",00DH,00AH,0FFH,0FFHDB "APROM",00DH,00AH,0FFHDB 0FFH,0FFH,0FFH,0FFHHLPTAB: DB 00DH,00AHDB "在線(xiàn)幫助命令",00DH,00AHDB "*",00DH,00AHDB "*? online help CAMand",00DH,00AHDB "* SETB set mcu baud rate *0p2 opreation2*",00DH, 00

43、AHDB "op1 operation * 1 op3 operation 3*",00DH,00AHDB "* APROM in APROM* op4 operation 4*",00AHDB "*",0FFH,0FFHROMMARKTAB:DB 00DH,00AH,"pass:>",0FFHCMDERROR:DB 00DH,00AH,"bad CMDand",0FFHWARNTAB: DB 00DH,00AH,"are you sure(Y/N)",0FFHINPU

44、TTAB: DB 00DH,00AH," INPUT:",0FFHINPUTERROR: DB 00DH,00AH,"Error! input:",0FFH ;初始化程序START: MOV R0,#0F0H;把01到F0清零CLR ACLRAM: MOV R0,ADJNZ R0,CLRAMMOV P0,#0FFH;P0P3置1MOV P1,#0FFHMOV P2,#0FFHMOV P3,#0FFHMOV DPL, #00HMOV DPH,#00H;DPTR清零MOV PSW,#00H;標(biāo)志寄存器清零MOV SP,#F1H;設(shè)置堆棧指針MOV SCON,

45、#50HMOV TMOD,#11HMOV TH1,00DBHMOV TL1,#0FFHMOV A,#01HLCALL B_SETSETB ESSETB ET0SETB ET1MOV IP,#00HSETB TR1SETB TR2SETB RENCLR TICLR RISETB EAMOV RXBUFFHEAD,#RXBUFFSTARTMOV RXBUFFTAIL,#RXBUFFSTARTMOV DPTR,#STARTABLCALL DIS_FUNMOV DPTR,#ROMMARKTABLCALL CMD_GETMAIN: LCALL CMD_GET NOP CPL P2.0 LJMP MAIN

46、 NOP NOP NOP LJMP STARTCMD_GET: LCALL RG_CMD MOV A,RXBUFFTAIL XRL A,#RXBUFFSTART JZ RETT JNB RXCMDOKFLAG,RETTMOV A,RXBUFFLENCLR CSUBB A,#CMDANDLENJNC CMD_GERRORCLR AMOV R4,AMOV R5,#RXBUFFSTARTMOV DPTR,#CMDTABCMD_S: MOV A,R4MOVC A,A+DPTRINC R4MOV R6,AMOV A,R4JNC CMD_OUTCMD_OUT: MOV A,R5INC R5MOV R0,A

47、MOV A,R0MOV R7,AMOV A,R6XRL A,#0FFHJZ CMD_SENDMOV A,R7XRL A,R6JZ CMD_SMOV A,R6ADD A,#20HXRL A,R7JZ CMD_SMOV R5,#RXBUFFSTARTMOV A,R4MOV B,#CMDANDLENDIV ABMOV B,#CMDANDLENINC AMUL ABMOV R4,ALJMP CMD_SCMD_SEND: CLR AMOV RXBUFFTAIL, #RXBUFFSTARTCLR RXCMDOKFLAGMOV A,R4MOV B,#CMDANDLENDIV ABMOV B,ARL AADD

48、 A,BMOV DPTR, #CMD_TABJMP A+DPTRRETT: RETCMD_GERROR: MOV DPTR,#CMDERRORLCALL DIS_FUNCLR AMOV RXBUFFLEN,AMOV RXBUFFTAIL,#RXBUFFSTARTCLR RXCMDOKFLAGLJMP DISPROMRETCMD_TAB: LJMP HLPLJMP DISPROM LJMP FUN_5LJMP FUN_0LJMP FUN_1LJMP FUN_2LJMP FUN_3LJMP FUN_4LJMP FUN_SETLJMP FUN_APROMFUN_0:CPL P2.0LCALL S_I

49、NTILJMP DISPROMFUN_1: CPL P2.1LCALL S_INTILJMP DISPROMFUN_2:CPL P2.2LCALL S_INTILJMP DISPROMFUN_3: CPL P2.3LCALL S_INTILJMP DISPROMFUN_4: CPL P2.4LCALL S_INTILJMP DISPROMFUN_5:CPL P2.5LCALL S_INTILJMP DISPROMHLP: MOV DPTR,#HLPTABLCALL DIS_FUNLCALL S_INTILJMP DISPROMFUN_SET: MOV DPTR,#FRQUTABLCALL DI

50、S_FUNLCALL S_INTILJMP DISPROMSET_LOOP: LCALL READWAITMOV R0,#RXBUFFSTARTMOV A,R0MOV R7,ADEC R7SET_LOOP1:INC R7MOV RXBUFFTAIL,#RXBUFFSTARTXRL A,R7JNZ SET_LOOP1MOV A,R0SUBB A,#30HMOV B,AMOV A,BXRL A,#04HJZ SET_ERRORCLR CSUBB A,#05HJNC SET_RLMOV A,BLCALL B_SETSET_ERROR: LCALL S_INTILJMP DISPROMSET_RL:

51、MOV RXBUFFTAIL,#RXBUFFSTARTMOV DPTR,#INPUTTABLCALL DIS_FUNMOV DPTR,#INPUTTABLCALL DIS_FUNLJMP SET_LOOPFUN_APROM: MOV DPTR,#WARNTABLCALL DIS_FUNMOV DPTR,#INPUTTABLCALL DIS_FUNAPROM_LOOP: MOV RXBUFFTAIL,#RXBUFFSTARTLCALL READWAITMOV R4,#59HLCALL C_CMPJZ CMD_GREADYMOV R4,#59HLCALL C_CMPJZ CMD_GREADYMOV

52、 R4,#4EHLCALL C_CMPJNZ READY_LOOPLCALL S_INTILJMP DISPROMCMD_GREADY: LCALL ENTER_PUTLCALL ENTER_PUTMOV CHPENR,#87HMOV CHPENR,#59HMOV CHPCON,#03HMOV TCON,#00HMOV T2CON,#00HMOV IP,#00HMOV IE,#82HMOV TL0,#0FBHMOV TH0,#0FFHMOV TMOD,#01HMOV TCON,#10HMOV PCON,#01HRETREADY_LOOP: MOV DPTR,#INPUTERRORLCALL D

53、IS_FUNLJMP APROM_LOOPB_SET: MOV DPTR,#B_TABCLR TR2MOVC A,A+DPTRMOV RCAP2L,ACLR ADEC AMOV TH2,AMOV RCAP2H,ASETB TR2RETS_INT: PUSH PSWPUSH ACCMOV PSW,#04HJBC RI,S_LOOPJNB TI,R_INTCLR TILJMP TXINFOS_LOOP: NOPR_DATA: MOV R0,RXBUFFTAILMOV A,SBUFXRL A,#BACKSPACEJNZ R_DATA1SETB CMDSPACEFLAGDEC RXBUFFLENINC

54、 AJNZ R_DATAB1CLR CMDSPACEFLAGINC RXBUFFLENR_DATAB1: DEC RXBUFFTAILMOV A,RXBUFFTAILINC AXRL A,RXBUFFSTARTJNZ R_INTCLR CMDSPACEFLAGINC RXBUFFTAILLJMP R_INTR_DATA1:INC RXBUFFLENINC RXBUFFTAILMOV A,RXBUFFTAILXRL A,#90HJZ CMD_ERRORMOV A,SBUFMOV R0,AXRL A,#0DHJZ CMD_GFLSHR_DATA2: MOV A,SBUFCLR TXOKFLAGMOV SBUF,AR_INT: POP ACCPOP PSWRETICMD_ERRO

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論