【正文】
。ORG 0030HMOV R0, 3BH ;給指定單元賦值 MOV A, R0 ;取十六進制數(shù)高四位ANL A, 0F0HSWAP A ACALL HEXASC ;調(diào)用轉(zhuǎn)換子程序 MOV 30H, A ;將高四位運算結(jié)果放到30H單元MOV A, R0 ;取十六進制數(shù)低四位ANL A, 0FHACALL HEXASC ;調(diào)用轉(zhuǎn)換子程序MOV 31H, A ;把低四位運算結(jié)果放到31H單元HEXASC: CJNE A,0AH,L1 ;子程序L1: JNC L2 ;A=0AH,轉(zhuǎn)L2ADD A, 30H ;A0AH,則A+30HRETL2: ADD A,37H ;A=0AH,則A+37HRET。2. 壓縮的BCD碼相減被減數(shù)和減數(shù)為壓縮BCD碼,分別存于R3和R4中,其差值也存進R3中。但是外部數(shù)據(jù)存儲器(XDATA)就只能使用DPTR、R0或者R1間接尋址。清除DPTR所指向的IDATA單元DJNZ R0, CLR_RAM 。二、實驗?zāi)康模喝?、實驗說明通過本實驗,學生可以了解單片機讀寫存儲器的讀寫方法,同時也可以了解單片機編成,調(diào)試方法,如何將存儲器塊內(nèi)容固定值?例程:清除片內(nèi)數(shù)據(jù)存儲器(DATA+IDATA)清除片內(nèi)數(shù)據(jù)存儲器(DATA+IDATA),即片內(nèi)從00H至FFH所有單元。(6)調(diào)試程序源程序編制好以后,必須上機調(diào)試。(1) 分析問題分析問題就是要熟悉和明確問題的要求,明確已知條件以及對運算與控制的要求,準確地規(guī)定要完成的任務(wù),建立數(shù)學模型。RS232三線式直接數(shù)據(jù)通信接口如表17所示。這樣的RS232電平和TTL邏輯電路(單片機)產(chǎn)生的電平是不一樣的,因此,PC機與單片機AT89C52之間必須經(jīng)過一定的電路轉(zhuǎn)換邏輯電平。如果采用完全獨立的兩套電源為數(shù)字電路和模擬電路分別供電,將顯著地增加電路的復雜性和成本。經(jīng)過C1001和C1002的濾波輸入到三端穩(wěn)壓器7905。 蜂鳴器驅(qū)動電路單片機口線的輸出低電平的驅(qū)動能力比高電平要強得多,但在保證符合邏輯電平時也只有5mA左右,不需要保證邏輯電平時(如驅(qū)動LED時可以有10多個mA)。利用顯示的位掃描,增加幾個口線就可以實現(xiàn)掃描(陣列)式鍵盤。如仿真實驗板上有8位數(shù)碼管,每位數(shù)碼管有8個 LED,如果采用靜態(tài)驅(qū)動方式,則需要88=64根口線來驅(qū)動。圖108給出了數(shù)據(jù)/程序存儲器62256的接口電路,圖中62256的端標為OE。J1用于引出實驗板上沒有使用的PB口4個引腳PB4~7。注意:單片機和絕大多數(shù)的器件低電平的驅(qū)動能力強但又很有限,因而段驅(qū)動采用低電平有效(LED發(fā)光)和選用共陽極LED數(shù)碼管。為了簡化電源的設(shè)計,仿真實驗板的電源部分采用了特殊的設(shè)計,這將在后面加以詳細地介紹。通常在PCB板上這兩個電容都要盡可能地靠近ADC0809參考電源輸入引腳安裝,以取得較好的效果[3]。圖33所示為模數(shù)轉(zhuǎn)換器ADC0809的接口電路。請注意74HC573的輸入端和輸出端分別順序排列在芯片兩段,特別方便PCB版布線,因此建議讀者采用74HC573作為地址鎖存器,而不要像有些書籍所給的74HC373[1]。這些數(shù)據(jù)在編程時是必不可少的依據(jù)。LED顯示是單片機應(yīng)用系統(tǒng)常用的顯示方式之一,而動態(tài)掃描LED是較難掌握的難點之一。. 4 并行接口芯片8255。圖21和22所示分別為實驗板的電路原理圖、PCB圖(見附錄)。(3)功能全,基本上具備單片機常用的接口,如ADC、DAC、存儲器、LED數(shù)碼管、鍵盤、并行接口、串行接口,等等。隨著單片機技術(shù)的發(fā)展,要求從業(yè)人員不僅有理論基礎(chǔ),還要有實踐能力,其教育市場十分廣闊。 experiment board。51系列單片機教學實驗板硬件設(shè)計摘要51系列單片機教學實驗板既是一塊用戶實驗板,又是一種功能強大而實用的單片機開發(fā)調(diào)試工具。實驗板;接口電路;匯編語言The hardware designed of 51 serial single chip processor teaching experiment boardABSTRACT51 serial single chip processor teaching experiment board is a user experiment board, and also a powerful and practical single chip processor develop and debug tools.Compared with traditional teaching experiment board it has following advantages :( 1) Cheap. (2) It is simple and convenient to use , so long as can carry on the experiment with a PC with RS232. ( 3) With plete function, possess the mon user interface of the basic single chip processor, the ADC block, the DAC block, the memory , HID(Human Interface Device, such as the LED and the key board) , parallel interface, serial interface , and so on.With this experiment board, the beginners can easily to grasp the principle and application of the MCU,be familiar with assemble languages , even the C51 languages. The character of on system debug can shorten the time to study Develop experiment board with emulation this, carry on to user source program realtime to debug online, can shorten construction period of the application system of the single chip processor greatly.Key words: single chip processor。* 有優(yōu)異的性能價格比.因此,單片機技術(shù)已經(jīng)成為各高校自動化、測控、電子技術(shù)等相關(guān)專業(yè)的必修課程,社會上對該技術(shù)的需求也與日俱增。(2)使用簡單方便,只要有帶RS232串口的PC機就能進行實驗。用本仿真開發(fā)實驗板,對用戶源程序進行實時在線調(diào)試,可極大地縮短單片機應(yīng)用系統(tǒng)的開發(fā)時間。單片機全部引腳都引出,可作為仿真插頭接口,還預(yù)置了若干譯碼輸出端口(地址線)以及數(shù)據(jù)線以便于用戶使用。. 7 動態(tài)掃描LED。表14和15分別給出了LED顯示器的顯示碼和位選碼。 圖31單片機AT89C52電路圖 Fig. 31 single chip processor of AT89C52 circuit picture 74HC573作為低位地址鎖存器,在ALE的作用下鎖存P0口輸出的低位地址。ADC0809由8路模擬開關(guān)、地址鎖存與譯碼器、8位A/D轉(zhuǎn)換器和三態(tài)輸出鎖存緩沖器組成。對ADC0809的參考電源輸入端采用一大一小兩個電容進行濾波:大電容(10mF電解電容)用于濾除低頻干擾,但由于大電解電容存在較大的分別電感,因而它濾除高頻干擾的效果反而不如小電容,因此并聯(lián)一個高頻性能好的小電容用于濾除高頻干擾。圖中AGND實際上是2~3V的電源。 8255的PA口和PB口用于動態(tài)地驅(qū)動LED數(shù)碼管,其中PA口用于驅(qū)動段信號,PB口用于驅(qū)動位信號。由于有三極管來驅(qū)動數(shù)碼管的位(公共極――陽極),因此限流電阻可以取較大的值。而62256只有一個讀信號,所以,在實驗板中采用和相與后接62256的端,稱為von Neumann接法。相比于靜態(tài)顯示方式(1根口線驅(qū)動一個LED),動態(tài)掃描方式需要的口線要少得多。顯示頻率過高,顯示程序耗時大幅度增加,編程困難,顯示亮度下降。這些芯片有CH45BC7280/81和ZLG7289A等。220V的交流電適配器輸出的12V直流由插座J1輸入。仿真實驗板的數(shù)字電路和模擬電路的電源線采用了各自走線的方法,以減少數(shù)字電路和模擬電路之間的相互干擾,特別是數(shù)字電路對模擬電路的干擾。在接收端,邏輯1電平為3V~15V,邏輯0電平為+3V~+15V,即允許發(fā)送端到接收端有2V的電壓降。有以上這三條線(TXD、RXD和信號地),單片機和PC機就可以分別對異步通信電路芯片編程,設(shè)置成不需要任何聯(lián)絡(luò)或握手信號、直接進行數(shù)據(jù)交換的方式。在總體硬件確定情況下,程序設(shè)計一般可按如下步驟進行。編寫員程序時,力求簡單明了,力求簡單明了層次清晰。 軟件實驗 存儲器清零一、實驗要求:指定存儲器中某塊的起始地址和長度,要求能將其內(nèi)容清零。清除累加器CLR_RAM: MOV R0, A 。SFR只能通過直接尋址來訪問,而IDATA區(qū)只能通過間接尋址來訪問。求兩數(shù)之和并存放在40H,41H單元中。例程:由十六進制數(shù)09的ASCII碼為30H39H和AF的ASCII碼為41H46H可知,如果十六進制數(shù)小于0AH,則像應(yīng)該數(shù)的ASCII碼為A+30H;如果該數(shù)等于或大于0AH,則相應(yīng)的ASCII碼為A+37H。跳轉(zhuǎn)到主程序 ORG 8030H 。修改源數(shù)據(jù)指針I(yè)NC R0 。同時部分數(shù)據(jù)存儲器被實驗板的監(jiān)控程序和用程序占用,編寫程序的時候要避開這些空間。在上一輪冒泡操作中比較次數(shù)DEC A 。指向后一個數(shù)據(jù)MOV A, R0 。處理完這一輪JB F0, SRT1 。程序思路:(BRATAB+R3*2)DPTR; 0A; 應(yīng)用JMP A+DPTR指令。分支地址表 DW SUBR1 DW SUBR2 DW SUBR3 DW SUBR4 DW SUBR5 DW SUBR6 DW SUBR7。從而驅(qū)動蜂鳴器發(fā)聲LCALL DELAY1S 。256(R0循環(huán)次數(shù))256(R1循環(huán)次數(shù))8(R2 MOV R2, 08H 。通過學習下面的硬件試驗,我們能夠掌握這些模塊的工作原理和模塊工作的性能指標。使DPTR指向XCODE中的0000HCHECK: MOVC A,A+DPTR 。主程序開始的地址,避免中斷入口MAIN: MOV DPTR,0000H 。程序結(jié)束,編譯程序不理會END以后的內(nèi)容思考:將外部存儲器填充數(shù)據(jù)說明:單片機系統(tǒng)采用兩種分配地址的方法:線選和高位地址譯碼。實驗班開始執(zhí)行的第一條指令所處的地址LJMP MAIN 。 循環(huán)HALT: AJMP HALTDELAY: MOV 20H,0F9H 。主程序開始的地址,避免中斷入口MAIN: MOV DPTR,2000H MOV A,00H MOV R1,0AHLOO0: MOV DPTR, A ACALL DELAY DJNZ R1, NEXT SJMP MAINNEXT : ADD A,10 SJMP LOOPDELAY: MOV 20H,0F9H 。主程序開始的地址,避免中斷入口 MAIN: MOV P2,20H 。修改數(shù)據(jù)查表指針CJNE R6,127,LOOP1 。送完后半個周期,跳轉(zhuǎn)。實驗用的ADC0809屬于第二類,是八位A/。啟動ADC0809轉(zhuǎn)換MOV 30H, 54 。程序結(jié)束,編譯程序不理會END以后的內(nèi)例程32:A/D轉(zhuǎn)換(查詢方式)在ADC0809完成轉(zhuǎn)換后讀取ADC0809中的轉(zhuǎn)換結(jié)果等待ADC0809轉(zhuǎn)換結(jié)束MOVX A,DPTR 。本實驗使用的是定時器。分析:在晶振fosc=12MHZ時, ms取反一次即可得到2 ms方波,因而T0的定時時間為1 ms。設(shè)置定時器0工作在模式1 MOV R0, 0 。重新給TL0置初值 CPL 。 用以分隔程序,使程序清晰易懂 END 。圖31 外部正脈沖寬度測量給TL0置初值WAIT1:JB , WAIT1