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

正文內(nèi)容

基于51單片機(jī)交通燈控制器設(shè)計(jì)-文庫吧資料

2024-10-30 13:36本頁面
  

【正文】 ? 新建一個(gè)源文件并把它加入到項(xiàng)目中。 24 第 三 章 軟件系統(tǒng)設(shè)計(jì)介紹 圖 界面圖 創(chuàng)建項(xiàng)目實(shí)例 uVision2 包括一個(gè)項(xiàng)目管理器,它可以使 8x51 應(yīng)用系統(tǒng)的設(shè)計(jì)變得簡(jiǎn)單。 uVision2 支持所有的 Keil C51 工具,包括 C編譯器、宏匯編器、連接 /定位器、目標(biāo)代碼到 HEX 的轉(zhuǎn)換器。 8051 單片機(jī)的中斷源以及中斷編號(hào)如表 所示。 使用該擴(kuò)展屬性的函數(shù)聲明語法如下 : 返回值 函數(shù)名 interrupt n n 對(duì)應(yīng)中斷源的編號(hào)。 8. 中斷函數(shù) 51 單片機(jī)的中斷系統(tǒng)十分重要,可以用 C51 語言來聲明中斷和編寫中斷服務(wù)程序,當(dāng)然也可以用匯編語言來寫。重入函數(shù)可被遞歸調(diào)用和多重 調(diào)用而不用擔(dān)心變量被覆蓋,這是因?yàn)槊看魏瘮?shù)調(diào)用時(shí)的局部變量都會(huì)被單獨(dú)保存起來。因?yàn)楹瘮?shù)調(diào)用時(shí)可能會(huì)被中斷程序中斷,而在中斷程序中可能再次調(diào)用這個(gè)函數(shù),所以 C51允許將函數(shù)聲明成重入函數(shù)。為了提高效率, C51 沒有提供這種堆棧方式,而是提供一種壓縮棧的方式,即為每個(gè)函數(shù)設(shè)定一個(gè)空間用于存放局部變量。 7. 重入函數(shù) 由于 51單片機(jī)內(nèi)部堆??臻g有限, C51 沒有像大系統(tǒng)那樣使用調(diào)用堆 棧。 (6) 函數(shù)的寄存器組 所有 51 系列單片機(jī)的最低 32 字節(jié)分成 4個(gè)寄存器組,每個(gè)寄存器組的寄存器為 R0~ R7,寄存器組由 PSW 的兩位選擇。 函數(shù)使用 SMALL 存儲(chǔ)模式的好處是,局部變量和函數(shù)參數(shù)保存在 8051 內(nèi)部RAM,因此數(shù)據(jù)訪問效率高。 (4) 函數(shù)返回值 函數(shù)返回值一律放于寄存器中 。 (3) 用寄存器傳遞參數(shù) Keil C51 編譯器允許用 CPU 寄存器傳遞 3個(gè)參數(shù),這可以明顯提高系統(tǒng)性能。同時(shí),一些派生 的 51 系列單片機(jī)只提供 64 字節(jié)的片內(nèi)數(shù)據(jù)區(qū),大多數(shù)都是 256 字節(jié)。中斷22 第 三 章 軟件系統(tǒng)設(shè)計(jì)介紹 函數(shù)要求更多的堆??臻g,因?yàn)楸仨毲袚Q寄存器組,在堆棧中保存寄存器值。除了用堆棧傳遞函數(shù)參數(shù)外, Keil C51 編譯器還為每個(gè)函數(shù)參數(shù)分配一個(gè)特定地址,當(dāng)函數(shù)被調(diào)用時(shí),調(diào)用者在傳遞控制權(quán)前必須把參數(shù)拷貝到分配好的存儲(chǔ)區(qū),函數(shù)就可從固定的存儲(chǔ)區(qū)提取參數(shù)。 (2) 函數(shù)參數(shù)和堆棧 傳統(tǒng)的 8051 中堆棧指針只能訪問內(nèi)部數(shù)據(jù)區(qū), Keil C51 編譯器把堆棧定位在內(nèi)部數(shù)據(jù)區(qū)的所有變量的后面,堆棧指針間接訪問內(nèi)部存儲(chǔ)區(qū),可以使用 0xFF 前的所有內(nèi)部數(shù) 據(jù)區(qū)。 2)選擇所用的寄存器組 : 3)選擇存儲(chǔ)模式 : 4)指定重入 。 (4) 絕對(duì) 指針 絕對(duì)指針類型可訪問任何存儲(chǔ)區(qū)的存儲(chǔ)區(qū)地址,也可用絕對(duì)指針調(diào)用定位在絕對(duì)或固定地址的函數(shù)。 (3) 指針轉(zhuǎn)換 C51 編譯器可以在指定存儲(chǔ)區(qū)指針和通用指針之間轉(zhuǎn)換,指針轉(zhuǎn)換可以用類型轉(zhuǎn)換的直接程序代碼來強(qiáng)迫轉(zhuǎn)換,或在編譯器內(nèi)部強(qiáng)制轉(zhuǎn)換。 5. C51 指針 (1) 通用指針 C51 提供一個(gè) 3字節(jié)的通用指針,通用指針的聲明和使用均與標(biāo)準(zhǔn)C語言相同,但它同時(shí)還可以說明指針的存儲(chǔ)類型。 (3) sbit 聲明可位尋址的特殊功能寄存器和別的可位尋址的目標(biāo)。而是一個(gè) SFR 地基于 51 單片機(jī)交通燈控制器設(shè)計(jì) 21 址,其高字節(jié)必須位于低字節(jié)之后。 sfr16 聲明和 sfr 聲明遵循相同的原則,任何符號(hào)名都可用在 sfr16 的聲明中?!?=”后面的地址必須是常數(shù),不允許帶有運(yùn)算符的表達(dá)式,這個(gè)常數(shù)值的范圍必須在特殊功能寄存器地址范圍內(nèi),位于 0x80H 到 0xFFH 之間。 (1) sfr 聲明字節(jié)尋址的特殊功能寄存器,比如 sfr P0=0x80;表示 P0 口地址為 80H。這個(gè)區(qū)域可位尋址、字節(jié)尋址或字尋址,用以控制定時(shí)器、計(jì)數(shù)器、串口、 I/O 及其他部件。 4. 特殊功能寄存器 (SFR) 51 單片機(jī)提供 128 字節(jié)的 SFR 尋址區(qū),地址為 80H~ FFH 。 LARGE 在 LARGE 模式中,所有變量都默認(rèn)為位于外部數(shù)據(jù)存儲(chǔ)器 (這和使用xdata 指定存儲(chǔ)器類型是一樣的 ),并使用數(shù)據(jù)指針 DPTR 進(jìn)行尋址。和 SMALL 模式相比,該存儲(chǔ)器模型的效率比較低,對(duì)變量訪問的速度也慢 一些,但比 LARGE模式快。 ? COMPACT 當(dāng)使用 COMPACT 模式時(shí),所有變量都被默認(rèn)為在外部數(shù)據(jù)存儲(chǔ)器的頁內(nèi),這和使用 pdata 指定存儲(chǔ)器類 型 是一樣的。 ? SMALL 在該模式中,所有變量都默認(rèn)地位于 51內(nèi)部數(shù)據(jù)存儲(chǔ)器,這和使用data 指定存儲(chǔ)器類型的方式一樣。編譯的時(shí)候要對(duì)程序存儲(chǔ)區(qū)中的對(duì)象進(jìn)行初始化,否則就會(huì)產(chǎn)生錯(cuò)誤,程序存儲(chǔ)區(qū) CODE 聲明中的標(biāo)識(shí)符為 code,在 C51 編譯器中可用 code 存儲(chǔ)區(qū)類型標(biāo)識(shí)符來訪問程序存儲(chǔ)區(qū)。訪問外部數(shù)據(jù) 存儲(chǔ)區(qū)比訪問內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)慢,因?yàn)橥獠繑?shù)據(jù)存儲(chǔ)區(qū)是通過數(shù)據(jù)指針加載地址來間接訪問的。 IDATA 區(qū)聲明中的存儲(chǔ)類型標(biāo)識(shí)為 idata,指內(nèi)部的 256 字節(jié)的存儲(chǔ)區(qū),但是只能間接尋址,速度比直接尋址慢。如果想對(duì)浮點(diǎn)數(shù)的每 一位進(jìn)行尋址,可以通過包含 float 和 long 的聯(lián)合體來實(shí)現(xiàn) . ? IDATA 區(qū) IDATA 區(qū)存放使用比較頻繁的變量,使用寄存器作為指針進(jìn)行尋址,即在寄存器中設(shè)置 8 位地址進(jìn)行間接尋址。 BDATA 區(qū)聲明中的存儲(chǔ)類型標(biāo)識(shí)符為bdata,指內(nèi)部可位尋址的 1字節(jié)存儲(chǔ)區(qū) (20H到 2FH)可位尋址變量的數(shù)據(jù)類型。 ? BDATA 區(qū) BDATA 區(qū)實(shí)際就是 DATA 區(qū)中的位尋址區(qū),在這個(gè)區(qū)聲明變量就可進(jìn)行位尋址。但是 DATA 區(qū)的空間是有限的, DATA 區(qū)除了包含程序 變量外,還包含了堆棧和寄存器組。 基于 51 單片機(jī)交通燈控制器設(shè)計(jì) 19 表 存儲(chǔ)區(qū)的簡(jiǎn)單描述 存儲(chǔ)區(qū) 描述 DATA RAM 的低 128 字節(jié),可在一個(gè)周期內(nèi)直接尋址 BDATA DATA 區(qū)可字節(jié)、位混合尋址的 16 字節(jié)區(qū) IDATA RAM 區(qū)的高 128 字節(jié),必須采用間接尋址 XDATA 外部存儲(chǔ)區(qū),使用 DPTR 間接尋址 PDATA 外部存儲(chǔ)區(qū)的 256 字節(jié),通過 P0 口的地址對(duì)其尋址。各存儲(chǔ)區(qū)的簡(jiǎn)單描述如表 所示。程序存儲(chǔ)區(qū)可能在 8051CPU 內(nèi)或者在外部或者內(nèi)外都有,這由 8051 派生的硬件決定。 C51 編譯器提供兩種不同的存儲(chǔ)類型 xdata 和 pdata 訪問外部數(shù)據(jù)。內(nèi)部數(shù)據(jù)區(qū)又可以分成 3 個(gè)不同的存儲(chǔ)類型 :data、 idata 和bdata。存儲(chǔ)區(qū)可分為內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)、外部數(shù)據(jù)存儲(chǔ)區(qū)以及程序存儲(chǔ)區(qū)。除了數(shù)據(jù)類型的轉(zhuǎn)換之外,帶符號(hào)變量的符號(hào)擴(kuò)展也是自動(dòng)完成的。 bit,sbit,sfr 和 sfr16 數(shù)據(jù)類型用于訪問 8051的特殊功能寄存器,例如 sfr P0=0x80,表示聲明變量 P0,并為其分配特殊功能寄存器地址 0x80。 ~177。 完整的數(shù)據(jù)類型表如表 所示。 ? sbit 從字節(jié)中聲明的位變量 0或 1。 1. 數(shù)據(jù)類型 C51 具有標(biāo)準(zhǔn) C 語言的所有標(biāo)準(zhǔn)數(shù)據(jù)類型,除此之外,為了更加有效地利用8051 的 結(jié)構(gòu),還加入了以下特殊的數(shù)據(jù)類型。 (3)程序上應(yīng)用的各種算法要精簡(jiǎn),不要對(duì)系統(tǒng)構(gòu)成過重的負(fù)擔(dān)。 (2)應(yīng)用 C51 更要注重對(duì)系統(tǒng)資源的理解,因?yàn)閱纹瑱C(jī)的系統(tǒng)資源相對(duì) PC 機(jī)來說很貧乏,對(duì)于 RAM,ROM 中的每一字節(jié)都要充分利用。 (3)SRC 控制 該控制指令將 C 文件編譯生成匯編文件 (.SRC),該匯編文件在改名后,生成匯編 .ASM 文件,再用 A51 進(jìn)行編譯。 方法是用 pragma 語句 ,具體結(jié)構(gòu)是 : pragma asm 匯編行 pragma endasm 這種方法是通過 asm與 endasm告訴 C51 編 譯器中問行不用編譯為匯編行。段名的轉(zhuǎn)換規(guī)律如表 所 示 。被調(diào)用的匯編函數(shù)不僅要在匯編程序中使用偽指令以使 CODE 選項(xiàng)有效,并聲明為可再定位的段類型,而且還要在調(diào)用它的 C 語言主程序中進(jìn)行聲明。 16 第 三 章 軟件系統(tǒng)設(shè)計(jì)介紹 為了使匯編程序段和 C 程序能夠兼容,必須為匯編語言編寫的程序段指定段名并進(jìn)行定義。 大多數(shù)情況下匯編程序能和用 C 語言編寫的程序很好地結(jié)合 在一起。 匯編語言和 C 語言混合編程 由于單片機(jī)硬件的限制。因此,如果對(duì)具體地址置數(shù),應(yīng)該避開 R0~R7 這些地址。因此,如果要對(duì)內(nèi)部 RAM 置初值,一定是在執(zhí)行了一條 C 語句之后。 (8)C 語言可移植性好且非常普及, C 語一言編譯器幾乎適用于所有的目標(biāo)系統(tǒng),已完成的軟件項(xiàng)目可以很容易地轉(zhuǎn)換到其他的處理器或環(huán)境中。 (6)C 語言中的庫文件提供許多標(biāo)準(zhǔn)的例程,例如格式化輸出、數(shù)據(jù)轉(zhuǎn)換和浮點(diǎn)運(yùn)算等。 (4)可使 用與人的思維更相近的關(guān)鍵字和操作函數(shù)。 (2)寄存器分配和尋址方式由編譯器進(jìn)行管理,編程時(shí)不需要考慮存儲(chǔ)器的尋址和數(shù)據(jù)類型等細(xì)節(jié)。 語言的特點(diǎn)就是可以使程序員盡量少地對(duì)硬件進(jìn)行操作,它是一種功能性和結(jié)構(gòu)性很強(qiáng)的語言。對(duì)時(shí)鐘要求嚴(yán)格時(shí),使用匯編語言是唯一的方法。 用 C 語言編寫程序比用匯編語 言 更符合人們的思考習(xí)慣,開發(fā)者可以更專心地考慮算法而不是考慮一些細(xì)節(jié)問題,這樣就減少了開發(fā)和調(diào)試的時(shí)間。 C 語言具有良好的模塊化,容易閱讀和維護(hù)等優(yōu)點(diǎn)。但是使用匯編語言會(huì)遇到很多問題,首先它的可讀性和可維護(hù)性不強(qiáng),特別是當(dāng)程序沒有很好標(biāo)注的時(shí)候,其次就是代碼的可重用性也比較低。 C51 編程說明 單片機(jī) C 語言與匯編語言 在單片機(jī)的開發(fā)應(yīng)用中,逐漸引入了高級(jí)語言, C 語言就是其中的一種。與匯編相比, C 語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢(shì),易學(xué)易用,因此出現(xiàn)了專門用于 51 系列單片機(jī)編程的 C 語言 —— C51。流程圖如圖 所示。所以我使用 ~ 做紅、黃、綠的控制開關(guān)。其基本狀態(tài)表如表 所示。 首先,我們知道,交通燈的控制是不需要從外界采集數(shù)據(jù)的,所以我在做交通燈控制器設(shè)計(jì)是不需要考慮系統(tǒng)的輸入 量。具體器件清單可以參照清單列表 。 ( 3)要求交通燈控制器的體積較小,抗干擾強(qiáng),能夠適應(yīng)大多數(shù)實(shí)際工作環(huán)境。 C1+1VDD2C13C2+4C25VEE6T2OUT7R2IN8R2OUT9T2IN10T1IN11R1OUT12R1IN13T1OUT14GND15VCC16U2MAX232CPEVCC5V100pFC1VCC5VGND10uFC7100pFC2100pFC6100pFC9GND1234567891110J1D Connector 9GNDGNDRXDTXD 圖 STC89C51RC 在線編程電路原理圖 確定項(xiàng)目任務(wù)與要求 設(shè)計(jì)題目:基于 51單片機(jī)交通燈控制器設(shè)計(jì) 任務(wù)與要求:制作一個(gè)以 51 單片機(jī)為中心的交通燈控制器 具體要求如下: ( 1)要求能實(shí)時(shí)控制兩個(gè)方向的交通燈。最后在使用 STCISP 下載編程燒錄軟件通過 RS232 向 STC89C51RC 片內(nèi)燒寫程序。它利用了 STC89C51RC 片內(nèi)置的 IPA 進(jìn)行燒寫程序。 表 STC89C51RC 系統(tǒng)特性參數(shù)表 工作電壓 ~ 5V 正常工作電流 4mA~ 7mA 最大工作速率 80MHz Flash程序存儲(chǔ)器字節(jié) 4K RAM程序存儲(chǔ)器字節(jié) 512 降低 EMI 具備 看門狗 具備 雙倍速 具備 ISP 具備 IAP 具備 EEPROM字節(jié) 2K+ 數(shù)據(jù)指針 2 串口 UART 1ch 中斷源 8 優(yōu)先級(jí) 4 定時(shí)器 3 A/D 無 STC89C51RC 開發(fā)方法 STC89C51RC 可以通過在線編程電路進(jìn)行編程,在線編程電路即是一個(gè)程序燒寫器。當(dāng) P0口工作在第二功能時(shí), 從該口可以送出A0~ A7和傳送 D0~ D7,利用 ALE可以將 A0~ A7鎖存在地址鎖存器上。當(dāng)使用外部時(shí)鐘10 第 二 章 畢業(yè)設(shè)計(jì)的準(zhǔn)備工作 電路時(shí), XTAL1連接外部時(shí)鐘電路, XTAL2接地 EA(31腳 ) 允許訪問片外 ROM/編程高電壓引線。當(dāng) 該端加上超過 24個(gè)時(shí)鐘的高電平時(shí),可使單片機(jī)復(fù)位;若在改引線上接 +5V備用電源,則當(dāng) VCC掉電時(shí),該備用電源可保護(hù)片內(nèi) RAM中的信息。 P0口 也可以配置為復(fù)用地址 /數(shù)據(jù)總線,訪問外部程序和數(shù)據(jù)存儲(chǔ)器。作 I/O端口使用時(shí),需加上拉電阻。 8 第 二 章 畢業(yè)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1