




已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
修平技術(shù)學(xué)院電機工程系 8051介紹老 師 : 林 振 漢學(xué) 生 : 張 世 旻學(xué) 號 : AD89039二 技 電 一 甲n 單晶片的優(yōu)點 由於單晶片是在一個晶片內(nèi),即包含了微電腦的基本架構(gòu),因此在控制的應(yīng)用上與多晶片比較顯然有較多的優(yōu)點:(1)指令易學(xué)。(2)電路體積小。(3)穩(wěn)定度較好。(4)成本低。(5)維修容易。(6)縮短開發(fā)時間。(7)適合大量生產(chǎn)。單晶片已大量應(yīng)用在工業(yè)控制與各類電器產(chǎn)品上,常見的有:可程式控制器防盜器、NC工具機、機器手臂、電子秤、繪圖機、數(shù)位板、滑鼠、無人搬運車、傳真機、印表機、自動販賣機、冷氣機、微波爐、單槽洗衣機、電磁爐、汽車自動化、電子玩具、電腦鍵盤。 n 單晶片的應(yīng)用 單晶片的應(yīng)用可說是無遠弗界,而且一直在增加中,因此對於單晶片的學(xué)習(xí),如果能與行業(yè)結(jié)合,無論是那一種行業(yè),相信都有機會為單晶片的應(yīng)用開展新的領(lǐng)域。n 記憶體結(jié)構(gòu)單晶片系統(tǒng)程式儲存在程式記憶體(ROM),一般8051/52提供48K Bytes程式記憶體。使用者將編輯好的程式,經(jīng)過組譯(Assembler)、連結(jié)(Link)後,燒錄到單晶片的ROM。如果採用89C51晶片,可重複燒錄多次,每次燒錄可將前一次燒錄的程式自動清除。若採用8031晶片,由於本身沒有內(nèi)建ROM,所以必須採外部擴充記憶體。有關(guān)擴充外部記憶體的方法不在本書討論的範圍,請自行參考其它單晶片的書籍。資料記憶體(RAM)是單晶片在執(zhí)行程式時,儲存處理資料的地方。一般8051/52提供128256 Bytes資料記憶體。其中又可將它們區(qū)分為下列幾項功能的暫存器與記憶體區(qū):n 001FH的32個位元組可分為四個暫存器庫,分別為RB0、RB1、RB2、RB3。每個暫存器庫有8個暫存器,分別為R0、R1、R2、R3、R4、R5、R6、R7。n 202FH 的16位元(2 BYTES)可做直接位元定址,例如SETB 20H.0、CLR 20H.1。n 307FH 80個位元組的記憶體區(qū)又稱為”使用者RAM”,可以直接定址存取資料,同時也可以由使用者透過設(shè)定SP,自定堆疊資料區(qū)。n 80FFH的128個位元組資料,8031/8051晶片沒有提供。在8031/8052晶片可做間接定址資料區(qū),或是可直接定址的狀態(tài)暫存器(SFR)使用。其中包括P0、P1、P2、P3埠的對應(yīng)暫存器,以及稍候我們作UART通訊功能會用到的SCON串列控制暫存器、與計時器/計數(shù)器控制暫存器。熟悉這些記憶體的結(jié)構(gòu),對撰寫單晶片程式會有很大的幫助。讀者想自行撰寫或修改單板微電腦的系統(tǒng)監(jiān)督程式,最好能下點工夫,將這些記憶體的功能與結(jié)構(gòu)做充分的了解。n 接腳說明埠0 埠1 埠2 埠3 RST ALE/PROG PSEN EA/Vpp XTAL1 XTAL2Vcc :正電源輸入端Vss :電路之接地端埠0:埠0是一個8位元開洩極(Open Drain)雙向I/O埠,因為是開洩極輸出埠,所以它可以沈入8個 LS TTL負載。如將1寫入埠0時,會使那支腳I/O變成浮接狀態(tài),在此狀態(tài)下可將它看成高阻抗的輸入。 當(dāng)存取外部記憶體的資料時,埠0也當(dāng)作資料匯流排和位址匯流排的低階八位元的多工器。在這種狀況下,當(dāng)輸出1的信號時它是使用內(nèi)部較強的提升電路。在內(nèi)部EPROM或ROM的資料被讀出時也是透過埠0,此時外部必須提供提升電路。埠1:埠1也是8位元內(nèi)部帶有提升電路的雙向I/O埠,埠1的輸出緩衝器可以沈入/推出4個LS TTL的負載。若將1寫入埠1的接腳時,則此腳的電位就由內(nèi)部的提升電路拉為高電位,而在此狀態(tài)下就可以將它當(dāng)作輸入使用。埠1的接腳若由外部電路將它拉至低電位時,將會經(jīng)由提升電路推出電流。 在8052裡,P.0和P.1也當(dāng)作T2和T2EX使用,T2是計時器2的外部輸入端。T2EX則是計時器2的捕獲(Capture)模式的觸發(fā)輸入端。埠2:埠2也是8位元內(nèi)部帶有提電路的雙向I/O埠,埠2的輸出緩衝器也可以沈入/推出4個LS TTL的負載。在存取外部16位元的記憶體時,埠2會輸出高階8位元的位址信號。 在作8751H內(nèi)部PEPROM的程式燒錄時,也是由埠2接收高階的位址信號。埠3:埠3也是8位元內(nèi)部帶有提升電路的雙向I/O埠,在MCS-51族裡,它們也當(dāng)作其它的特殊功能用,茲將其列出如下:P3.0 RXD (串列輸入埠)P3.1 TXD (串列輸出埠)P3.2 INTO (第0外部中斷)P3.3 INTl (第1外部中斷)P3.4 TO (第0計時器之外部輸入端)P3.5 Tl (第1計時器之外部輸入端)P3.6 WR (外部資料記憶體之寫出激發(fā)信號)P3.7 RD ( 外部資料記憶體之讀入激發(fā)信號)埠3輸出緩衝器也可以推出/沈入4個LS TTL負載。RST:重置輸入端。在振盪器工作時,在這支腳上維持兩個機械週期的高電位時,可將cpu重置。ALE/PROG:作外部記憶體存取時,輸出鎖住位址低階位元組的脈波。ALB是以1/6振盪頻率的定速率輸出脈波,就連CPU未存取外部記憶體時也照常輸出,因此也可以將此腳當(dāng)作外部脈波源使用。 但是存取外部資料記憶體時會跳過一個ALE週期。這支腳在作EPROM的燒錄時也當(dāng)作燒錄脈波的輸入端,即PROG。PSEN:(Program Store ENable),是件外部程式記憶體的讀入激發(fā)信號,當(dāng)CPU執(zhí)行到外部程式記憶體時,PSEN會每個機械週期動作兩次(在作外部資料記憶體的存取時,會跳過兩個PSEN,此時除外),當(dāng)執(zhí)行內(nèi)部程式記憶體時PSEN不會動作。EA/Vpp:當(dāng)EA為高電位時,CPU執(zhí)行內(nèi)部的程式記憶體(除了805lAH超過OFFFH,或8052超遏1FFFH時除外),若而為低電位時,則不管程式計數(shù)器的值為多少,一律強迫CPU執(zhí)行外部記憶體的指令。 在803lAH和 8032時,而必須完整的接至地。在燒錄EPROM的內(nèi)容時,這支腳是接收燒錄電壓Vpp。XTAL1 :輸入到反相振盪放大器。XTAL2 :反相振盪放大器輸出端。n 指令集指令分類 MCS-51共有111個指令,若以指令碼的長度分類,單位元組指令有49個,雙位元組指令有45個,三位元組指令有17個;若以功能來區(qū)分的話,有下列五種:算術(shù)運算指令24個。資料轉(zhuǎn)移指令28個。邏輯運算指令25個。布林變數(shù)處理指令17個。控制轉(zhuǎn)移指令17個。 指令的格式為操作碼在前,運算元在後;若運算元有兩個時,則目的運算元在前,來源運算元在後,兩個運算元之間以逗號分開;若有第三個運算元時則加在來源運算元的後面,若無運算元只寫操作碼如下所示:無運算元指令格式:操作碼 例:NOP單一運算元指令格式:操作碼 運算元 例:INC A雙運算元指令格式:操作碼 目的運算元,來源連算元 例:MOV R0,#30三運算元指令 格式:操作碼 目的運算元,來源連算元,第三運算元例:CJNE A,#2O,NEXTn 各項指令的特點 算術(shù)運算指令具有下列特點:A具有加,減,乘,除四種數(shù)學(xué)運算功能。B使用八位元長度運算元。C具有無正負號之算數(shù)運算。D利用溢位旗標,可以無正負號或具正負號之二進整數(shù)作 加法與減法運算。E. 算術(shù)處理可直接以十進制(BCD)方式表示。1加法運算(Addition)INC : 把來源運算元加一,並將結(jié)果存回原運算元。ADD : 把累積器A與來源運算元的值相加,結(jié)果存入累積器A。ADDC : 把累積器A,進位位元C與來源運算元相加,且將結(jié)果存入累 積器A。DA : 調(diào)整兩個雙位數(shù)十進制數(shù)字相加後的和,把調(diào)整後的數(shù)值 存回累積器A,若結(jié)果大於99則進位位元CY=l,否則CY=0。2減法運算(Subtraction)SUBB : 把A減來源運算元,若CY=l則把結(jié)果再減一,再存入A中。DEC : 把來源運算元減一,並將結(jié)果存回原運算元。3乘法運算(Multiplication)MUL : 執(zhí)行累積器A與暫存器B無正負號相乘,結(jié)果為雙位元組,低 位元組存入A高位元組存入B,若B=O則溢位旗標0V=0,反之 0V=1,進位旗標CY=0。4除法運算(Division)DIV : 執(zhí)行A除以B的無正負號除法,並將所得的商存入A中,餘數(shù)存 入B中。資料轉(zhuǎn)移指令分為三類:A.一般用途轉(zhuǎn)移。B.以累積器為目的運算元的轉(zhuǎn)移。C.以位址為目的運算元的轉(zhuǎn)移。1一般用途轉(zhuǎn)移MOV : 將來源運算元的一個位元組或一個位元載入目的運算元中。PUSH : 遞增暫存器SP,再從來源運算元轉(zhuǎn)移一個位元組到目前SP所定址的堆疊位址內(nèi)。POP : 由目前SP所定址的堆疊位址中轉(zhuǎn)移一個位元組到目的運算元,然後遞減SP的值。2以累積器為目的運算元的轉(zhuǎn)移XCB : 把來源運算元與A的內(nèi)容互換。XCHD : 把來源運算元與A的低半位元組互換。HOVX : 把外部資料記憶體的內(nèi)容載入A中。MOVC : 以A內(nèi)容作為指標,把基底暫存器DPTR或PC加上 指標為位址之內(nèi)容載人A中。3以位址為目的運算元的轉(zhuǎn)移MOV DPTR,#data:載入16位元立即資料到DPTR。邏輯運算指令包括:A.單運算元指令。B.雙運算元指令。1.單運算元指令CLR : 把A或可直接定址的位元清除為零。SETB : 把直接定址的位元設(shè)定為1。CPL : 把A或可直接定址的位元取補數(shù)。RL : 把A的內(nèi)容左旋轉(zhuǎn)。RLC : 把A的內(nèi)容與C左旋轉(zhuǎn)。RR : 把A的內(nèi)容右旋轉(zhuǎn)。RRC : 把A的內(nèi)容與C右旋轉(zhuǎn)。SWAP : 互換A中0-3位元與4-7位元的資料。2雙運算元指令A(yù)NL : 來源運算元與目的運算元做AND運算。ORL : 來源運算元與目的運算元做OR運算。XRL : 來源運算元與目的運算元做EX-OR運算。布林變數(shù)處理指令CLR : 把可直接定址的位元清除為零。SETB : 把直接定址的位元設(shè)定為1。CPL : 把可定址的位元或C取補數(shù)。ANL : 把可定址的位元與C作AND運算。ORL : 把可定址的位元與C作OR運算。MOV : 可定址的位元與C的轉(zhuǎn)移。JC,JNC,JB,JNB,JBC:位元判斷然後跳躍,只限在一頁範圍內(nèi) (-128+127)的跳越。控制轉(zhuǎn)移指令包括三類:A.無條件呼叫,返回,及跳越。B.條件式跳越。C.中斷返回。1.無條件呼叫,返回,及跳越ACALL : 目標位址在目前2K頁內(nèi)的副程式呼叫。LCALL : 目標位址在整個64K程式記憶體的副程式呼叫。RET : 副程式呼叫的返回指令。AJMP : 目標位址在目前2K頁內(nèi)的跳躍。LJMP : 目標位址在整個64K程式記憶體內(nèi)的跳越。SJMP : 目標位址在一個頁內(nèi)的短程跳越。JMP A+DPTR : 在64K程式記憶體內(nèi)的跳越。2條件式跳躍 一某特定位元或位元組的狀態(tài)為跳躍依據(jù)有九種,其中五種與布林變數(shù)處理指令所述相同。JZ : 若A=0則跳越。JNZ : 若A0則跳越。JC : 若C=1則跳越。JNC : 若C=0則跳越。JB : 若可直接定址的位元為1則跳越。JNB : 若可直接定址的位元為零則跳越。JBC : 若可直接定址的位元為1則跳越,並將該位元清為零。CJNE : 比較第一運算元與第二運算元,若不相等則跳越到第三運 算元所指定的位址去。DJNZ : 遞減第一運算元若好減結(jié)果不等於零,則跳越到第二運算 元所指定的位址去。3中斷返回RETI : 中斷副程式的返回指令。n 布林變數(shù)運算指令CLR C 把進位位元清為0CLR bit 把直接定址位元清除為0SETB C 把進位位元設(shè)為1SETB bit 把直接定址位元設(shè)為1CPL C 把進位位元取補數(shù)CPL bit 把直接定址位元取補故ANL C,bit 把直接定址位元的內(nèi)容AND入CANL C,/bit 以直接定址位元的補數(shù)AND入CORL C,bit 把指定位元OR入進位位元ORL C,/bit 來源位元的補數(shù)OR入進位位元MOV C,bit 把指定位元的值載入進位位元MOV bit,C 把進位位元值載入指定位元JC rel 若進位位元為1,則跳越到相對位址relJNC rel 若進位位元為0,則跳越到相對位址relJB bit,rel 若指定址位元為1,則跳到相對位址relJNB bit,rel 若指定位元為0,則跳越到相對位址relJBC bit,rel 若指定的位元為1,則將該位元清為0並跳越到相對位址reln 程式跳越指令A(yù)CALL addr11 在2K位元組內(nèi)絕對呼叫LCALL addr16 在64K位元組內(nèi)絕對呼叫RET 一般副程式的返回指令RETI 中斷副程式的返回指令A(yù)JMP addr11 在2K位元組內(nèi)的絕對跳越LJMP addr16 在64k位元組的長程跳越SJMP rel 在一頁(256位元組)內(nèi)的短程跳越JMP A+DPTR 間接跳到資料指向器與累積器相加所得的位址去 JZ rel 若累積器內(nèi)容為0,則跳到相對位址MlJNZ rel 若累積器不為0,則跳到相對位址relCJNZ A,direct,rel 直接位址內(nèi)容與A比較,不相等則跳到相對位址relCJNE A,#data,rel 立即資料與A比較,不相等則跳越到相對位址rel CJNE Rn,#data,rel 立即資料與暫存器比較,不相等則跳越到相對位址rel CJNE Ri,#data,rel 立即資料與Ri所定址的內(nèi)容比較,不相等則跳越到相對位址rel DJNZ Rn,rel 遞減暫存器,若不等於0則跳越到相對位址relDJNZ direct,rel 遞減直接位址內(nèi)容,若不等於0則跳越到相對位址rel NOP 不做任何動作n 資料轉(zhuǎn)移指令MOV A,Rn 把暫存器的內(nèi)容載入累積器MOV A,direct 把直接位址的內(nèi)容載入累積器MOV A,Ri 把Ri所定址的內(nèi)容載入累積器MOV A,#data 把立即資料載入累積器MOV Rn,A 把累積器的內(nèi)容載入暫存器MOV Rn,direct 把直接位址的內(nèi)容載入暫存器MOV Rn,#data 把立即資料載入暫存器MOV direct,A 把累積器的內(nèi)容載入直接位址MOV direct,Rn 把暫存器的內(nèi)容載入直接位址MOV direct,diret 把直接位址的內(nèi)容載入直接位址MOV direct,Ri 把Ri所定址的內(nèi)容載入直接位址MOV direct,#data 把立即資料載人直接位址MOV Ri,A 把累積器的內(nèi)容載入Ri所定址的位址MOV Ri,direct 把直接位址的內(nèi)容載入Ri所定址的位址MOV Ri,#data 把立即資料載入Ri所定址的位置MOV DPTR,#data16 把16位元立即資料載人資料指向器MOVC A,A+DPTR 以資料指向器與A的內(nèi)容相加為位址的內(nèi)容載人AMOVC A,A+PC 以A的內(nèi)容加PC為位址,把該位址內(nèi)容載入AMOVX A,Ri 把Ri所定址的外部資料RAM內(nèi)容載入AMOVX A,DPTR 把DPTR所定址的外部RAM內(nèi)容載入AMOVX Ri,A 把累積器內(nèi)容載人Ri所定址的外部RAMMOVX DPTR,A 把累積器內(nèi)容載入DPTR所定址的外部RAMPUSH direct 把直接位址的內(nèi)容推入堆疊POP direct 取出存放在堆疊區(qū)的位元組XCH A,Rn 暫存器與A的內(nèi)容互換XCH A,direct 直接定址與累積器的內(nèi)容互換XCH A,Ri 把Ri所定址的內(nèi)容與累積器內(nèi)容互換XCHD A,Ri 把Ri所定址的內(nèi)容與累積器的低4位元互換n 算術(shù)運算指令A(yù)DD A,Rn 把Rn的內(nèi)容加到AADD A,direct 把直接定址的RAM內(nèi)容加到AADD A,Ri 把Ri所定址的RAM內(nèi)容加到AADD A,#data 把立即資料加到AADDC A,Rn 把Rn的內(nèi)容與進位位元加到AADDC A,direct 把直接定址的內(nèi)容與進位位元加到AADDC A,Ri 把間接定址的內(nèi)容與進位位元加到AADDC A,#data 把立即資料與進位位元加到ASUBB A,Rn 把累積器內(nèi)容減去暫存器與進位位元內(nèi)容SUBB A,direct 把累積器內(nèi)容減去直接位置與進位位元內(nèi)容SUBB A,Ri 把累積器內(nèi)容減Ri所定址的內(nèi)容與進位位元SUBB A,#data 把累積器內(nèi)容減去立即資料與進位位元lNC A 累積器內(nèi)容加1INC Rn 暫存器內(nèi)容加1INC direct 直接定址內(nèi)容加1n 邏輯運算指令A(yù)NL A,Rn 把Rn的值A(chǔ)ND入AANL A,direct 把直接位址的內(nèi)容AND入AANL A,Ri 把Ri所定址的內(nèi)容AND入AANL A,#data 把立即資料AND入AANL direct,A 把A的內(nèi)容AND入直接位址中ANL direct,#data 把立即資料AND入直接位址中ORL A,Rn 把暫存器內(nèi)容OR入AORL A,direct 把直接位址的內(nèi)容OR入AORL A,Ri 把Ri所定址的內(nèi)容OR入AORL A,#data 把立即資料OR入AORL direct,A 把累積器的內(nèi)容OR入直接位址ORL direct,#data 把立即資料OR入直接位址XRL A,Rn 把暫存器XOR入累積器XRL A,direct 把直接定址內(nèi)容XOR入累積器XRL A,Ri 把Ri所定址的內(nèi)容XOR入累積器n 8255硬體電路在8051單晶片上使用8255做為擴充輸出入埠,最簡單的方式就是使用一個八位元的輸出入埠(如P0埠)與8255的資料匯流排(D0D7)相接,另外使用3個位元的輸出埠(如P2.0,P2.1,P2.2埠)做為8255的位址線(A0,A1)與RESET的輸入接腳。不過這種方式,比較沒有彈性,而且電路不容易擴充。因此我們的系統(tǒng)改用單晶片的P0埠做為位址/資料多功匯流排,並考慮位址栓鎖與使用解碼電路,提供更多的輸出入埠,給更多的8255或其它輸出入裝置使用。電路如下圖,規(guī)劃需注意的事項如下:n 8255的資料匯流排(D0D7)接到8051的P0埠。n 8255的/WR,/RD接腳接到8051的/WR,/RD。n 使用74LS373栓鎖器用來栓鎖位址,D0D7與8051的P0埠相連接,OC接腳與8051的ALE/P相接,Q0,Q1兩支低位址接腳直接接到8255的A0、A1兩條位址線,Q5Q7這三支接腳接到74LS138進行位址解碼動作。Q2、Q3、Q4這三支接腳不用。n 使用74LS138做位址解碼,A、B、C三個輸入接腳接74LS138的,Q5Q7接腳。輸出的Y0Y7可分別接到8顆8255的CS的接腳。圖:單晶片使用8255A擴充電路(改直?。﹏ 計算8255的I/O位址若只用一顆8255,將74LS138的Y7解碼線接到8255的CS接腳,當(dāng)8051的P0埠的D7、D6、D5輸出全為高電位(1),經(jīng)由74LS373到74LS138的A、B、C接腳,會使得Y7輸出一個低電位給8255的CS接腳使其致能。此外,8051的P0埠的D1、D0兩個接腳送給8255的A1、A0位址線,可以決定8255的四個暫存器位址。因此,我們很容易從表2-4中得知,每個8255暫存器對應(yīng)的位址分別為E0H,E1H,E2H,E3H。記住了,這就是我們等一下寫單晶片程式會用到的位址資料。表8255位址編碼8051輸出腳D7D6D5D4D3D2D1D0HEX74373連接腳ABCA1A0-8255- PA埠11100000E0H8255- PB埠11100001E1H8255-PC埠11100010E1H8255-控制埠11100011E2Hn 8255輸出控制範例規(guī)劃好8255,就可以直接對單板微電腦的8255做輸出入控制。為了確定所有的硬體連接與軟體設(shè)定都沒有問題,我們可以先做一個簡單的測試範例,以檢驗8255輸出是否正常。 n 可規(guī)劃輸出入裝置-8255單板微電腦主要的輸出入界面,選用一般常見的8255A可規(guī)劃輸出入晶片。8255A擁有三個八位元的可程式並列式介面晶片,即具有24個可由程式規(guī)劃的輸出入埠。圖2-4顯示8255A晶片接腳圖與內(nèi)部規(guī)劃方塊圖,接腳功能如表2-2。圖2.4:8255A接腳圖表2.2:8255接腳功能接腳功能D0D7(3427腳8位元雙向I/O資料匯流排A0,A1(9,8腳)位址選擇線,選擇 PA,PB,PC,控制暫存器RD/WR(5,36腳)讀取/寫入致能, 低電位且CS=0, 執(zhí)行讀取/寫入)CS(6腳)晶片選擇, 低電位(CS=0),8255晶片才能執(zhí)行Vcc/GND(26,7腳)電源與接地接腳RESET(35腳)高電位動作, 重置時,清除PA,PB,PC,控制暫存器PA0PA7(41,4037腳)PA埠,具有8位元資料輸出閂鎖/緩衝, 輸出閂鎖,PB0PB7(1825腳)PB埠,具有8位元資料輸出閂鎖/緩衝, 輸出閂鎖PC0PC7(1710腳)PA埠,具有8位元資料輸出閂鎖/緩衝, 輸出閂鎖n 8255內(nèi)部結(jié)構(gòu)與功能可規(guī)劃輸出入晶片8255的內(nèi)部結(jié)構(gòu)可分為下四個部份:n 資料匯流排緩衝器:三態(tài)雙向8位元的資料傳輸區(qū),透過”讀取”與”寫入”,傳送或接收控制命令與輸出入資料。n 讀/寫控制邏輯:其功能用來控制資料與控制字組的傳送,就A0,A1,/RD,/WR,/CS與RESET接腳取得訊號,執(zhí)行各種不同的讀/寫動作。讀寫控制如表2-3。n A組與B組控制單元:將PA埠、PB埠、PC埠劃分為A、B兩組。PA埠屬A組,PB埠屬B組,PC埠的高四位元屬A組,低四位元屬B組。這兩組的工作模式由控制暫存器設(shè)定的控制字組決定。n 輸出入埠:包括三個八位元輸出入埠PA埠、PB埠、PC埠。表2-3位址線與讀寫控制線對應(yīng)的輸出入功能A1A2/RD/WR/CS功能說明11100資料匯流排傳送到控制暫存器(規(guī)劃8255功能)00010PA埠 = 資料匯流排 (讀取PA埠資料)01010PB埠 = 資料匯流排 (讀取PB埠資料)10010PC埠 = 資料匯流排 (讀取PC埠資料)00100資料匯流排 = PA埠(資料寫入PA埠資料)01100資料匯流排 = PB埠(資料寫入PB埠資料)10100資料匯流排 = PC埠(資料寫入PC埠資料)1資料匯流排為高阻抗11010禁止動作110資料匯流排為高阻抗n 程式編譯與連結(jié) 8051編譯器與連結(jié)器的版本甚多,在此介紹較常見的一種,也是在學(xué)校所用的。 X8051:由2500 A.D. Software , Inc.所發(fā)行。指令格式:(單行)X8051 原始檔( 檔名 .ASM )目的檔( 檔名 .OBJ )參數(shù)參數(shù)說明:括號內(nèi)為3.0以前的版本N (NL) : 列表檔無輸出T (TI ) : 列表檔輸出到螢?zāi)籇 (DD) : 列表檔輸出到磁碟E (EO ) : 僅列印錯誤的地方L (DL ) : 產(chǎn)生含印表機控制的列表檔P (LP ) : 列表檔由印表機輸出例 : 設(shè)組合語言程式的檔名為 TEST51.ASM在DOS下輸入 :AX8051 出現(xiàn)以下畫面 805l Macro Assembler - Version 4.03a Copyright (C) 1985 by 250O A.D. Software, IncListing Destination (N, T, D, E, L, P, = N ) : D L Generate Cross Reference ? (Y/N = No) : Input Filename : TEST5l.asm Output Filename : Ctrl S = Stop OutputCtrl Q = Start OutputEsc C = Stop AssemblyEsc T = Terminal OutputEsc P = Printer OutputEsc D = Disk OutputEsc I = Multiple OutputEsc N = No Output2500 A.D. 805l Macro Assembler - Version 4.03a- Input Filename : TEST51.asm Output Filename : TEST51.objLines Assembled : l9 Assembly Error : 0 編譯完成後產(chǎn)生TEST51.OBJ與TEST51.LST程式連結(jié):ALINK 出現(xiàn)以下畫面2500 A.D. Linker Copyright (C) 1985 - Version 4.03aInput Filename :TEST5l.OBJ Enter Offset For CODE : 0 Input Filename : Output Filename : Library Filename : Options (D,S,A,M,Z,X,H,E,T,l,2,3, = Default) ; 選X則產(chǎn)生.TSK檔 預(yù)設(shè)為H產(chǎn)生.HEX檔* LOAD MAP*Section Name Starting Address Ending Address Size*TEST51.obj CODE 0000 0108 0109* Linker Output Filename : TEST51.tsk Disk Listing Filename : Symbol Table Filename : Link Errors : 0 Output Format :Executable 使用X8051 3.0以前的版本時,使用連結(jié)器 LINK1 產(chǎn)生檔名.TSK使用連結(jié)器 LINR2 產(chǎn)生檔名.HEX使用 2500 A.D.時編譯器與連結(jié)器的版本應(yīng)相同才能使用。n 可調(diào)整之時鐘製作1 ;*2 ;define data RAM3 ;*4 ;FOR 80515 ;6 DisplayBuffer equ 30h ;8 byte7 ScanCounter equ 38h8 OneSecondCounter equ 39h9 Hourse equ 3ah10 Minuite equ 3bh11 Second equ 3ch12 ;13 SecondKey reg p3.014 MinuiteKey reg p3.115 HourseKey reg p3.216 ;*17 org 0h18 jmp Reset19 org 0bh20 jmp TimerInt21 Reset:22 mov sp,#70h23 mov ScanCounter,#024 mov Hourse,#12h25 mov Minuite,#00h26 mov Second,#00h27 ;*28 ;* use Timer 0 Mode 1 *29 ;* 4000us interrupt *30 ;*31 mov tmod,#00000001b32 mov th0,#(65536-4000)33 mov tl0,#(65536-4000)78 mov tl0,#(65536-4000)79 push a80 push psw81 setb rs0 ;select RB1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電商直播行業(yè)主播與品牌合作模式創(chuàng)新趨勢及風(fēng)險控制策略研究報告
- 八年級期中考試家長會課件
- 保育員考試題目及答案
- 安全員b證試題及答案
- 安全試題及答案大題
- 安全生產(chǎn)試題及答案2024
- 生物安全培訓(xùn)課件
- 中國發(fā)展簡史課件
- 中醫(yī)推拿科培訓(xùn)課件
- 中國南方區(qū)課件
- 新產(chǎn)品評審管理辦法
- (參考)菲達公司國內(nèi)電除塵器業(yè)績表
- 游泳池水質(zhì)檢測記錄表
- 大學(xué)生職業(yè)生涯規(guī)劃與就業(yè)指導(dǎo)教案第5講:興趣探索
- 門店電表記錄表
- 七年級勞技 花卉種植 花卉用途 PPT學(xué)習(xí)教案
- 隧道換拱專項施工方案
- 國際金融托馬斯普格爾復(fù)習(xí)資料整理
- 基于單片機的報警器與旋轉(zhuǎn)燈設(shè)計(共21頁)
- 中國農(nóng)業(yè)銀行房地產(chǎn)押品價值評估操作模板
- JJG596-2012《電子式交流電能表檢定規(guī)程》
評論
0/150
提交評論