PART1點亮最小單片機(jī)系統(tǒng)三C51編程_第1頁
PART1點亮最小單片機(jī)系統(tǒng)三C51編程_第2頁
PART1點亮最小單片機(jī)系統(tǒng)三C51編程_第3頁
PART1點亮最小單片機(jī)系統(tǒng)三C51編程_第4頁
PART1點亮最小單片機(jī)系統(tǒng)三C51編程_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

單片機(jī)及其應(yīng)用1

C51與ANSI-C區(qū)別

C51編程示例32PART1點亮最小的單片機(jī)系統(tǒng)(二)C51編程

C與匯編比較1C與匯編比較匯編編程C編程優(yōu)點:執(zhí)行效率高對底層硬件的控制性好缺點:可讀性、可移植性差不易維護(hù)開發(fā)效率低屏蔽硬件特征模塊化開發(fā)可讀性、可移植性好易于開發(fā)、維護(hù)單片機(jī)系統(tǒng)要求操作底層硬件C512全局變量定義C與匯編頭文件

#include<reg51.h>

…主程序

sbitLED=P1^1;

main(){LED=0;}向量表定義

ORG0000HLJMPSTART

ORG0003HLJMPINT0

ORG000BHLJMPTIMER0…程序體

START:CLRP1.1…

SJMP$END????程序入口在哪里?主程序循環(huán)體在哪兒?這是什么頭文件?這是什么關(guān)鍵字?

main(){LED=0;while(1)

{}}3C51與ANSI-CC51與ANSI-C比較基本語法、程序結(jié)構(gòu)、編程特征相同不同之處:擴(kuò)展關(guān)鍵字常用庫文件編譯生成基本數(shù)據(jù)類型存儲類型關(guān)鍵字其它擴(kuò)展關(guān)鍵字4C51常用庫文件介紹C51常用的庫文件有三個:reg51.habsacc.hintrins.hMCS-51兼容單片機(jī),SFR定義頭文件絕對地址訪問頭文件匯編編寫的常用宏\KEIL\C51\INC路徑下5C51程序編譯介紹KEILC51環(huán)境下,編譯源C51文件:

需要建立工程

在工程中加入待編譯源文件

編譯工程

編譯后生成的可執(zhí)行文件*.HEX

該文件與工程同名,而不是與源文件同名

編譯后生成的其它文件*.lst列表文件,可查看程序空間占用,數(shù)據(jù)區(qū)占用情況*.M51存儲映射文件6C51的基本數(shù)據(jù)類型與ANSI-C相同的基本數(shù)據(jù)類型char(unsignedchar)int(unsignedint)long(unsignedlong)floatdouble數(shù)據(jù)類型空間分配1Byte2Byte4Byte4Byte8Byte沒有ANSI-C中的bool類型∵51單片機(jī)是8位單片機(jī)∴C51編程中最常用的數(shù)據(jù)類型是1Byte的unsignedchar型unsignedchar7C51的基本數(shù)據(jù)類型C51特有的基本數(shù)據(jù)類型bit/sbit位類型bit定義內(nèi)部RAM20H~2FH之間的位尋址區(qū)中某位sbit定義可位尋址的SFR中的某位bitflag;sbitLED=P1^1;sfr定義特殊功能寄存器用于SFR名稱與其物理地址之間建立聯(lián)系sfrP1=0x90;regxx.hSFR表8C51變量定義與存儲類型關(guān)鍵字C51變量定義格式[memspace]typevariablename[_at_[constant]];memspacememspace指定變量所在存儲尋址區(qū)域(可缺?。┛墒褂玫年P(guān)鍵字片內(nèi)RAMdataidata直接尋址方式@Ri間接尋址方式位尋址空間bdata片外RAMxdatapdata@Ri間接尋址方式@DPTR間接尋址方式程序存儲器code9C51變量定義與存儲類型關(guān)鍵字C51存儲類型關(guān)鍵字[memspace]typevariablename[_at_[constant]];dataidatabdataxdatapdatacodebitflag;dataunsignedcharvar1;codeunsignedcharled_tbl[10]={…};bit/sbit/sfr三種類型對應(yīng)存儲區(qū)域不需指定內(nèi)部RAM速度快,這是最常用的變量定義語句code類型只讀,定義時需要進(jìn)行初始化10C51變量定義與存儲類型關(guān)鍵字C51存儲類型關(guān)鍵字[memspace]typevariablename[_at_[constant]];當(dāng)memspace關(guān)鍵字缺省時,變量開辟空間位于何處?此時,根據(jù)編譯選項中采用的存儲模式,決定變量存儲區(qū)。smallcompactlarge將所有變量都放入內(nèi)部RAM,相當(dāng)于全部data類型所有變量優(yōu)先放入外部RAM的低256B,相當(dāng)于pdata所有變量都分配在外部RAM64KB空間,相當(dāng)于xdata11C51中其它擴(kuò)展關(guān)鍵字中斷函數(shù)定義中斷產(chǎn)生后,怎樣轉(zhuǎn)到中斷服務(wù)函數(shù)執(zhí)行?MCS-51采用中斷向量表ORG0003HLJMPINTP0ORG000BHLJMPTIMERP0ORG0013HLJMPINTP1ORG001BHLJMPTIMERP1ORG0023HLJMPUARTPC51解決方法關(guān)鍵字:interruptusingvoidtimer1_service()interrupt1using112C51中其它擴(kuò)展關(guān)鍵字voidtimer1_service()interrupt1using1interruptnusingn

標(biāo)明該函數(shù)是n號中斷的服務(wù)程序n取值0~4,分別對應(yīng)外部中斷0,定時器0,外部中斷1,定時器1和串口

標(biāo)明函數(shù)使用的通用寄存器組n取值0~3,分別對應(yīng)內(nèi)部RAM區(qū)域的4組R0~R8通用寄存器13外部數(shù)據(jù)存儲區(qū)(前256B)C51對絕對地址存儲單元的控制單片機(jī)系統(tǒng)需要直接通過地址控制底層存儲單元C51中對絕對地址的訪問方法①

絕對宏頭文件

absacc.h定義下列訪問絕對地址的宏CBYTEXBYTEDBYTEPBYTECWORDXWORDDWORDPWORD程序存儲區(qū)外部數(shù)據(jù)存儲區(qū)(64KB)內(nèi)部數(shù)據(jù)存儲區(qū)預(yù)定義:#defineVAR1=XBYTE[地址]程序中:直接對VAR1操作,即操作外部數(shù)據(jù)存儲區(qū)對應(yīng)地址單元用法②_at_關(guān)鍵字14C51對絕對地址存儲單元的控制C51中對絕對地址的訪問方法②_at_關(guān)鍵字[memspace]typevariablename[_at_[constant]];[

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論