51單片機感覺還是很好觸摸的,二十多塊買了一個最小系統板,一個keil uVision4,再有一個stc-isp就基本可以先簡單的玩一玩學一學了。在學習過程中我遇到了一些問題,簡單的記一下隨筆。
一、最小系統板(電源+單片機+晶振+復位電路)使用流程
1.安裝接口驅動。
2.安裝編譯軟件,用注冊機破解。
安裝好后遇到問題:Keil報錯failed to execute 'd:\Keil\C51\BIN\C51.EXE'
錯誤是因為直接拷貝的安裝目錄,里面的TOOLS.INI配置文件仍然保留了他電腦的路徑,與你放置Keil的實際路徑不符。
解決辦法:
找到自己的keil安裝目錄,下面有個TOOLS.INI文件。用記事本打開這個文件,找到:
[C51] PATH="d:\Keil\C51"
或類似字樣,將PATH=后面的內容改為自己keil實際安裝的目錄,最后一個文件夾是C51。
我的keil裝在了C:\Keil這個目錄,那么最后類似于這樣:
[C51]
PATH="C:\Keil\C51"
然后保存TOOLS.INI。重啟keil即可生效(務必要重啟keil)。
3.安裝燒寫軟件,因為用的是STC公司的主控芯片所以直接用其公司的stc-isp-15xx-v6.82、
做完以上三步就可以寫程序下載到單片機里使用了,不過單片機連接到電腦前最好先確認下主控芯片有沒裝反,記住豁口朝的位置,裝反會導致主控芯片燒壞。
二、51單片機最小系統版學習順序
認識了解51單片機----->C語言基礎----->單片機最小系統組成----->使用LED燈----->使用數碼管----->定時器\計數器----->使用鍵盤----->中斷系統----->串口通訊----->IIC總線的EEPROM----->數模轉換……
1.認識了解51單片機
單片機技術發展過程可分為三個主要階段:
①單芯片微機形成階段
1976年,Intel公司推出了MCS-48系列單片機 。8位CPU、1K字節ROM、64字節RAM、27根I/O線和1個8位定時/計數器。
特點是:存儲器容量較小,尋址范圍小(不大于4K),無串行接口,指令系統功能不強。
②性能完善提高階段
1980年,Intel公司推出了MCS-51系列單片機:8位CPU、4K字節ROM、128字節RAM、4個8位并口、1個全雙工串行口、2個16位定時/計數器。尋址范圍64K,并有控制功能較強的布爾處理器。
特點是:結構體系完善,性能已大大提高,面向控制的特點進一步突出。現在,MCS-51已成為公認的單片機經典機種 。
③微控制器化階段
1982年,Intel推出MCS-96系列單片機。
芯片內集成:16位CPU、8K字節ROM、232字節RAM、5個8位并口、1個全雙工串行口、2個16位定時/計數器。尋址范圍64K。片上還有8路10位ADC、1路PWM輸出及高速I/O部件等。
特點是:片內面向測控系統外圍電路增強,使單片機可以方便靈活地用于復雜的自動測控系統及設備。
“微控制器”的稱謂更能反應單片機的本質。
單片機工作的基本時序
機器周期和指令周期
(1) 振蕩周期: 也稱時鐘周期, 是指為單片機提供時鐘脈沖信號的振蕩源的周期。
(2) 狀態周期: 每個狀態周期為時鐘周期的 2 倍, 是振蕩周期經二分頻后得到的。
(3) 機器周期: 一個機器周期包含 6 個狀態周期S1~S6, 也就是 12 個時鐘周期。 在一個機器周期內, CPU可以完成一個獨立的操作。
(4) 指令周期: 它是指CPU完成一條操作所需的全部時間。 每條指令執行時間都是有一個或幾個機器周期組成。MCS - 51 系統中, 有單周期指令、雙周期指令和四周期指令。
stc89C52主控芯片原理圖
2.c51語言基礎
C語言是一種編譯型程序設計語言,它兼顧了多種高級語言的特點,并具備匯編語言的功能。目前,使用C語言進行程序設計已經成為軟件開發的一個主流。用C語言開發系統可以大大縮短開發周期,明顯增強程序的可讀性,便于改進和擴充。而針對8051的C語言日趨成熟,成為了專業化的實用高級語言。
單片機C51語言是由C語言繼承而來的。和C語言不同的是,C51語言運行于單片機平臺,而C語言則運行于普通的桌面平臺。C51語言具有C語言結構清晰的優點,便于學習,同時具有匯編語言的硬件操作能力。對于具有C語言編程基礎的讀者,能夠輕松地掌握單片機C51語言的程序設計。
(1)剛開始使用時主要需要記住兩個c語言擴充定義:
①sfr:特殊功能寄存器聲明。
②sbit:特殊功能位聲明。
(2)常用運算符:
+ - * / (加 減 乘 除)
> >= < <= (大于 大于等于 小于 小于等于)
== != (測試等于 測試不等于)
&& || ! (邏輯與 邏輯或 邏輯非 )
>> << (位右移 位左移)
& | (按位與 按位或)
^ ~ (按位異或 按位取反)
(3)最常用的基本數據類型:
unsigned char 占8位 表示0~255
unsigned int 占16位 表示0~65535
signed char 占8位 表示-128~127
(4)c51包含的頭文件
通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h
常用有:reg51.h (定義特殊功能寄存器和位寄存器);
math.h (定義常用數學運算);
評論