㈠ 單片機可編程8255介面實驗報告
一、8255是干什麼的
8255是一塊晶元,用於管理CPU與外設之間數據的輸入和輸出。
二、8255可以怎麼管理輸入輸出
8255有三個埠:A口,B口和C口。它們的長度都是8位的。都可以用作數據的輸入或輸出。
8255有三種工作方式來管理輸入輸出:方式0、方式1和方式2.
1.方式0——基本輸入/輸出方式
一個輸入/輸出過程的最簡單形式是這樣的:以輸入為例,首先設定8255埠的工作狀態為輸入,數據一來到埠,就被傳送給CPU。
當然並不是所有的輸入輸出過程都這么簡單。例如,有些時候只有當外設處於可以接受數據的就緒狀態時,才可以把數據發送給外設。那麼這時就需要把外設的狀態輸出端輸入進8255晶元,判斷這個端的狀態從而決定是否發送數據給這個外設。——這稱為查詢工作方式。8255的C口就可以實現這個功能。後面我們可以看到具體的例子。
2.方式1——選通輸入/輸出方式
前面提到,有些時候只有當外設處於可以接受數據的就緒狀態時,才可以把數據發送給外設。這樣就產生了一個問題:CPU源源不斷地向8255傳數據,外設沒工夫接。雖然外設可以通過C口告知8255,CPU再檢測C口狀態決定是否傳送數據。但CPU業務繁忙,哪有功夫等你這個大爺一樣的外設?所以更好的解決辦法,就要用到中斷的概念,也就是說:當外設可以接收/發送數據時,通過8255向CPU發送一個中斷信號。CPU接收到中斷信號後,中斷當前正在執行的程序,進行輸入輸出操作,完成後再返回現場繼續原先的程序。——這稱為中斷工作方式。這一系列控制信號還是通過C口來傳送的。
㈡ 匯編計算機介面 8255可編程並行介面實驗。圖是程序代碼,怎麼利用輸出硬體編寫一個跑馬燈程序
樓上的,他們是匯編或者微原的課程用的是8088或8086,直接用試驗箱,對他們的要專求應該不用自己搭建硬屬件環境的。而且8255隻是個介面晶元。你的情況要根據你的實驗環境,先在你的PC軟體環境編輯編譯鏈接後,連接硬體試驗箱將8255的A口與LED相連,C口通過正確介面方式與8088相連,試驗箱在程序裝載模式時通過PC將二進制文件下載,運行,OVER
㈢ (微機原理)用8086,8253,8251,8255,8259和8237其中的幾種設計一個簡單的實驗,請給點思路
可編程定時/計數器8253實驗
一、實驗要求
利用8086外接8253可編程定時/計數器,可以實現方波的產生。
二、實驗目的
1、學習8086與8253的連接方法。
2、學習8253的控制方法。
3、掌握8253定時器/計數器的工作方式和編程原理
三、實驗說明
8253晶元介紹
8253是一種可編程定時/計數器,有三個十六位計數器,其計數頻率范圍為0-2MHz,用+5V單電源供電。
8253的功能用途:
⑴延時中斷;⑵可編程頻率發生器;⑶事件計數器;⑷二進制倍頻器⑸實時時鍾;⑹數字單穩⑺復雜的電機控制器。
8253的六種工作方式:
⑴方式0:計數結束中斷;⑵方式l:可編程頻率發生;⑶方式2:頻率發生器;⑷方式3:方波頻率發生器;⑸方式4:軟體觸發的選通信號;⑹方式5:硬體觸發的選通信號。
四、實驗步驟
1、Proteus模擬
a.在Proteus中打開設計文檔「8253_STM.DSN」;
b.建立實驗程序並編譯,模擬;
c.如不能正常工作,打開調試窗口進行調試。
參考程序:
CODE SEGMENT
ASSUMECS:CODE
START:
JMPTCONT
TCONTROEQU0A06H
TCON0EQU0A00H
TCON1EQU0A02H
TCON2 EQU0A04H
TCONT:
MOVDX,TCONTRO
MOVAL,16H;計數器0,只寫計算值低8位,方式3,二進制計數
OUTDX,AL
MOVDX,TCON0
MOVAX,20 ;時鍾為1MHZ,計數時間=1us*20=20us,輸出頻率50KHZOUTDX,AL
JMP$
CODEENDS
ENDSTART
五、實驗電路及連線
1、Proteus實驗電路
㈣ 8255a可編程並行介面c語言實驗
inline int IsSpace(int c)
{
if(c == 0x20 || c == 0x09 || c== 0x0D)
{
return 1;
}
return 0;
}
template<class T>
T RemovePreAndLastSpace(const T& str)
{
int length = str.size();
int i = 0,j = length -1;
while(i < length && IsSpace(str[i])){i++;}
while(j >= 0 && IsSpace(str[j])){j--;}
cout << i << " :" << j<< endl;
if(j<i) return T();
return str.substr(i,j-i+1);
}
㈤ 鍙緙栫▼閫昏緫鍣ㄤ歡瀹為獙鍐呭圭畝浠
鏈涔﹀唴瀹硅﹀敖錛屽垎涓轟笁涓涓昏佺珷鑺傦紝鍒嗗埆鏄痚da6000/eda2000瀹為獙寮鍙戠郴緇熴佸熀紜瀹為獙鍜岀患鍚堝疄楠岀殑娣卞叆鎺㈣ㄣ傚湪闄勫綍閮ㄥ垎錛岀壒鍒閽堝筙ilinx寮鍙戠幆澧冪殑浣跨敤鎶宸ц繘琛屼簡璇﹀敖璁茶В銆
鍏ㄤ功鍐呭規兜鐩栦簡騫挎硾鐨勫疄璺電幆鑺傦紝鍖呮嫭榪愮敤鍘熺悊鍥劇紪杈戣緭鍏ユ硶鍜寁hdl銆乿erilog HDL鏂囨湰緙栬緫杈撳叆娉曡繘琛屾暟瀛楃數璺鍜岀郴緇熻捐″疄楠岀殑璁捐°傛瘡涓瀹為獙鐨勮捐¤繃紼嬩弗璋ㄦ湁搴忥紝浠庤緭鍏ョ紪杈戙佺紪璇戱紝鍒頒豢鐪熼獙璇侊紝鍐嶅埌寮曡剼閿佸畾鍜屾渶緇堢殑緙栫▼涓嬭澆錛屼竴姝ュ埌浣嶏紝鐩鏍囨槸灝嗗疄楠岃捐$殑鐢佃礬鎴愬姛涓嬭澆鍒癋PGA鎴朇PLD鐩鏍囪姱鐗囦腑銆
瀹為獙鐜鑺傚湪eda6000鎴杄da2000瀹為獙騫沖彴涓婅繘琛岋紝涓鴻昏呮彁渚涗簡紜浠墮獙璇佺殑瀹炴垬鐜澧冦傛瘡涓瀹為獙閮界簿蹇冭捐′簡鎬濊冮橈紝鏃ㄥ湪嬋鍙戣昏呯殑鐙絝嬫濊冨拰鍔ㄦ墜瀹炶返鑳藉姏錛岄紦鍔變粬浠鍦ㄥ畬鎴愬疄楠岀殑鍚屾椂錛屼篃鑳借嚜鎴戞帰緔㈠拰娣卞寲鐞嗚В銆