微處理機原理與應用 Chapter 1 簡介 Chung-Min Wu, Ph.D Department of Electronic Engineering Kun Shan University
課程大綱 單晶片電路設計 PORT 設定 特殊暫存器的功能 計時/計數器 中斷 串列傳輸 LCD顯示控制
準備事項 Keil C 編譯軟體 ISP -3v0 線上燒錄軟體 89S51單晶片基本電路 製作線上燒錄電路
89SXXXX 線上燒錄電路
測試程式 #include “reg51.h” void main() { while(1) P1=0x01; P2=0x02; } 以三用電錶或是LED來觀察接腳變化
Keil C
PORT 設定 接腳定義於標頭檔reg51.h (Keil C)中 89s51有4個port 隨著編譯軟體不同,會由不同的標頭檔來定義 P0, P1, P2, P3 每個port有8隻腳 P0.0~P0.7, P1.0~P1.7, P2.0~P2.7, P3.0~P3.7 P0無提升電阻,P1, P2, P3皆有 接腳設定’1’為高準位,輸出為+5V 接腳設定’0’為低準位,輸出為0V
PORT 設定範例 IF P1=0x01; 00000001 IF P1=0x53; 01010011 以電錶或示波器觀察 P1.0為High,其餘接腳為Low IF P1=0x53; 01010011 P1.6, P1.4, P1.1, P1.0為High,其餘接腳為Low
For迴圈 基本格式 設計LED由P1.0依序亮到P1.7 設計LED由P1.7依序亮到P1.0 00000001 00000010 … 10000000 設計LED由P1.7依序亮到P1.0 For(初始值;條件值;遞增/遞減) { ……… } int i; for(i=0; i<8; i++) { P1=0x01<<i; // ’1’ 隨著 i 增加,往左 shift }
While 迴圈 基本格式 延遲副程式設計 單晶片執行速度以12MHz為例 振盪週期為石英晶體的振盪週期,即1/12MHz 1個機械週期為12個振盪週期 12*1/12MHz ,即1μs 1個指令週期約1~4個機械週期,即1~4μs delay(300); 大約會延遲 1ms while(條件值) { ….. } void delay(int i) { while(i>0) i--; }
延遲程式測試 為了能有效的設計延遲時間,提高準確度 如何測試延遲程式之準確性 #include "reg51.h" sbit ch=P1^0; void delay(int i) { while(i>0) i--; } void main() { ch=0; //P1.0初始設定為0 while(1) ch=1; delay(300); ch=0; } delay(300); 之時間,以示波器觀察延遲時間是否正確,約為 1ms
跑馬燈 P0 連接8顆LED 設計程式 先閃爍2次,全亮->全暗->全亮->全暗 燈號由P0.0 移到 P0.7 停止
跑馬燈電路設計 330Ω 8 顆 LED