freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

單片機技術及應用--第九章c51程序設計及應用-資料下載頁

2025-01-20 02:57本頁面
  

【正文】 910 51系列芯片中斷號和中斷向量 單片機技術與應用實踐 注意: (1)中斷函數(shù)不能進行參數(shù)傳遞。 (2) 中斷函數(shù)沒有返回值。 (3)在任何情況下都不能直接調(diào)用中斷函數(shù),否則會產(chǎn)生編譯錯誤。 (4)如果在中斷函數(shù)中調(diào)用了其他函數(shù),則被調(diào)用函數(shù)所使用的寄存器必須與中斷函數(shù)相同;否則會產(chǎn)生不正確的結(jié)果。 (5)C51編譯器對中斷函數(shù)編譯時會自動在程序開始和結(jié)束處加上相應的內(nèi)容,具體如下:在程序開始處對 ACC、 B、 DPH、 DPL和PSW入棧,結(jié)束時出棧。中斷函數(shù)未加 using n修飾符的,開始時還要將 R0~ R1入棧,結(jié)束時出棧。如中斷函數(shù)加 using n修飾符,則在開始將 PSW入棧后還要修改 PSW中的工作寄存器組選擇位。 (6)C51編譯器從絕對地址 8m+3處產(chǎn)生一個中斷向量,其中 m為中斷號,也即 interrupt后面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉(zhuǎn)。 (7)中斷函數(shù)最好寫在文件的尾部,并且禁止使用 extern存儲類型說明。防止其他程序調(diào)用。 單片機技術與應用實踐 修飾符 using n用于指定本函數(shù)內(nèi)部使用的工作寄存器組,其中 n的取值為 0~ 3,表示寄存器組號。 對于 using n修飾符的使用,應注意以下兩點: (1)加入 using n后, C51在編譯時自動在函數(shù)的開始處和結(jié)束處加入以下指令。 { PUSH PSW 。標志寄存器入棧 MOV PSW,與寄存器組號相關的常量 … POP PSW 。標志寄存器出棧 } (2)using n修飾符不能用于有返回值的函數(shù)。 【 例 918】 編寫一個用于統(tǒng)計外中斷 0的中斷次數(shù)的中斷服務程序。 extern int x。 void int0( ) interrupt 0 using 1 { x++。} 6. using n修飾符 單片機技術與應用實踐 函數(shù)的調(diào)用與聲明 函數(shù)定義好以后,要被其他函數(shù)調(diào)用才能被執(zhí)行。 C 語言的函數(shù)是能相互調(diào)用的, 但在調(diào)用函數(shù)前,必須對函數(shù)的類型進行說明,就算是標準庫函數(shù)也不例外。標準庫函數(shù)的說明會被按功能分別寫在不一樣的頭文件中,使用時只要在文件最前面用 include預處理語句引入相應的頭文件即可。調(diào)用就是指一個函數(shù)體中引用另一個已定義的函數(shù)來實現(xiàn)所需要的功能,這時函數(shù)體稱為主調(diào)用函數(shù),函數(shù)體中所引用的函數(shù)稱為被調(diào)用函數(shù)。 一個函數(shù)體中能調(diào)用數(shù)個其他的函數(shù),這些被調(diào)用的函數(shù)同樣也能調(diào)用其他函數(shù),即 函數(shù)允許嵌套調(diào)用 ,需要注意的是 函數(shù)不允許嵌套定義 。在 C51中有一個函數(shù)是不能被其他函數(shù)所調(diào)用的,它就是主函數(shù) main( )。 單片機技術與應用實踐 格式: 函數(shù)名 (實參列表 )。 “函數(shù)名”就是指被調(diào)用的函數(shù)。實際參數(shù)表能為零或多個參數(shù),多個參數(shù)時要用逗號隔開,每個參數(shù)的類型、位置應與函數(shù)定義時的形式參數(shù)一一對應,它的作用就是把實際參數(shù)傳到被調(diào)用函數(shù)中的形式參數(shù),如果類型不對應就會產(chǎn)生錯誤。調(diào)用的函數(shù)是無參函數(shù)時不寫參數(shù),但不能省略后面的括號。 按照函數(shù)調(diào)用在主調(diào)函數(shù)中出現(xiàn)的位置,函數(shù)調(diào)用方式有 3種: (1)函數(shù)語句 。把被調(diào)用函數(shù)作為主調(diào)用函數(shù)的一個語句。如 printf (“Hello Keil C51!\n”)。 (2)函數(shù)表達式 。函數(shù)被放在一個表達式中,以一個運算對象的方式出現(xiàn)。這時的被調(diào)用函數(shù)要求帶有返回語句,以返回一個明確的數(shù)值參數(shù)表達式的運算。如 temp = Count( )。 (3)函數(shù)參數(shù) 。被調(diào)用函數(shù)作為另一個函數(shù)的參數(shù)。如 x=fun2(fun1(5))。 1.函數(shù)的調(diào)用 單片機技術與應用實踐 調(diào)用函數(shù)前要對被調(diào)用的函數(shù)進行聲明。如果在函數(shù)調(diào)用之前沒有對函數(shù)進行聲明,則編譯系統(tǒng)會把第一次遇到的該函數(shù)形式 (函數(shù)定義或函數(shù)調(diào)用 )作為函數(shù)的聲明,并將函數(shù)類型默認為 int型。標準庫函數(shù)只要用 include引入已寫好說明的頭文件,在程序中就能直接調(diào)用函數(shù)了。 格式: [extern] 函數(shù)類型 函數(shù)名 (形式參數(shù)表 )。 函數(shù)的聲明是把函數(shù)的名字、函數(shù)類型以及形參的類型、個數(shù)和順序通知編譯系統(tǒng),以便調(diào)用函數(shù)時系統(tǒng)進行對照檢查。函數(shù)的聲明后面要加分號。也可以把這些寫到“文件名 .h”的文件中用 include“文件名 .h”引入。如果聲明的函數(shù)在文件內(nèi)部,則聲明時不用 extern;否則,聲明時須帶 extern,指明使用的函數(shù)在另一個文件中。 函數(shù)的定義和聲明是完全不一樣的,在編譯的角度上看函數(shù)的定義是把函數(shù)編譯存放在 ROM的某一段地址上,而函數(shù)聲明是告訴編譯器要在程序中使用哪些函數(shù)并確定函數(shù)的地址。如果在同一文件中被調(diào)函數(shù)的定義在主調(diào)函數(shù)之前,此種情況可以不用函數(shù)聲明。要注意的是,函數(shù)定義和聲明中的 “類型、形參表、名稱”等都要相一致。 2.自定義函數(shù)的聲明 單片機技術與應用實踐 include include int Count(void)。 //聲明函數(shù) void main(void) { unsigned int temp。 SCON = 0x50。 TMOD = 0x20。 TCON = 0x40。 TH1 = 0xE8。 TL1 = 0xE8。 TI = 1。 TR1 = 1。 //啟動定時器 temp = Count()。 printf (sum=%d\n,temp)。 //顯示 while(1)。 } int Count(void) { unsigned int i, sum=0。 for (i=1。 i=10。 i++) { sum =i + sum。 //累加 } return (sum)。 } //最后運行結(jié)果是 SUM=55 【 例 919】 使用函數(shù)調(diào)用形式實現(xiàn)計算并輸出 1~ 10的累加和。 單片機技術與應用實踐 1) 函數(shù)的嵌套 在一個函數(shù)的調(diào)用過程中調(diào)用另一個函數(shù)。 C51編譯器通常依靠堆棧來進行參數(shù)傳遞,堆棧設在片內(nèi) RAM中,而片內(nèi) RAM的空間有限,因而嵌套的深度比較有限,一般在幾層以內(nèi)。如果層數(shù)過多,就會導致堆??臻g不夠而出錯。 2) 函數(shù)的遞歸 遞歸調(diào)用是嵌套調(diào)用的一個特殊情況。如果在調(diào)用一個函數(shù)過程中又出現(xiàn)了直接或間接調(diào)用該函數(shù)本身,則稱為函數(shù)的遞歸調(diào)用。 在函數(shù)的遞歸調(diào)用中要避免出現(xiàn)無終止的自身調(diào)用,應通過條件控制結(jié)束遞歸調(diào)用,使得遞歸的次數(shù)有限。 3.函數(shù)的嵌套與遞歸 單片機技術與應用實踐 一維數(shù)組只有一個下標,定義的格式如下: 數(shù)據(jù)類型說明符 數(shù)組名 [常量表達式 ][={初值 ,初值 , ……}] 數(shù)組 數(shù)組是指有限個屬性相同、類型相同的數(shù)據(jù)的有機組織。數(shù)組和普通變量一樣,要求先定義再使用。 1.一維數(shù)組 各部分說明如下: (1)“數(shù)據(jù)類型說明符”說明了數(shù)組中各個元素存儲的數(shù)據(jù)類型,每個數(shù)組中的數(shù)據(jù)單元只能是同一數(shù)據(jù)類型。 (2)“數(shù)組名”是整個數(shù)組的標識符,命名方法和變量命名方法是一樣的。 單片機技術與應用實踐 (3)“常量表達式”,常量表達式是表示數(shù)組的長度和維數(shù),必須用方括號“ []”括起來,括號里的數(shù)不能是變量而只能是整型常量,用于說明該數(shù)組的長度,即該數(shù)組元素的個數(shù)。允許在定義時對全部數(shù)組元素賦值情況下數(shù)組長度省略不寫。如: a[ ]={1,2}。等價于 a[2 ]={1,2}。 (4)“初值”部分用于給數(shù)組元素賦初值,這部分在數(shù)組定義時屬于可選項。對數(shù)組元素賦值,可以在定義時賦值,也可以在定義之后賦值。在定義時賦值,后面須帶等號,初值須用花括號括起來,括號內(nèi)的初值兩兩之間用逗號間隔,可以對數(shù)組的全部元素賦值,也可以只對部分元素賦值。初值為 0的元素可以只用逗號占位而不寫初值 0。 例如: Unsigned int a[3]={1,2}, b[ ]={3,4,5,6,7 }。 C語言規(guī)定下標從零開始計數(shù),其取值范圍是從 0~ N1,作用是指明該元素在數(shù)組中的相對位置,以方便引用。因 此上面定義 a、 b數(shù)組的各元素是:a[0]= a[1]= a[2]=0; b[0]= b[1]= b[2]= b[3]= b[4]=7。 C51規(guī)定在引用數(shù)組時,只能逐個引用數(shù)組中的各個元素,而不能一次引用整個數(shù)組。但如果是字符數(shù)組則可以一次引用整個數(shù)組。 單片機技術與應用實踐 【 例 920】 將顯示數(shù)據(jù)緩沖區(qū) display_data_buff中的數(shù)字 0~ 15轉(zhuǎn)換成 7段字形碼送顯示字形緩沖區(qū) display_data_buff。 include include include void main (void) {unsigned char data i,num。 unsigned char data display_data_buff[8]。 //顯示數(shù)據(jù)緩沖區(qū) unsigned char data display_code_buff[8]。 //字形顯示緩沖區(qū) unsigned char code display_code[16]= {0x0c0, 0x0f9, 0x0a4, 0x0b0, 0x99, 0x92, 0x82, 0x0f8, // 0,1,2,3,4,5,6,7 0x80, 0x90, 0x88, 0x83, 0x0c6, 0x0a1, 0x86, 0x8e, //8,9,A,B,C,D,E,F}。 for (i=0。i=7。i++) {num=display_data_buff[i]。 display_code_buff[i]=display_code[num]。 }} 單片機技術與應用實踐 2.字符數(shù)組 用來存放字符數(shù)據(jù)的數(shù)組稱為字符數(shù)組。字符數(shù)組的定義格式與數(shù)值型數(shù)值類似,只不過類型為 char。 格式: char 數(shù)組名 [長度 ]。 例如: char adds[15] = Shang Hai。 /*正確 */ char name[5] = Beijing。 /*錯誤,數(shù)組長度太小 */ char name[ ] = Hello!。 /*正確,等價于 char name[7] = Hello!。 */ 字符數(shù)組用于存放一組字符或字符串,字符串以“ \0”作為結(jié)束符,只存放字符的字符數(shù)組的賦值與使用和一維數(shù)值型數(shù)組完全相同。對于存放字符串的字符數(shù)組,既可以對字符數(shù)組的元素逐個進行訪問,也可以對整個數(shù)組按字符串的方式進行 處理。 單片機技術與應用實踐 【 例 921】 對字符數(shù)組進行輸入和輸出。 include //包含特殊功能寄存器庫 include //包含 I/O函數(shù)庫 main() { Char x[ ] = Hello !。 SCON=0x52。 TMOD=0X20。 TH1=0xF3。 TR1=1。 printf(%s, x)。 // 輸出全串: Hello ! x[3] = 39。\039。 printf(%s, x)。 //這時輸出: Hel while(1)。 } 單片機技術與應用實踐 3.二維數(shù)組 二維數(shù)組是指一個由若干同類型一維數(shù)組組成的集合,相當于若干行、若干列數(shù)據(jù)組成的陣列,在內(nèi)存中按行連續(xù)存儲。二維數(shù)組的表示要用到兩個下標:第一個下標代表行;第二個下標代表列。 格式: 類型 數(shù)組名 [行數(shù) ][列數(shù) ] 。 如: char name[5][20]。 /* 可表示 5個人的姓名,每個姓名的長度少于 20個字符 */ 單片機技術與應用實踐 實 踐 訓 練 任務 1: MCS51 I/O字節(jié)操作應用 任務 2: MCS51I/O位操作應用 任務 3: MCS51定時器應用 任務 4: MCS51外部中斷應用 任務 5: MCS51串行口中斷應用 任務 6: MCS51訪問外部數(shù)據(jù)存儲器的應用
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1