一、實驗目的1.掌握定時/計數器、輸入/輸出接口電路設計方法。 2.掌握中斷控制編程技術的方法和應用。3.掌握8086匯編語言程序設計方法。 二、實驗內容與要求 微機燈光控制系統主要用于娛樂場所的彩燈控制。系統的彩燈共有12組,在實驗時用12個發光二極管模擬。1. 基本要求:燈光控制共有8種模式,如12個燈依次點亮;12個燈同時閃爍等八種。系統可以通過鍵盤和顯示屏的人機對話,將8種模式進行任意個數、任意次序的連接組合。系統不斷重復執行輸入的模式組合,直至鍵盤有任意一個鍵按下,退出燈光控制系統,返回DOS系統。2. 提高要求:音樂彩燈控制系統,根據音樂的變化控制彩燈的變化,主要有以下幾種:第一種為音樂節奏控制彩燈,按音樂的節拍變換彩燈花樣。第二種音律的強弱(信號幅度大?。┛刂撇薀簟娨魰r,燈的亮度加大,且被點亮的數目增多。第三種按音調高低(信號頻率高低)控制彩燈。低音時,某一部分燈點亮;高音時,另一部分點亮。 三、實驗報告要求 1.設計目的和內容 2.總體設計 3.硬件設計:原理圖(接線圖)及簡要說明 4.軟件設計框圖及程序清單5.設計結果和體會(包括遇到的問題及解決的方法) 四、設計原理我們以背景霓虹燈的一種顯示效果為例,介紹控制霓虹燈顯示的基本原理。設有一排 n 段水平排列的霓虹燈,某種顯示方式為從左到右每0.2 秒逐個點亮。其控制過程如下: 若以“ 1 ”代表霓虹燈點亮,以“ 0 ”代表霓虹燈熄滅,則開始時刻, n 段霓虹燈的控制信號均為“ 0 ”,隨后,控制器將一幀 n 個數據送至 n 段霓虹燈的控制端,其中,最左邊的一段霓虹燈對應的控制數據為“ 1 ”,其余的數據均為零,即 1000 … 000 。當 n 個數據送完以后,控制器停止送數,保留這種狀態(定時) 0.2 秒,此時,第 1 段霓虹燈被點亮,其余霓虹燈熄滅。隨后,控制器又在極短的時間內將數據 1100 … 000 送至霓虹燈的控制端,并定時 0.2 秒,這段時間,前兩段霓虹燈被點亮。由于送數據的過程很快,我們觀測到的效果是第一段霓虹燈被點亮 0.2 秒后,第 2 段霓虹燈接著被點亮,即每隔 0.2 秒顯示一幀圖樣。如此下去,最后控制器將數據 1111 … 111 送至 n 段霓虹燈的控制端,則 n 段霓虹燈被全部點亮。 只要改變送至每段霓虹燈的數據,即可改變霓虹燈的顯示方式,顯然,我們可以通過合理地組合數據(編程)來得到霓虹燈的不同顯示方式。 五、總體方案論證分析系統設計思路如下:1) 采集8位開關輸入信號,若輸入數據為0時,將其修改為1。確定輸入的硬件接口電路。采樣輸入開關量,并存入NUM的軟件程序段。2) 以12個燈依次點亮為例(即燈光控制模式M1),考慮與其相應的燈光顯示代碼數據。確定顯示代碼數據輸出的接口電路。輸出一個同期顯示代碼的軟件程序段(暫不考慮時隙的延時要求)。3) 應用定時中斷服務和NUM數據,實現t=N×50ms的方法。4) 實現某一種模式燈光顯示控制中12個時隙一個周期,共重復四次的控制方法。要求在初始化時采樣開關輸入數據NUM,并以此控制每一時隙的延時時間;在每一時隙結束時,檢查有無鍵按下,若是退出鍵按下,則結束燈光控制,返回DOS系統,若是其他鍵就返回主菜單,重新輸入控制模式數據。5) 通過人機對話,輸入8種燈光顯示控制模式的任意個數、任意次序連接組合的控制模式數據串(以ENTER鍵結尾)。對輸入的數據進行檢查,若數據都在1 - 8之間,則存入INBUF;若有錯誤,則通過屏幕顯示輸入錯誤,準備重新輸入燈光顯示控制模式數據。6) 依次讀取INBUF中的控制模式數據進行不同模式的燈光顯示控制,在沒有任意鍵按下的情況下,系統從第一個控制模式數據開始,順序工作到最后一個控制模式數據后,又返回到第一個控制模式數據,不斷重復循環進行燈光顯示控制。7) 本系統的軟件在總體上有兩部份,即主程序(MAIN)和實時中斷服務程序(INTT)。討論以功能明確、相互界面分割清晰的軟件程序模塊化設計方法。即確定有關功能模塊,并畫出以功能模塊表示的主程序(MAIN)流程框圖和定時中斷服務程序的流程框圖。 六、硬件電路設計 以微機實驗平臺和PC機資源為硬件設計的基礎,不需要外加電路。主要利用了以下的資源:1.8255并行口電路8255并行口電路主要負責數據的輸入與輸出,可以輸出數據控制發光二極管的亮滅和讀取乒乓開關的數據。實驗時可以將8255的A口、B口和一組發光二極管相連,C口和乒乓開關相連。2.8253定時/計數器8253定時/計數器和8259中斷控制器一起實現時隙定時。本設計的定時就是采用的t=N×50ms的方法,50ms由8253定時/計數器的計數器0控制定時,N是在中斷服務程序中軟件計時。8253的OUT0接到IRQ2,產生中斷請求信號。8253定時/計數器定時結束會發出中斷信號,進入中斷服務程序。3.PC機資源本設計除了利用PC機作為控制器之外,還利用了PC機的鍵盤和顯示器。鍵盤主要是輸入控制模式數據,顯示器就是顯示提示信息。 七、軟件設計 軟件主要分為主程序(MAIN)和中斷服務程序(INTT),主程序包含系統初始化、讀取乒乓開關、讀取控制模式數據以及按鍵處理等模塊。中斷服務程序主要是定時時間到后根據控制模式數據點亮相應的發光二極管。1.主程序主程序的程序流程圖如圖1所示。
上傳時間: 2014-04-05
上傳用戶:q986086481
九.輸入/輸出保護為了支持多任務,80386不僅要有效地實現任務隔離,而且還要有效地控制各任務的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護。 這里下載本文源代碼。 <一>輸入/輸出保護80386采用I/O特權級IPOL和I/O許可位圖的方法來控制輸入/輸出,實現輸入/輸出保護。 1.I/O敏感指令輸入輸出特權級(I/O Privilege Level)規定了可以執行所有與I/O相關的指令和訪問I/O空間中所有地址的最外層特權級。IOPL的值在如下圖所示的標志寄存器中。 標 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規定了I/O空間中的哪些地址可以由在任何特權級執行的程序所訪問。I/O許可位圖在任務狀態段TSS中。 I/O敏感指令 指令 功能 保護方式下的執行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數據 CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數據 CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關,并且只有在滿足所列條件時才可以執行,所以把它們稱為I/O敏感指令。從表中可見,當前特權級不在I/O特權級外層時,可以正常執行所列的全部I/O敏感指令;當特權級在I/O特權級外層時,執行CLI和STI指令將引起通用保護異常,而其它四條指令是否能夠被執行要根據訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執行,那么將引起出錯碼為0的通用保護異常。 由于每個任務使用各自的EFLAGS值和擁有自己的TSS,所以每個任務可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實模式下總是可執行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執行是很不方便的,不能滿足實際要求需要。因為這樣做會使得在特權級3執行的應用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實際需要與此剛好相反,只允許任務甲的應用程序訪問部分I/O地址,只允許任務乙的應用程序訪問另一部分I/O地址,以避免任務甲和任務乙在訪問I/O地址時發生沖突,從而避免任務甲和任務乙使用使用獨享設備時發生沖突。 因此,在IOPL的基礎上又采用了I/O許可位圖。I/O許可位圖由二進制位串組成。位串中的每一位依次對應一個I/O地址,位串的第0位對應I/O地址0,位串的第n位對應I/O地址n。如果位串中的第位為0,那么對應的I/O地址m可以由在任何特權級執行的程序訪問;否則對應的I/O地址m只能由在IOPL特權級或更內層特權級執行的程序訪問。如果在I/O外層特權級執行的程序訪問位串中位值為1的位所對應的I/O地址,那么將引起通用保護異常。 I/O地址空間按字節進行編址。一條I/O指令最多可涉及四個I/O地址。在需要根據I/O位圖決定是否可訪問I/O地址的情況下,當一條I/O指令涉及多個I/O地址時,只有這多個I/O地址所對應的I/O許可位圖中的位都為0時,該I/O指令才能被正常執行,如果對應位中任一位為1,就會引起通用保護異常。 80386支持的I/O地址空間大小是64K,所以構成I/O許可位圖的二進制位串最大長度是64K個位,即位圖的有效部分最大為8K字節。一個任務實際需要使用的I/O許可位圖大小通常要遠小于這個數目。 當前任務使用的I/O許可位圖存儲在當前任務TSS中低端的64K字節內。I/O許可位圖總以字節為單位存儲,所以位串所含的位數總被認為是8的倍數。從前文中所述的TSS格式可見,TSS內偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達8K字節,所以開始偏移應小于56K,但必須大于等于104,因為TSS中前104字節為TSS的固定格式,用于保存任務的狀態。 1.I/O訪問許可檢查細節保護模式下處理器在執行I/O指令時進行許可檢查的細節如下所示。 (1)若CPL<=IOPL,則直接轉步驟(8);(2)取得I/O位圖開始偏移;(3)計算I/O地址對應位所在字節在I/O許可位圖內的偏移;(4)計算位偏移以形成屏蔽碼值,即計算I/O地址對應位在字節中的第幾位;(5)把字節偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產生出錯碼為0的通用保護故障;(6)若不越界,則從位圖中讀對應字節及下一個字節;(7)把讀出的兩個字節與屏蔽碼進行與運算,若結果不為0表示檢查未通過,則產生出錯碼為0的通用保護故障;(8)進行I/O訪問。設某一任務的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對應I/O端口00H—3FH DB 10000000B ;對應I/O端口40H—47H DB 01100000B ;對用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對應I/O端口50H—0FFFFH DB 0FFH ;位圖結束字節TSSLen = $TSSSEG ENDS 再假設IOPL=1,CPL=3。那么如下I/O指令有些能正常執行,有些會引起通用保護異常: in al,21h ;(1)正常執行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執行 out 20h,eax ;(6)正常執行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執行 由上述I/O許可檢查的細節可見,不論是否必要,當進行許可位檢查時,80386總是從I/O許可位圖中讀取兩個字節。目的是為了盡快地執行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個字節。例如,上面的第(8)條指令要對I/O位圖中的兩個位進行檢查,其低位是某個字節的最高位,高位是下一個字節的最低位??梢娂词怪灰獧z查兩個位,也可能需要讀取兩個字節。另一方面,最多檢查四個連續的位,即最多也只需讀取兩個字節。所以每次要讀取兩個字節。這也是在判別是否越界時再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節時產生越界,必須在I/O許可位圖的最后填加一個全1的字節,即0FFH。此全1的字節應填加在最后一個位圖字節之后,TSS界限范圍之前,即讓填加的全1字節在TSS界限之內。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當TSS的界限大于I/O許可位圖開始偏移加8K時,I/O許可位圖的有效部分就有8K字節,I/O許可檢查全部根據全部根據該位圖進行。當TSS的界限不大于I/O許可位圖開始偏移加8K時,I/O許可位圖有效部分就不到8K字節,于是對較小I/O地址訪問的許可檢查根據位圖進行,而對較大I/O地址訪問的許可檢查總被認為不可訪問而引起通用保護故障。因為這時會發生字節越界而引起通用保護異常,所以在這種情況下,可認為不足的I/O許可位圖的高端部分全為1。利用這個特點,可大大節約TSS中I/O許可位圖占用的存儲單元,也就大大減小了TSS段的長度。 <二>重要標志保護輸入輸出的保護與存儲在標志寄存器EFLAGS中的IOPL密切相關,顯然不能允許隨便地改變IOPL,否則就不能有效地實現輸入輸出保護。類似地,對EFLAGS中的IF位也必須加以保護,否則CLI和STI作為敏感指令對待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對EFLAGS中的這三個字段的處理比較特殊,只有在較高特權級執行的程序才能執行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權級下對這三個字段的處理情況。 不同特權級對標志寄存器特殊字段的處理 特權級 VM標志字段 IOPL標志字段 IF標志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權級0執行的程序才可以修改IOPL位及VM位;只能由相對于IOPL同級或更內層特權級執行的程序才可以修改IF位。與CLI和STI指令不同,在特權級不滿足上述條件的情況下,當執行POPF指令和IRET指令時,如果試圖修改這些字段中的任何一個字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標志中的VM位總為0。 <三>演示輸入輸出保護的實例(實例九)下面給出一個用于演示輸入輸出保護的實例。演示內容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權指令引起的異常;使用段間調用指令CALL通過任務門調用任務,實現任務嵌套。 1.演示步驟實例演示的內容比較豐富,具體演示步驟如下:(1)在實模式下做必要準備后,切換到保護模式;(2)進入保護模式的臨時代碼段后,把演示任務的TSS段描述符裝入TR,并設置演示任務的堆棧;(3)進入演示代碼段,演示代碼段的特權級是0;(4)通過任務門調用測試任務1。測試任務1能夠順利進行;(5)通過任務門調用測試任務2。測試任務2演示由于違反I/O許可位圖規定而導致通用保護異常;(6)通過任務門調用測試任務3。測試任務3演示I/O敏感指令如何引起通用保護異常;(7)通過任務門調用測試任務4。測試任務4演示特權指令如何引起通用保護異常;(8)從演示代碼轉臨時代碼,準備返回實模式;(9)返回實模式,并作結束處理。
上傳時間: 2013-12-11
上傳用戶:nunnzhy
三種方法讀取鍵值 使用者設計行列鍵盤介面,一般常採用三種方法讀取鍵值。 中斷式 在鍵盤按下時產生一個外部中斷通知CPU,並由中斷處理程式通過不同位址讀資料線上的狀態判斷哪個按鍵被按下。 本實驗採用中斷式實現使用者鍵盤介面。 掃描法 對鍵盤上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對應列的鍵被按下。否則掃描下一行。 反轉法 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。 根據讀到的值組合就可以查表得到鍵碼。4x4鍵盤按4行4列組成如圖電路結構。按鍵按下將會使行列連成通路,這也是見的使用者鍵盤設計電路。 //-----------4X4鍵盤程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key; if((PINC&0x0f)!=0x0f) //是否有按鍵按下 {delayms(1); //延時去抖動 if((PINC&0x0f)!=0x0f) //有按下則判斷 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //復位 PORTC=0x0f; while((PINC&0x0f)!=0x0f) //按鍵是否放開 { display(data); } i=4; //計算返回碼 while(xxa!=0) { xxa=xxa>>1; i--; } if(yyb==0x80) key=i; else if(yyb==0x40) key=4+i; else if(yyb==0x20) key=8+i; else if(yyb==0x10) key=12+i; return key; //返回按下的鍵盤碼 } } else return 17; //沒有按鍵按下 }
上傳時間: 2013-11-12
上傳用戶:a673761058
TMS320F28x 系列MCU 被廣泛用于電機驅動控制,也同樣被用于汽車的各種電機驅動控制。TPIC7312 內部具有3 相N-MOSFET 橋的驅動,并內部集成了用于電流檢測的運算放大器,過流、過壓、欠壓、短路等保護功能,另外內部集成了升壓電路。微處理器可通過SPI 接口實現對TPIC7312 的配置和控制。
上傳時間: 2013-11-08
上傳用戶:xinyuzhiqiwuwu
TI公司的手提超聲系統DSP解決方案重量大約10磅或不到10磅,可以在沒有電池的情況下工作. 手提超聲系統廣泛應用于ICU病房,急診室, 麻醉和戰場. 手提超聲系統采用DSP和SoC來處理電傳感器(如照相機,變換器,麥克風等)所產品生的數字化電信號,一個診斷超聲圖像系統產生和發送超聲波,捕捉反射波并轉換成可視的圖像.接收到的反射波的信號處理包內插,抽取,數據濾波和重建.可編程的DSP和SoC能實時實現這些復雜的數學運算.
上傳時間: 2013-11-25
上傳用戶:raron1989
本資料是TI(德州儀器)推出的用于Xilinx和Altera FPGA的電源管理解決方案介紹。其主要內容包括:低失真調整器、步減控制器、集成FET轉換器、低功率集成FET轉換器等。
上傳時間: 2013-11-07
上傳用戶:363186
為實現對低功耗負載的微波供電,設計了應用于2.45 GHz的微帶整流天線。在接收天線設計中,引入了光子晶體(PBG)結構,提高了接收天線的增益和方向性;在低通濾波器部分引入了缺陷地式(DGS)結構,以相對簡單的結構實現了2.8 GHz低通濾波器特性;最后通過ADS軟件設計得出了用于微帶傳輸線與整流二極管間的匹配電路。將接收天線、低通濾波器和整流電路三部分微帶電路進行整合,完成整流天線的設計。通過實驗測試,該整流天線的增益為4.29 dBi,最高整流效率為63%。通過引入光子晶體結構和缺陷地式結構,在保證整流天線增益和整流效率的基礎上,有效地減小了天線的尺寸,簡化了設計方法。
上傳時間: 2013-10-29
上傳用戶:cjf0304
為了提高中小型制造企業的刀具管理水平,對刀具的自動識別與追蹤技術進行了研究,最終確定Data Matrix二維碼用于刀具的自動識別與追蹤技術。實際應用表明,該技術優化了刀具資源管理過程,諸如減少刀具的加工準備時間等,加強了企業底層資源信息的采集與處理能力,降低了企業用刀成本,最終提高了企業生產率和綜合競爭力。
上傳時間: 2013-12-20
上傳用戶:huaidan
運放用于傳感器信號調理
上傳時間: 2014-12-29
上傳用戶:er1219
在對低噪聲CMOS圖像傳感器的研究中,除需關注其噪聲外,目前數字化也是它的一個重要的研究和設計方向,設計了一種可用于低噪聲CMOS圖像傳感器的12 bit,10 Msps的流水線型ADC,并基于0.5 ?滋m標準CMOS工藝進行了流片。最后,通過在PCB測試版上用本文設計的ADC實現了模擬輸出的低噪聲CMOS圖像傳感器的模數轉換,并基于自主開發的成像測試系統進行了成像驗證,結果表明,成像畫面清晰,該ADC可作為低噪聲CMOS圖像傳感器的芯片級模數轉換器應用。
上傳時間: 2013-11-19
上傳用戶:xz85592677