版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
微機原理與接口實驗系列一、IO端口擴展(8255)二、定時器/計數(shù)器(8253)三、串口通信(8251)四、模數(shù)轉(zhuǎn)換(ADC0809)五、數(shù)模轉(zhuǎn)換(DAC0832)六、液晶屏顯示(LCD1602)七、中斷控制器(8259)賴曉錚博士華南理工大學laixz@QQ:68046508(一)IO端口擴展(8255)實驗實驗內(nèi)容:●構(gòu)建一個“CPU+8255”的微型計算機系統(tǒng),通過8255芯片擴展微程序版CPU的I/O端口功能。編寫機器語言程序,通過8255芯片實現(xiàn)可定制的循環(huán)“流水燈”功能;進而編寫機器語言程序,通過8255芯片實現(xiàn)記錄4×4鍵盤按鍵觸發(fā)位置(行/列)的功能。實驗目的:●理解可編程并行接口芯片8255的基本工作原理?!裾莆誄PU使用8255芯片外擴IO端口的硬件架構(gòu)及編程方法。微程序版“CPU+8255”電路圖初始化過程時鐘信號CLK接手動開關(guān)MANUAL,啟動仿真,使能復位信號#RESET=0;手動按鈕MANUAL開關(guān)“010”,然后令信號#RESET=1.注:初始化完成后,若時鐘信號CLK繼續(xù)接開關(guān)MANUAL,則CPU進入手動模式,手動MANUAL開關(guān),生成時鐘信號CLK,程序單步執(zhí)行;若時鐘信號CLK接信號源AUTO-CLK(主頻10Hz),則CPU進入自動模式,程序自動運行,直到HLT指令的“斷點”處暫停。重啟過程(跳出“斷點”)時鐘信號CLK接開關(guān)MANUAL,手動令復位信號端#RESET的狀態(tài)“101”變化,即重啟完成,跳出“斷點”繼續(xù)執(zhí)行
。注:跳出“斷點”后,CPU進入HLT指令的后續(xù)下一條指令的取指周期。8255應(yīng)用電路圖可編程并行IO接口芯片8255A結(jié)構(gòu)圖8255A控制字示意圖#CS#RD#WRA1A0操作數(shù)據(jù)傳送方式00100讀
A口A口數(shù)據(jù)→數(shù)據(jù)總線00101讀
B口B口數(shù)據(jù)→數(shù)據(jù)總線00110讀
C口C口數(shù)據(jù)→數(shù)據(jù)總線01000寫
A口數(shù)據(jù)總線數(shù)據(jù)→A口01001寫
B口數(shù)據(jù)總線數(shù)據(jù)→B口01010寫
C口數(shù)據(jù)總線數(shù)據(jù)→C口01011寫控制口數(shù)據(jù)總線數(shù)據(jù)→控制口1XXXX禁止訪問數(shù)據(jù)總線接口高阻態(tài)8255A控制端口功能圖8255A工作方式1(選通)輸入組態(tài)8255A工作方式1(選通)輸入時序圖8255A工作方式1(選通)輸出組態(tài)8255A工作方式1(選通)輸出時序圖8255A工作方式2(雙向傳送)應(yīng)答聯(lián)絡(luò)線定義8255A工作方式2(雙向傳送)時序圖實驗步驟(可編程的循環(huán)流水燈):1)可編程的循環(huán)流水燈程序8255_Cycle_LED.asm存放在實驗4.1項目的子文件夾test里,其功能實現(xiàn)了CPU從8255芯片的A口讀入撥碼開關(guān)設(shè)置的8位數(shù)值,從B口輸出該數(shù)值到8位LED燈。然后,該數(shù)值不斷循環(huán)移位,在8位LED燈上形成“循環(huán)流水燈”效果。具體代碼如后頁所示。2)編譯、燒寫、自動運行8255_Cycle_LED源程序,在程序自動運行過程中,觀察B口連接的8位LED燈變化。
(編譯和燒寫asm文件的方法參見“2.6存儲器實驗:ROM批量導入數(shù)據(jù)”)3)修改8255_Cycle_LED源程序,A口連接的撥碼開關(guān)設(shè)置不同的數(shù)值,觀察自動執(zhí)行過程中B口連接的8位LED燈變化。匯編助記符注釋(M地址:機器指令)SETR0,86H選8255地址[1000xxxx]控制端A1A0=1100H:0011000001H:10000110OUTAR0,AR02H:01010010SETR0,99H控制字:PA輸入/PB輸出/PC輸入03H:0011000004H:10011001OUTR0,PORT005H:01010000SETR0,80H選PA口:A1A0=0006H:0011000007H:10000000OUTAR0,PORT008H:01010010INR1,PORT0PA口輸入09H:01000100HLT停機0AH:000000018255_Cycle_LED匯編助記符注釋(M地址:機器指令)SETR0,82H選PB口:A1A0=010BH:001100000CH:10000010OUTAR0,PORT00DH:01010010OUTR1,PORT0PB口輸出0EH:01010100LRCR10FH:10100111HLT10H:00000001JMP0EH循環(huán)移位11H:0001000012H:000011108255_Cycle_LED實驗步驟(矩陣鍵盤測試):1)矩陣鍵盤測試程序keyboard.asm存放在實驗4.1項目的子文件夾test里,其實現(xiàn)的功能如下(代碼如后頁所示):
首先,在程序的第一次HLT“斷點”跳出后,用戶按下矩陣鍵盤的某個鍵,一直持續(xù)到第二次HLT“斷點”暫停后才松開按鍵。
然后,CPU通過8255芯片的C口高4位輸出不同的電平組合,再從C口低4位讀取相應(yīng)的電平組合,可以判斷出矩陣鍵盤中哪個鍵被壓下。
最后,在8255芯片B口連接的8位LED燈上顯示被按下鍵的行值(高4位代表從上到下的矩陣鍵盤行信息)和列值(低4位代表從左到右的矩陣鍵盤列信息)。
實驗步驟(矩陣鍵盤測試):2)編譯、燒寫、自動運行keyboard源程序:(編譯和燒寫asm文件的方法參見“2.6存儲器實驗:ROM批量導入數(shù)據(jù)”)3)在程序第一次HLT“斷點”跳出后,隨機按下矩陣鍵盤中的某個按鍵(注:按下的時間要足夠長,直到程序在第二次HLT“斷點”暫停后才能松開按鍵),觀察和記錄程序中三個HLT“斷點”暫停時刻,通用寄存器R0~3和8255芯片B口連接的8位LED燈變化。4)為何CPU使用C口的高4位輸出測試矩陣鍵盤的時候,不是逐行拉低電平(即輸出0111、1011、1101、1110),而是輸出0000、0011、1001?這樣設(shè)計安排有什么優(yōu)點?
匯編助記符注釋(M地址:機器指令)SETR0,86H選8255地址[1000xxxx]控制端A1A0=1100H:0011000001H:10000110OUTAR0,PORT002H:01010010SETR0,91H控制字:PA輸入/PB輸出/PC高四位輸出低四位輸入03H:0011000004H:10010001OUTR0,PORT005H:01010000SETR0,82H選PB口:A1A0=0106H:0011000007H:10000010OUTAR0,PORT008H:01010010SETR0,FFH初始化PB口,LED全滅09H:001100000AH:11111111OUTR0,PORT00BH:01010000keyboard匯編助記符注釋(M地址:機器指令)SETR0,84H選PC口:A1A0=100CH:001100000DH:10000100OUTAR0,PORT00EH:01010010SETR2,0FHR2=00001111,列判斷用0FH:0011100010H:00001111OUTR2,PORT0PC口置位00001111(高四位輸出0000)11H:01011000SETR1,3FHR1=00111111,行判斷用12H:0011010013H:00111111HLT該斷點后就可以按鍵,按鍵要保持到下一個斷點才能松開!14H:00000001INR0,PORT0PC口輸入;L115H:01000000XORR0,R2無鍵按下,R0是00001111,R0=R2有鍵按下,R0低四位:1110/1101/1011/011116H:10110010keyboard匯編助記符注釋(M地址:機器指令)JZ,15H無鍵按下,跳轉(zhuǎn)到
L1(循環(huán)監(jiān)聽鍵盤輸入)17H:0001100018H:00010101MOVR3,R0R3=0000yyyy(yyyy是列編碼)19H:01101100OUTR1,PORT0PC口置位00111111(高四位輸出0011)1AH:01010100INR0,PORT0PC口輸入1BH:01000000XORR0,R1無鍵按下,R0是00111111,R0=R1有鍵按下,R0低四位1110/1101/1011/01111CH:10110001JZ20H行輸出0011無鍵按下,R2仍是000011111DH:000110001EH:00100000MOVR2,R1行輸出0011有鍵按下,R2賦值001111111FH:01101001SHT(RRC)R1R1=10011111(行判斷用)20H:10100101OUTR1,PORT0PC口置位10011111(高四位輸出1001)21H:01010100INR0,PORT0PC口輸入22H:01000000keyboard匯編助記符注釋(M地址:機器指令)HLT按鍵要保持到此斷點后才能松開!23H:00000001XORR0,R1無鍵按下,R0是10011111,R0=R1有鍵按下,R0低四位1110/1101/1011/011124H:10110001JZ33H行輸出1001無鍵按下,跳轉(zhuǎn)
L2:25H:0001100026H:00110011SUBIR2,3FH判斷:R2是否0011111127H:1100100028H:00111111JZ2FHR2是00111111,即行輸出0011有鍵按下29H:000110002AH:00101111SETR2,20HR2否,行輸出0011無鍵按下且1001有鍵按下R2賦值XXXX0000(XXXX是行編碼)2BH:001110002CH:00100000JMP3DH判斷結(jié)束,跳轉(zhuǎn)
L3:
2DH:000100002EH:00111101keyboard匯編助記符注釋(M地址:機器指令)SETR2,40H行輸出0011有鍵按下且1001有鍵按下R2賦值XXXX0000(XXXX是行編碼)2FH:0011100030H:01000000JMP3DH判斷結(jié)束,跳轉(zhuǎn)
L3:
31H:0001000032H:00111101SUBIR2,3FHL2:R2是否0011111133H:1100100034H:00111111JZ3BHR2是0011111,即行輸出0011有鍵按下35H:0001100036H:00111011SETR2,10HR2否,行輸出0011無鍵按下且1001無鍵按下R2賦值XXXX0000(XXXX是行編碼)37H:0011100038H:00010000JMP3DH判斷結(jié)束,跳轉(zhuǎn)
L3:
39H:000100003AH:00111101keyboard匯編助記符注釋(M地址:機器指令)SETR2,80H行輸出0011有鍵按下且1001無鍵按下R2賦值XXXX0000(XXXX是行編碼)3BH:001110003CH:10000000HLTL3:3DH:00000001ORR2,R3R2=XXXXyyyy(高四位行編碼低四位列編碼)3EH:11111011SETR3,82H選PB口:A1A0=013FH:0011110040H:10000010OUTAR3,PORT041H:01011110OUTR2,PORT0PB口輸出最終結(jié)果42H:01011000HLT43H:00000001keyboard思考題:●請把本實驗的微程序版“CPU+8255”電路改成硬布線版和流水線版“CPU+8255”電路,并且運行本實驗步驟所示的8255_Cycle_LED和keyboard程序。請問上述程序在硬布線或流水線版本中需要修改么?若需要,請修改并測試。(一)IO端口擴展(8255)實驗附錄:CPU指令集(OP碼表)OP碼(I7I6I5I4)指令助記符OP碼(I7I6I5I4)指令助記符0111IRET1111OR/ORI0110MOV1110AND/ANDI0101OUT/OUTA1101ADD/ADDI0100IN1100SUB/SUBI0011SET1011XOR/XORI0010SOP(INC/DEC/NOT/THR)1010SHT(RLC/LLC/RRC/LRC)0001JMP/JMPR/Jx/JxR1001STO/PUSH0000NOP/HLT1000LAD/POP一、系統(tǒng)指令:匯編語言功能I7I6I5I4I3I2I1I0NOP;無操作(延時4個T)00000/0x/0HLT;停機(斷點)00000/0x/1IRET;中斷返回BP_PCPC;BP_PSWPSW01110/0x/x匯編語言注釋I7I6I5I4I3I2I1I0MOVRA,RB;(RB)RA0110RARBSETRA,IMM;IMMRA0011RAx/xIMM二、寄存器及I/O操作指令:匯編語言功能I7I6I5I4I3I2I1I0INRA,PORTx;(PORTx)RA0100RAPORTxOUTRA,PORTx;(RA)PORTx0101RA0/PORTxOUTARA,PORTx;(RA)PORTx0101RA1/PORTx匯編語言功能I7I6I5I4I3I2I1I0LADRA,[ADDR];[ADDR]RA1000RA0/0ADDRPOPRA,[RB];[RB]RA1000RARBSTORA,[ADDR];(RA)[ADDR]1001RA0/0ADDRPUSHRA,[RB];(RA)[RB]1001RARB三、存儲器及堆棧操作指令:匯編語言功能I7I6I5I4I3I2I1I0JMPADDR;ADDRPC00010/00/0ADDRJMPRRB;(RB)PC00010/0RBJCADDR;IFCF=1,ADDRPC00010/10/0ADDRJCRRB;IFCF=1,(RB)PC00010/1RBJZADDR;IFZF=1,ADDRPC00011/00/0ADDRJZRRB;IFZF=1,(RB)PC00011/0RBJSADDR;IFSF=1,ADDRPC00011/10/0ADDRJSRRB;IFSF=1,(RB)PC00011/1RB四、跳轉(zhuǎn)系列指令:五、算術(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 花卉節(jié)慶活動合同
- 教學用品訂購合同
- 琴行鋼琴出租協(xié)議
- 代購合同的履行期限
- 黃沙子供貨合同
- 違紀保證書范本成長與反思
- 寄售合同的主要條款
- 貨物購買協(xié)議格式
- 民間簡易借款合同范例
- 電廠招標文件樣本獲取
- 國開電大《親子關(guān)系與親子溝通》形考+大作業(yè)
- (2024年)中國傳統(tǒng)文化介紹課件
- 2024年度武漢天河國際機場免稅店經(jīng)營合同3篇
- 蛇年春聯(lián)對聯(lián)240副
- 餐廳服務(wù)培訓
- 南水北調(diào)江蘇水源公司2024年下半年校園招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 寒假安全教育 1
- 2023-2024學年廣東省深圳市南山區(qū)七年級(上)期末地理試卷
- 民法典知識考試試題及答案
- 《冠心病》課件(完整版)
- 2024年公安機關(guān)人民警察高級執(zhí)法資格考試試卷
評論
0/150
提交評論