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

正文內(nèi)容

單片機第14章c語言程序設(shè)計-展示頁

2025-01-25 17:56本頁面
  

【正文】 ( 3)可移植性好。 ( 2)模塊化開發(fā)與資源共享 。 用 C51進行單片機軟件開發(fā),有 如下優(yōu)點 : ( 1)可讀性好。 Keil C51語言 是在 ANSI C的基礎(chǔ)上針對 51單片機的硬件特點進行的擴展, 并向 51單片機上移植,經(jīng)過多年努力,C51語言已經(jīng)成為公認的高效、簡潔而又貼近 51單片機硬件的實用高級編程語言。 6 編程語言 Keil C51簡介 目前 51系列單片機編程的 C語言都采用 Keil C51(簡稱C51), Keil C51是在標準 C語言基礎(chǔ)上發(fā)展起來的 。最后還對 C51的集成開發(fā)環(huán)境 Keil 181。 C51是在 標準 C的基礎(chǔ)上 ,根據(jù)單片機存儲器硬件結(jié)構(gòu)及內(nèi)部資源, 擴展了相應(yīng)的數(shù)據(jù)類型和變量 , 而 C51在語法規(guī)定、程序結(jié)構(gòu) 與 設(shè)計方法 上,都與標準 C相同。Vision3簡介 Keil 181。1 第 14章 單片機 C語言 程序設(shè)計基礎(chǔ) 2 第 14章 目錄 編程語言 Keil C51簡介 Keil C51簡介 Keil C51的開發(fā)環(huán)境 C51與標準 C的主要區(qū)別 C51語言程序設(shè)計基礎(chǔ) C51語言中的數(shù)據(jù) C51的位變量定義 一個簡單的 C51程序 C51的運算符 C51的分支與循環(huán)程序結(jié)構(gòu) 3 AT89S51不同存儲區(qū)的 C51定義 C51中斷服務(wù)函數(shù)的定義 C51的程序設(shè)計舉例 中斷程序的編寫 定時器程序的編寫 串行口方式 0應(yīng)用程序的編寫 獨立式鍵盤查詢方式 行列式鍵盤查詢方式 DAC0832應(yīng)用程序的編寫 4 ADC0809應(yīng)用程序的編寫 C51的集成開發(fā)環(huán)境 Keil 181。Vision3介紹 集成開發(fā)環(huán)境 Keil 181。Vision3軟件的安裝、啟動和運行 C51程序的開發(fā)流程 C51與匯編語言的混合編程 C51與 MCS51匯編語言的比較 C51與匯編語言混合編程的方法 5 內(nèi)容概要 本章在假定讀者 已掌握 標準 C語言前提下 ,初步介紹如何使用 C51來編寫 AT89C51單片機的應(yīng)用程序 。 本章重點介紹 C51對標準 C所擴展的部分 ,并通過一些 例程 來介紹 C51的程序設(shè)計思想。Vision3以及 C51與匯編語言的 混合編程 作以介紹。 Keil C51簡介 C語言是美國國家標準協(xié)會( ANSI)制定的編程語言標準, 1987年 ANSI公布 87 ANSI C,即標準 C語言。 7 目前大多數(shù)的 51單片機用戶都在使用 C51語言來進行程序設(shè)計。 C51語言程序比匯編語言程序的可讀性好,因而編程效率高,程序便于修改。用 C51開發(fā)出來的程序模塊可以不經(jīng)修改,直接被其他項目所用,這使得開發(fā)者能夠很好地利用已有的大量的標準 C程序資源與豐富的庫函數(shù),減少重復(fù)勞動。 為某種型號單片機開發(fā)的 C語言程序,只需將與硬件相關(guān)之處和編譯連接的參數(shù)進行適當修改,就可以方便地移植到其他型號的單片機上。 ( 4)代碼效率高 。 9 Keil C51的開發(fā)環(huán)境 Keil C51是 德國 Keil software公司開發(fā)的 用于 51系列單片機的 C51語言開發(fā)軟件 。它支持眾多的 MCS51架構(gòu)的芯片,同時集編輯、編譯、仿真等功能于一體,具有強大的軟件調(diào)試功能,是眾多的單片機應(yīng)用開發(fā)軟件中最優(yōu)秀的軟件之一。 現(xiàn)在, Keil C51已被 完全集成 到一個功能強大的全新集成開發(fā)環(huán)境( IDE) 181。Vision3環(huán)境中極為簡便地進行操作。Vision3兩個術(shù)語 。Vision3,可 簡寫為 181。 181。此外, 181。在 軟件模擬仿真方式下 不需任何 51單片機及其外圍硬件即可完成用戶程序仿真調(diào)試。 C51與標準 C的主要區(qū)別 不同的嵌入式處理器的 C編譯系統(tǒng) 與標準 C的不同之處 ,主要是它們所針對的嵌入式處理器的硬件系統(tǒng)不同。 深入理解 Keil C51對標準 C的 擴展部分 是掌握 Keil C51的關(guān)鍵之一。 51系列單片機廠家有多個,它們的差異在于內(nèi)部資源如定時器、中斷、 I/O等數(shù)量以及功能的不同 ,而對使用者來說,只需要將相應(yīng)的功能寄存器的頭文件加載在程序內(nèi),就可實現(xiàn)所具有的功能。 ( 2)數(shù)據(jù)類型的不同 。 14 ( 3)數(shù)據(jù)存儲類型的不同 。 標準 C并沒有提供這部分存儲器的地址范圍的定義。 ( 4)標準 C語言 沒有 處理 單片機中斷 的定義 。 由于標準 C的中的 部分庫函數(shù) 不適于嵌入式處理器系統(tǒng) ,因此被排除在 Keil C51之外,如字符屏幕和圖形函數(shù)。例如庫函數(shù) printf和 scanf,在標準 C中,這兩個函數(shù)通常用于屏幕打印和接收字符,而在 Keil C51中,它們主要用于串行口數(shù)據(jù)的收發(fā)。由于 51單片機的硬件資源有限,它的編譯系統(tǒng)不允許太多的程序嵌套。 16 但是從數(shù)據(jù)運算操作、程序控制語句以及函數(shù)的使用上來說, Keil C51與標準 C幾乎沒有什么明顯的差別。 17 C51語言程序設(shè)計基礎(chǔ) 本節(jié)介紹 C51語言程序設(shè)計的有關(guān)基礎(chǔ)知識。針對AT89S51單片機的硬件特點, C51在標準 C的基礎(chǔ)上, 擴展了 4種數(shù)據(jù)類型 (見 表中最后 4行 )。 18 表 141 Keil C51支持的數(shù)據(jù)類型 數(shù)據(jù)類型 位數(shù) 字節(jié)數(shù) 取值范圍 signed char 8 1 128~+127, 有符號字符變量 unsigned char 8 1 0~255, 無符號字符變量 signed int 16 2 32768~+32767, 有符號整型數(shù) unsigned int 16 2 0~65535, 無符號整型數(shù) signed long 32 4 2147483648~+2147483647, 有符號長整型數(shù) unsigned long 32 4 0~+4294967295, 無符號長整型數(shù) float 32 4 177。 , 浮點數(shù) (精確到 15位) * 24 1~3 對象指針 bit 1 0或 1 sfr 8 1 0~255 sfr16 16 2 0~65535 sbit 1 可進行位尋址的特殊功能寄存器 的某位的絕對地址 19 2. C51的擴展數(shù)據(jù)類型 下面對 表 141中擴展的 4種數(shù)據(jù)類型進行說明。 ( 2)特殊功能寄存器 sfr AT89S51特殊功能寄存器在片內(nèi) RAM區(qū)的 80H~FFH之間 ,“ sfr” 數(shù)據(jù)類型 占用一個內(nèi)存單元。 例如: sfr P1=0x90這一語句定義 P1口在片內(nèi)的寄存器,在后面語句中可用 “ P1=0xff” (使 P1的所有引腳輸出 20 為高電平 )之類的語句來操作特殊功能寄存器。 sfr16和 sfr一樣用于操作特殊功能寄存器。 例如: sfr16 DPTR=0x82語句定義了片內(nèi) 16位數(shù)據(jù)指針寄存器 DPTR,其低 8位字節(jié)地址為 82H。 21 ( 4)特殊功能位 sbit sbit 是指 AT89S51片內(nèi)特殊功能寄存器的可尋址位。 注意,不要把 bit與 sbit混淆。而 sbit定義的是特殊功能 22 寄存器的可尋址位, 其值是可進行位尋址的特殊功能寄存器的位絕對地址, 例如 PSW寄存器 OV位的絕對地址0xd2。在 51單片機中,程序存儲器與數(shù)據(jù)存儲器是完全分開的,且分為片內(nèi) 和 片外 兩個獨立的尋址空間,特殊功能寄存器與片內(nèi)RAM統(tǒng)一編址,數(shù)據(jù)存儲器與 I/O端口統(tǒng)一編址。 23 C51存儲類型 與 AT89S51的實際存儲空間 的對應(yīng)關(guān)系見 表 142。 ( 1)片內(nèi)數(shù)據(jù)存儲器 片內(nèi) RAM可分為 3個區(qū)域 : data: 片內(nèi)直接尋址區(qū) ,位于片內(nèi) RAM的低 128字節(jié)。 idata: 片內(nèi)間接尋址區(qū) ,片內(nèi) RAM所有地址單元 ( 00H~FFH)。 xdata: 片外數(shù)據(jù)存儲器 RAM的 64KB空間。 對單片機編程, 正確地 定義數(shù)據(jù)類型 以及 存儲類型 ,是所有編程者在編程前 都需要 首先考慮 的問題。只有對 C51中的各種數(shù)據(jù)類型以及存儲類型非常熟練的掌握,才能運用自如。在夠用的情況下,盡量選擇 8位即一個字節(jié)的 char型,特別是 unsiged char。 定義數(shù)據(jù)的存儲類型通常遵循如下原則: 只要條件滿足,盡量選擇內(nèi)部直接尋址的存儲類型 data,然后選擇idata即內(nèi)部間接尋址。 在內(nèi)部數(shù)據(jù)存儲器數(shù)量有限或不能滿足要求的情況下才使用外部數(shù)據(jù)存儲器。 需指出,擴展片外存儲器,原理上雖很簡單,但在實際開發(fā)中,很多時候,會帶來不必要的麻煩,如可能降低系統(tǒng)穩(wěn)定性、增加成本、拉長開發(fā)和調(diào)試周期等, 推薦充分利用片內(nèi)存儲空間。 29 C51的位變量定義 由于 AT89C51能夠進行位操作, C51擴展了“ bit”數(shù)據(jù)類型用來定義位變量,這是 C51與標準 C的不同之處。例如: bit func(bit b0, bit b1); /* 位變量 b0, b1作為函數(shù) func的參數(shù) */ { …… return(b1); /* 位變量 b1作為函數(shù)的返回值 */ } 31 3. 位變量的限制 位變量不能用來定義指針和數(shù)組 。 32 一個簡單的 C51程序 一個 C51源程序是由 一個個模塊化的函數(shù) 所構(gòu)成,函數(shù)是指程序中的一個模塊, main()函數(shù) 為程序的主函數(shù),其他若干個函數(shù)可以理解為一些子程序。程序設(shè)計者就是 編寫一系列的函數(shù)模塊 ,并在需要的時候調(diào)用這個函數(shù),實現(xiàn)程序所要求的功能。 【 例 141】 在 AT89S51的 接有一只發(fā)光二極管,二極管的陰極接 ,陽極通過限流電阻接 +5V,現(xiàn)在讓發(fā)光二極管每隔 800ms閃滅,占空比為 50%。 程序的 第 1行 是 “文件包含”, 是將另一個文件“ ” 的內(nèi)容全部包含進來。 程序包含 目的 就是為了使用 P1這個符號,即通知程序中所寫的 P1是指 AT89S51的 P1端口,而不是其他變量。雖然這里的“文件包含”只有一行,但 C編譯器在處理的時候卻要處理幾十行或幾百行。在 C51中,如果直接寫“ ”編譯器并不能識別,而且 個合法的 C51語言程序變量名,所以必須給它起一個另外的名字,這里起的名字是 P10,可是 P10是否就是 ,所以必須給它們建立聯(lián)系,這里 使用了 C51的 關(guān)鍵字 “ sbit”來進行定義。自行編寫的函數(shù) Delay( )的用途是軟件延時,調(diào)用時使用的這個“ 800”被稱為“實際參數(shù)”,以延時 800ms的時間。j333。}這條語句在反匯編時對應(yīng)的匯編代碼如下: CLR A /*1個機器周期 */ MOV R7, A /*2個機器周期 */ HERE: INC R7 /*1個機器周期 */ CJNE R7, 333, HERE /*2個機器周期 */ 39 其中 {。因而,該 for循環(huán)共需 1+2+333*(1+2)=1002個機器周期,約為 1ms。編程者可在一定范圍內(nèi)對 i、 j調(diào)整(不超過 i、 j的取值范圍),來控制延時時間的長短。 40 main為 “主函數(shù)”, 每一個 C語言程序有且只有一個主函數(shù),主函數(shù)后面一定有一對花括號“ {}”,在花括號里面書寫該函數(shù)的代碼行。 對普通函數(shù) ,從用戶使用的角度劃分 有兩種 : 一種是 標準庫函數(shù) ; 另一種 是 用戶自定義函數(shù) 。進行程序設(shè)計時,應(yīng)該善于充分利用 41 這些功能強大、資源豐富的標準庫函數(shù),提高編程效率。 例如 調(diào)用輸出函數(shù) printf時,要求程序在調(diào)用輸出庫函數(shù)前包含以下的 include 命令: include ( 2)用戶自定義函數(shù) 用戶根據(jù)自己需要所編寫的函數(shù)。編寫時,需要注意以下幾點。 例如: void Delay(unsigned int i) 函數(shù)體, 即函數(shù)首部下面的花括號“ { }”內(nèi)的部分。 C51區(qū)分大小寫 ,例如 Delay與 delay,編譯時是不同的兩個名稱。 43 從函數(shù)的定義的形式上劃分可以有 三種形 式: 無參數(shù)函數(shù)、有參數(shù)函數(shù) 和 空函數(shù) 。 ( 2)有參數(shù)函數(shù) 調(diào)用此種函數(shù)時,必須提供實際的輸入函數(shù), 必須說明與實際參數(shù)一一對應(yīng)的形式參數(shù) ,并在函數(shù)結(jié)束時返回結(jié)果,供調(diào)用它的函數(shù)使用。 44 ( 3)空函數(shù) 函數(shù)體內(nèi) 無語句,是空白的 。 定義空函
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1