- 設定輸出顯示輸入:
• 硬體配線:參考以下的電路方塊圖,利用RS232接線連接PC個人電腦及AVR M128單板電腦,一方面提供下載程式功能,另一方面提供以PC超級終端機監看M128內部資料的功能。另外利用40PIN IO排線,將AVR M128板的訊號接到麵包板上。並在麵包板上參考指撥開關輸入點以及LED輸出點電路圖
◦ 將排線的PORTB之PB0~PB7共8條線接到十顆排狀發光二極體(TEN BARLED)之中的任意相隣八顆LED。
◦ 把PORTD之PD0~PD7共8條線接到八顆成排的各顆指撥開關。
◦ 各顆排狀指撥開關,和各顆排狀發光二極體,的另一端都各自接到排阻的各顆電阻一端,而排阻的共地端則接到地線。
◦ 為了提供電源給麵包板,排線的VCC,GND分別接到麵包板的火線( + ),接至地線 ( - )。
◦ 指撥開關邏緝:參考指撥開關輸入點以及LED輸出點電路圖,左邊電路,由於PORTB,PORTD在Mega128內部電路都是以提昇電組將電位拉高,在讀取外部指撥開關時,當開關放在不通位置時,所讀取之值應該為Hi,反之當其放在接通位置時,由於直接接地,所以讀取之值應為Low,因此AVR M128單板電腦內部讀得之單一位元資料,Hi/Low可以分別表現指撥開關的不通/通。
◦ LED邏緝:參考參考指撥開關輸入點以及LED輸出點電路圖右邊電路,PORTD在輸出腳位對應的位元被寫入1時,電位被提昇為Hi,此一電位,經過限流電阻(270Ω或330Ω)接地,導通時點亮LED。
硬體配線圖
- 軟體程式:
呼叫REGPUT()設定埠D為全輸入。
呼叫REGPUT()設定埠E為輸出。
while(1){
呼叫REGGET() 由埠D取得輸入值。
呼叫printf()列出輸入值。
呼叫printf()提示使用者提供輸出值。
呼叫scanf()取得欲輸出值。
呼叫REGPUT() 由埠E輸出已取得欲輸出值
}
- 平行埠讀取輸入值並直接由輸出埠輸出出實驗:
• 硬體配線:同上
• 程式:參考以下程式流程圖1,流程圖中不斷循環重覆三個動作,呼叫輸出入埠設定函式完成設定後,首先由呼叫輸入驅動函式REGGET()由PORTD讀入週邊的指撥邏緝HI/LO,而後呼叫輸出埠驅動函式REGPUT()將所讀取值寫入PORTB,最後由RS232傳回PC。這類循環讀寫的方式,人稱輪詢程式,也就是輪流詢問的意思。
流程圖1
- 由輸出入埠的部份位元組成之旗標群:
• 硬體配線:同上
• 測試程式:
撰寫main()程式內部
while(1){
呼叫printf()scanf()提示取得設定輸出埠MASK
呼叫printf()scanf()提示取得設定輸出埠Shift
呼叫printf()scanf()提示取得設定輸出方向旗標Data
呼叫 REGFPT()設定平行埠指定位元為輸出方向
呼叫printf()scanf()提示取得設定輸入埠MASK
呼叫printf()scanf()提示取得設定輸入埠Shift
呼叫printf()scanf()提示取得設定輸入方向旗標Data
呼叫 REGFPT()設定平行埠指定位元為輸入方向
while(輸出入輪詢次數未超過10次){
呼叫printf()scanf()提示取得使用者提供讀取MASK
呼叫printf()scanf()提示取得使用者提供讀取Shift。
呼叫 REGFGT()取得經MASK過濾平移Shift之讀取旗標群數值。
呼叫printf() 將前面取得值送回PC。
呼叫printf()scanf()取得提示使用者提供輸出MASK
呼叫printf()scanf()取得提示使用者提供輸出Shift。
呼叫printf()scanf()取得提示使用者提供輸出旗標群值。
呼叫REGFPT()將輸出旗標群值平移後以MASK處理蓋寫輸出。
輸出入輪詢次數加1
}
}
• 測試:執行前述程式,由人機,參考REGFPT(),REGFGT()巨集式說明之各式組合,提供設定輸出入方向之Mask,Shift,Data,及輸出入旗標用之Mask,Shift,Data組合測試程式反應。並記錄觀察。確認REGFPT(),REGFGT()均有照巨集說明執行。
- 由輸入值選擇哪顆LED亮:
• 硬體配線:同上
• 程式撰寫:參考流程圖2,
.先以Printf()及Scanf()詢問,Mask及Shift決定要由指撥開關的那3個位元輸入撰擇第幾顆LED要亮。
.以輸入埠旗標讀取驅動函式REGFGT() 讀取PORTD的Mask及Shift決定的三位數旗標群值,再將對應的LED編號點亮。
流程圖2
- 軟硬體介面規格(略)
- 提示
- 實驗報告內容
1. 工作日誌
2. 程式流程/虛擬碼/內部變數資料結構/程式列表(縮印)
本次實驗學生自行撰寫之輸接腳訊號轉輸出程式。
3. 實驗數據→測試點實測波形
本次實驗,輸出入硬體真實接腳,輸入PORT,SHIFT,MASK,輸出PORT,SHIFT,MASK,以及是否可操作之記錄表。
4. 討論
請詳細討論int, char, unsigned char之異同
5. 問題
- 驗收標準
助教監視下學生執行以下動作
1. 助教隨機修改,刪除,重新編譯出錯誤結果,交還給學生修恢成原可以執行之程式。
2. 助教隨機選擇與原實驗不同之DIO PIN,學生找出其於程式中應配合修改之程式碼修改完成測試。