單片機(jī)的語(yǔ)言編程_第1頁(yè)
單片機(jī)的語(yǔ)言編程_第2頁(yè)
單片機(jī)的語(yǔ)言編程_第3頁(yè)
單片機(jī)的語(yǔ)言編程_第4頁(yè)
單片機(jī)的語(yǔ)言編程_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)的語(yǔ)言編程第1頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月3.1C及C51語(yǔ)言概述

語(yǔ)言簡(jiǎn)潔,使用方便靈活??梢浦残院谩1磉_(dá)能力強(qiáng)。表達(dá)方式靈活??蛇M(jìn)行結(jié)構(gòu)化程序設(shè)計(jì)??梢灾苯硬僮饔?jì)算機(jī)硬件。生成的目標(biāo)代碼質(zhì)量高。第2頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月3.1C51的數(shù)據(jù)類(lèi)型關(guān)鍵字:關(guān)鍵字則是編程語(yǔ)言保留的特殊標(biāo)識(shí)符,它們具有固定名稱(chēng)和含義,在程序編寫(xiě)中不允許標(biāo)識(shí)符與關(guān)鍵字相同。在C51中的關(guān)鍵字除了有ANSIC標(biāo)準(zhǔn)的32個(gè)關(guān)鍵字外還根據(jù)51單片機(jī)的特點(diǎn)擴(kuò)展了相關(guān)的關(guān)鍵字,見(jiàn)表中的C51編譯器的擴(kuò)展關(guān)鍵字。第3頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月關(guān)鍵字用途說(shuō)明bit位標(biāo)量聲明聲明一個(gè)位標(biāo)量或位類(lèi)型的函數(shù)sbit位標(biāo)量聲明聲明一個(gè)可位尋址變量sfr特殊功能寄存器聲明聲明一個(gè)特殊功能寄存器sfr16特殊功能寄存器聲明聲明一個(gè)16位的特殊功能寄存器data存儲(chǔ)器類(lèi)型說(shuō)明直接尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器bdata存儲(chǔ)器類(lèi)型說(shuō)明可位尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器idata存儲(chǔ)器類(lèi)型說(shuō)明間接尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器pdata存儲(chǔ)器類(lèi)型說(shuō)明分頁(yè)尋址的外部數(shù)據(jù)存儲(chǔ)器xdata存儲(chǔ)器類(lèi)型說(shuō)明外部數(shù)據(jù)存儲(chǔ)器code存儲(chǔ)器類(lèi)型說(shuō)明程序存儲(chǔ)器interrupt中斷函數(shù)說(shuō)明定義一個(gè)中斷函數(shù)reentrant再入函數(shù)說(shuō)明定義一個(gè)再入函數(shù)using寄存器組選擇選擇單片機(jī)的工作寄存器組_at_絕對(duì)地址說(shuō)明為非位變量指定存儲(chǔ)空間絕對(duì)地址small存儲(chǔ)模式選擇參數(shù)及局部變量放入可直接尋址的內(nèi)部RAMcompact存儲(chǔ)模式選擇參數(shù)及局部變量放入分頁(yè)外部數(shù)據(jù)存儲(chǔ)區(qū)large存儲(chǔ)模式選擇參數(shù)及局部變量放入分頁(yè)外部數(shù)據(jù)存儲(chǔ)區(qū)關(guān)鍵字:第4頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月數(shù)據(jù)類(lèi)型的具體定義:數(shù)據(jù)類(lèi)型說(shuō)明長(zhǎng)度值域unsignedchar無(wú)符號(hào)字符型單字節(jié)0~255signedchar帶符號(hào)字符型單字節(jié)-128~+127unsignedint無(wú)符號(hào)整型雙字節(jié)0~65535signedint帶符號(hào)整型雙字節(jié)-32768~+32767unsignedlong無(wú)符號(hào)長(zhǎng)整型四字節(jié)0~4294967295signedlong帶符號(hào)長(zhǎng)整型四字節(jié)-2147483648~+2147483647float單精度型四字節(jié)±1.175494E-38~±3.402823E+38*指針1~3字節(jié)對(duì)象的地址bit位變量位0或1sfr8位特殊功能寄存器單字節(jié)0~255sfr1616位特殊功能寄存器雙字節(jié)0~65535sbit可位尋址定義位0或1第5頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月 #include“reg51.h” sbitP0_0=P0^0; voidmain() { P0_0=0; while(1); }例1:利用MCS-51單片機(jī)的P0引腳P0.0引接一只LED,送“0”點(diǎn)亮,送“1”滅。則要求點(diǎn)亮,程序如下:第6頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月#include代表的是加載頭文件,頭文件是C編譯器中帶的已經(jīng)定義的函數(shù)的集合或自定義的一個(gè)函數(shù)的集合。程序中加載一個(gè)reg51.h的文件,那么打開(kāi)reg51.h里邊的內(nèi)容是什么呢?如編碼器在C盤(pán)下C51文件夾內(nèi),則REG51.h文件的路徑是C:\keil\C51\INC\reg51.h。例如:P1定義為

sfrP1=0x90;累加器A定義為

sfrACC=0xE0;定時(shí)模式TMOD定義為sfrTMOD=0x89;第7頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月main()函數(shù)也稱(chēng)為主函數(shù)C語(yǔ)言都是從main()函數(shù)開(kāi)始執(zhí)行的。前面加了一個(gè)void是說(shuō)明該函數(shù)是沒(méi)有返回值的。如果點(diǎn)量8個(gè)燈,可P0=0x00對(duì)引腳送0,則點(diǎn)亮單色燈,0x00對(duì)應(yīng)二進(jìn)制數(shù)值00000000,所以該條語(yǔ)句是同時(shí)點(diǎn)亮了8只單色燈。整個(gè)程序用{}括起來(lái),形成了一個(gè)完整的C51程序。上例中,符號(hào)P0(代表P0鎖存器)已經(jīng)在頭文件“reg51.h”中有定義。P0_0表示P0.0引腳,它沒(méi)有被事先定義好,所以需要使用sbit進(jìn)行定義。第8頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月例2:P3.2引腳接一個(gè)按鍵,P1口接8只單色燈,單色燈0亮1滅,當(dāng)有按鍵按下時(shí)8只單色燈高低4位交替閃亮一次。按鍵按下接收到0,否則為1。#include“reg51.h”sbitkey=P3^2;voidmain(){unsignedcharT1=0x0F,T2=0xF0,keyT;unsignedinti;for(;;){keyT=key;第9頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月if(~keyT) { P1=T1;//高4位亮低4位滅

for(i=0;i<10000;i++);//延時(shí)作用

P1=T2;//高4位滅低4位亮

for(i=0;i<10000;i++);//延時(shí)作用

}}}例2:P3.2引腳接一個(gè)按鍵,P1口接8只單色燈,單色燈0亮1滅,當(dāng)有按鍵按下時(shí)8只單色燈高低4位交替閃亮一次。按鍵按下接收到0,否則為1。第10頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月3.2函數(shù)3.2.1函數(shù)定義通常C語(yǔ)言的編譯器會(huì)自帶標(biāo)準(zhǔn)的函數(shù)庫(kù),這些都是一些常用的函數(shù)。標(biāo)準(zhǔn)函數(shù)已由編譯器軟件商編寫(xiě)定義,使用者直接調(diào)用就可以了,而無(wú)需定義。同時(shí)C語(yǔ)言允許使用者根據(jù)需要編寫(xiě)特定功能的函數(shù),要調(diào)用它必須要先對(duì)其進(jìn)行定義。定義的模式如下:函數(shù)類(lèi)型函數(shù)名稱(chēng)(形式參數(shù)表){ 函數(shù)體}第11頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月3.2.2函數(shù)的調(diào)用調(diào)用就是指一個(gè)函數(shù)體中引用另一個(gè)已定義的函數(shù)來(lái)實(shí)現(xiàn)所需要的功能,這時(shí)函數(shù)體稱(chēng)為主調(diào)用函數(shù),函數(shù)體中所引用的函數(shù)稱(chēng)為被調(diào)用函數(shù)。一個(gè)函數(shù)體中可以調(diào)用數(shù)個(gè)其它的函數(shù),這些被調(diào)用的函數(shù)同樣也可以調(diào)用其它函數(shù),也可以嵌套調(diào)用。在C51語(yǔ)言中主函數(shù)main是不能被其它函數(shù)所調(diào)用的。第12頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月調(diào)用函數(shù)的一般形式如下:函數(shù)名(實(shí)際參數(shù)表)“函數(shù)名”就是指被調(diào)用的函數(shù)。實(shí)際參數(shù)表可以為零或多個(gè)參數(shù),多個(gè)參數(shù)時(shí)要用逗號(hào)隔開(kāi),每個(gè)參數(shù)的類(lèi)型、位置應(yīng)與函數(shù)定義時(shí)所的形式參數(shù)一一對(duì)應(yīng),它的作用就是把參數(shù)傳到被調(diào)用函數(shù)中的形式參數(shù),如果類(lèi)型不對(duì)應(yīng)就會(huì)產(chǎn)生一些錯(cuò)誤。調(diào)用的函數(shù)是無(wú)參函數(shù)時(shí)不寫(xiě)參數(shù),但不能省后面的括號(hào)。第13頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月3.2.3中斷函數(shù)中斷服務(wù)函數(shù)只有在CPU響應(yīng)中斷時(shí)才會(huì)被執(zhí)行,這在處理突發(fā)事件和實(shí)時(shí)控制是十分有效的。

關(guān)鍵字是interrupt,是函數(shù)定義時(shí)的一個(gè)必選項(xiàng),只要在某個(gè)函數(shù)定義后面加上這個(gè)選項(xiàng),這個(gè)函數(shù)就變成了中斷服務(wù)函數(shù)。第14頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月定義中斷服務(wù)函數(shù)時(shí)可以用如下的形式。函數(shù)類(lèi)型函數(shù)名(形式參數(shù))interruptn[usingn]interrupt缺省關(guān)鍵字是不可的,由它告訴編譯器該函數(shù)是中斷服務(wù)函數(shù),并由后面的n指明所使用的中斷號(hào)。n的取值范圍為0-31,但具體的中斷號(hào)要取決于芯片的型號(hào),像AT89C51實(shí)際上就使用0-4號(hào)中斷。每個(gè)中斷號(hào)都對(duì)應(yīng)一個(gè)中斷向量,具體地址為8n+3,中斷源響應(yīng)后處理器會(huì)跳轉(zhuǎn)到中斷向量所處的地址執(zhí)行程序編譯器會(huì)在這地址上產(chǎn)生一個(gè)無(wú)條件跳轉(zhuǎn)語(yǔ)句,轉(zhuǎn)到中斷服務(wù)函數(shù)所在的地址執(zhí)行程序。第15頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月下表是8051的中斷向量和中斷號(hào)。注意:函數(shù)不能直接調(diào)用中斷函數(shù);不能通過(guò)形參傳遞參數(shù);但中斷函數(shù)允許調(diào)用其它函數(shù),兩者所使用的寄存器組應(yīng)相同。

第16頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月#include<reg51.h>sbitP1_0=P1^0;voidtimer0(void)interrupt1using1{

/*T0中斷服務(wù)程序入口*/P1_0=!P1_0;TH0=-(1000/256);

/*計(jì)數(shù)初值重裝*/TL0=-(1000%256);}例3設(shè)單片機(jī)的fosc=12MHz,要求用T0的方式1編程,在P1.0腳輸出周期為2ms的方波。第17頁(yè),課件共19頁(yè),創(chuàng)作于2023年2月voidmain(void){TMOD=0x01;

/*T0工作在定時(shí)器方式1*/P1_0=0;TH0=-(1000/256);

/*預(yù)置計(jì)數(shù)初值*/TL0=-(1000%256);EA=1;

/*CPU開(kāi)中斷*/ET0=1;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論