Professional Documents
Culture Documents
C8051微處理機實習
課程說明
授課教師:張凱雄
1
0-1 課程介紹與說明
• 多晶片微電腦系統
– CPU:Z80、6500、8080、8085、80X86、Pentium
、 ARM…等
– 儲存:ROM(PROM、EPROM、EEPROM、Flash
Memory 、 Floppy Disk 、 HDD)
– 記憶:RAM(SRAM、DRAM 、 SDRAM)
– 輸出/輸入:8255A、8254A、8259A、8237、8250A
、8251A…等
• 多晶片微電腦系統應用場合
– 語音控制(近來單晶片也能做到):聲控撥號。
– 影像處理:數位相機、人臉/車牌辨識。
– 衛星定位:尋車、導航。
– 氣象分析:記錄器、大量數據分析運算。
• 單晶片微電腦系統應用場合
– 家電控制:電視、電扇、冷氣、音響。
– 防盜系統:機車、汽車、家庭保全。
– 消費型電子產品:MP3 Player(iPod)、Mouse、
Keyboard 。
– 工業控制:恆溫控制、恆溼控制、工業儀表。
• 微處理機實習課程若需設計與製作電路板,
請準備工具箱:
– 尖嘴鉗、斜口鉗、鑷子、烙鐵、焊錫、三用電表、
鑽針組、線鋸或鋸片…等相關實習工具
– 實驗過程,注意安全!嚴禁嘻鬧!
– 洗電路板與使用鑽台需全程配帶護目鏡
• 若有製作電路板,請將組員學號印製在電路
板上,課程實作會由助教檢查,並做為平時
成績。
• 「微處理機」與「微處理機實習」課程有密
切相關性,若本學期有任一課程沒有通過,
且未來要重修老師的課,老師得依情況要求
另一門有通過的課仍需要旁聽。
• 平時成績(出席率、課程實作):30%
• 期中測驗:30%,Open Book上機考。
• 期末測驗:40%,Open Book上機考。
• Note: 讀大學是學習找答案與解決問題的能
力,遇到問題先試著自己查查看。真的查不
出來再來問助教或老師。
授課教師:張凱雄
1
1-1 晶片接腳
• C8051F340/F380
授課教師:張凱雄
1
2-1 硬體設置
• Hardware Setup using a USB Debug Adapter
授課教師:張凱雄
1
3-1 快速開始
• 建立New Design Workspace
Ctrl 按下Ctrl鍵,使用滑鼠拖曳元件可以位置微調
• Altium Designer內建元件庫路徑
– C:\Users\Public\Documents\Altium\AD14\Library
• 若要使用的元件沒有在元件庫中,且廠商沒
有提供,則需要自行建立。
按下Ctrl鍵,使用滑鼠拖曳元件可以
位置微調,按下G鍵可以切換Grid
授課教師:張凱雄
1
4-1 建立新專案
• Step 1:
– 建立專案資料夾ex4_1
– 在專案資料夾下開兩個
子資料夾
• \config
• \src
– 將文字檔檔名修改為
main.c
– 將c8051f380.h與原始檔
檔案儲存在\src子資料
夾
• 要透過程式來控制微控制器的功能,必需經
由設定特殊功能暫存器SFR。
• 早期撰寫程式碼,須大量翻查SFR的定義,
但現在我們可經由『程式架構精靈』做系統
初始化SFR設定。
– 取消勾選『 Enable
Watchdog Timer』
– 按下OK按鈕,回到主畫
面
– 如前述建立專案步驟,
建立專案ex4_2
• Step 12:
– 將c8051f380.h放在src資料夾
– 編寫主程式
– 加入副程式宣告於main.h
組合語言
指令(機械)碼
目地晶片
– 程式進入點為main函數
– 單行註解符號『//』
– 多行註解以『/*』及『*/』標出註解範圍
– #include <c8051f380.h>
• 優先引入定義路徑C:\Keil\C51\INC\SiLABS
– #include “c8051f380.h”
• 優先引入專案路徑
void PCA_Init();
void Timer_Init();
void Port_IO_Init();
void Oscillator_Init();
void Init_Device(void);
#endif
• 變數名稱
– 字首需為英文字母或底線
– 第二字起可為英文字母、數字、底線
– C語言變數名稱對大寫與小寫有區別
– 變數名稱不可以為保留字
– 變數名稱的宣告儘量要有意義
• 變數的宣告
ex1:unsigned char i=0;
ex2:char i=0;
ex4:int i=0;
ex5:float i=0.0;
• 指定運算子『=』
– 在程式中,『=』稱為指定運算子,會將『=』右邊
的運算結果存入『=』左邊的變數
• 關係運算子
– 主要用在程式中的流程控制,用來判斷某個條件是
否為真,若『條件成立』則運算結果為真(1),
若『條件不成立』則運算結果為假(0)。
ex2 :
if (a==0 || b=0)
c=0; //若a等於0或者b等於0則條件成立
• 有一種特殊的副程式,並非由主程式呼叫所
執行,而是當產生中斷事件時才會被執行,
這種特殊的副程式被稱為中斷副程式
授課教師:張凱雄
1
5-1 Port Input / Output
• Port I/O Cell Block Diagram
循環方向
• ex5_2:同上例,請使用P0_5與P0_4切換四
種不同的速度,再以P0_7與P0_6切換四種不
同的閃爍樣式。
授課教師:張凱雄
1
6-1 Timer/Counter
• 在本章所有實驗,請將
Lab1_IO_Port_Programming PCB Board做如下
連接
Lab1_IO_Port_Programming C8051F380DK
PortA <> PORT_3
PortB <> PORT_0
P.120
• Timer0 Mode3雖然將內部的TH0與TL0獨立成
兩個8位元的計數/計時器,但會佔用到
Timer 1的旗號TR1與TF1,所以等於還是用到
兩個Timer。
• ex6_6:設定PortB_2的光遮斷器做為Timer0
的計數器輸入源T0,將TL0計數值顯示在P3
。
授課教師:張凱雄
1
7-1 串列埠介面與相關SFR介紹
• 在本章所有實驗,請將
Lab1_IO_Port_Programming PCB Board做如下
連接
Lab1_IO_Port_Programming C8051F380DK
PortA <> PORT_3
PortB <> PORT_0
• ex7_1:請設計一程式,使用C8051F380的
UART0串列埠,以SBUF0每秒傳送”Hello
World!\n”字串到電腦。
授課教師:張凱雄
1
8-1 LCD模組
• 在本章所有實驗,請將
Lab2_LCD_and_Keyboard_Interfacing PCB
Board做如下連接
Lab1_IO_Port_Programming C8051F380DK
PortC <> PORT_4
PortD <> PORT_3
PortE <> PORT_1
– Start_Addr: 要顯示在LCM上的位址(顯示記憶體)
– *DispChar: 要輸出的字串指標
– DispNum: 要顯示輸出的字元數目
授課教師:張凱雄
1
9-1 Analog-to-Digital Converter
• 靠左對齊(存放0x3FF為例)
ADC0H ADC0L
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
轉換後的10位元無符號數
實際量測電壓( AIN + ) = 參考電壓(VREF )×
1024
轉換後的10位元有符號數
實際量測電壓( AIN + − AIN − ) = 參考電壓(VREF )×
512