Keil C51 中文說明:8051 系列微處理器基于簡(jiǎn)化的嵌入式控制系統(tǒng)結(jié)構(gòu)被廣泛應(yīng)用于從軍事到自動(dòng)控制再到PC 機(jī)上的鍵盤上的各種應(yīng)用系統(tǒng)上僅次于Motorola 68HC11 在 8 位微控制器市場(chǎng)上的銷量很多制造商都可提供8051 系列單片機(jī)像Intel Philips Siemens 等這些制造商給51 系列單片機(jī)加入了大量的性能和外部功能像I2C 總線接口模擬量到數(shù)字量的轉(zhuǎn)換看門狗PWM 輸出等不少芯片的工作頻率達(dá)到40M 工作電壓下降到1.5V 基于一個(gè)內(nèi)核的這些功能使得8051 單片機(jī)很適合作為廠家產(chǎn)品的基本構(gòu)架它能夠運(yùn)行各種程序而且開發(fā)者只需要學(xué)習(xí)這一個(gè)平臺(tái)8051 系列的基本結(jié)構(gòu)如下1 一個(gè)8 位算術(shù)邏輯單元2 32 個(gè)I/O 口4 組8 位端口可單獨(dú)尋址3 兩個(gè)16 位定時(shí)計(jì)數(shù)器4 全雙工串行通信5 6 個(gè)中斷源兩個(gè)中斷優(yōu)先級(jí)6 128 字節(jié)內(nèi)置RAM7 獨(dú)立的64K 字節(jié)可尋址數(shù)據(jù)和代碼區(qū)每個(gè)8051 處理周期包括12 個(gè)振蕩周期每12 個(gè)振蕩周期用來完成一項(xiàng)操作如取指令和計(jì)算指令執(zhí)行時(shí)間可把時(shí)鐘頻率除以12 取倒數(shù)然后指令執(zhí)行所須的周期數(shù)因此如果你的系統(tǒng)時(shí)鐘是11.059MHz 除以12 后就得到了每秒執(zhí)行的指令個(gè)數(shù)為921583條指令取倒數(shù)將得到每條指令所須的時(shí)間1.085ms.
上傳時(shí)間: 2013-10-24
上傳用戶:xauthu
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實(shí)現(xiàn)編程的讀,寫,擦等細(xì)節(jié)//AT89C2051的特殊處:給XTAL一個(gè)脈沖,地址計(jì)數(shù)加1;P1的引腳排列與AT89C51相反,需要用函數(shù)轉(zhuǎn)換#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引腳排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//編程前的準(zhǔn)備工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//編程結(jié)束后的工作,設(shè)置合適的引腳電平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//從P0口獲得數(shù)據(jù){ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//轉(zhuǎn)換并設(shè)置P0口的數(shù)據(jù){ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//讀特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號(hào) C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號(hào) C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//寫器件{//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號(hào) //寫一個(gè)單元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效驗(yàn):循環(huán)讀,直到讀出與寫入的數(shù)相同 { nTimeOut++; if(nTimeOut>1000)//超時(shí)了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一個(gè)脈沖指向下一個(gè)單元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//讀器件{ BYTE Data;//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號(hào) //讀一個(gè)單元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一個(gè)脈沖指向下一個(gè)單元//----------------------------------------------------------------------------- return Data;} void Lock01()//寫鎖定位{ InitPro01();//先設(shè)置成編程狀態(tài)//----------------------------------------------------------------------------- //根據(jù)器件的DataSheet,設(shè)置相應(yīng)的編程控制信號(hào) if(ComBuf[2]>=1)//ComBuf[2]為鎖定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//設(shè)置pw中的函數(shù)指針,讓主程序可以調(diào)用上面的函數(shù){ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上傳時(shí)間: 2013-11-12
上傳用戶:gut1234567
單片機(jī)開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51 單片機(jī)的匯編軟件有早期的A51,隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil 軟件是目前最流行開發(fā)MCS-51 系列單片機(jī)的軟件,這從近年來各仿真機(jī)廠商紛紛宣布全面支持Keil 即可看出。Keil 提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(uVision)將這些部份組合在一起。運(yùn)行Keil 軟件需要Pentium 或以上的CPU,16MB或更多RAM、20M 以上空閑的硬盤空間、WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。掌握這一軟件的使用對(duì)于使用51 系列單片機(jī)的愛好者來說是十分必要的,如果你使用C 語言編程,那么Keil 幾乎就是你的不二之選(目前在國(guó)內(nèi)你只能買到該軟件、而你買的仿真機(jī)也很可能只支持該軟件),即使不使用C 語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。我們將通過一些實(shí)例來學(xué)習(xí)Keil 軟件的使用,在這一部份我們將學(xué)習(xí)如何輸入源程序,建立工程、對(duì)工程進(jìn)行詳細(xì)的設(shè)置,以及如何將源程序變?yōu)槟繕?biāo)代碼。圖1 所示電路圖使用89C51 單片機(jī)作為主芯片,這種單片機(jī)性屬于MCS-51 系列,其內(nèi)部有4K 的FLASH ROM,可以反復(fù)擦寫,非常適于做實(shí)驗(yàn)。89C51 的P1 引腳上接8 個(gè)發(fā)光二極管,P3.2~P3.4 引腳上接4 個(gè)按鈕開關(guān),我們的第一個(gè)任務(wù)是讓接在P1 引腳上的發(fā)光二極管依次循環(huán)點(diǎn)亮。 一、Keil 工程的建立首先啟動(dòng)Keil 軟件的集成開發(fā)環(huán)境,這里假設(shè)讀者已正確安裝了該軟件,可以從桌面上直接雙擊uVision 的圖標(biāo)以啟動(dòng)該軟件。UVison啟動(dòng)后,程序窗口的左邊有一個(gè)工程管理窗口,該窗口有3 個(gè)標(biāo)簽,分別是Files、Regs、和Books,這三個(gè)標(biāo)簽頁分別顯示當(dāng)前項(xiàng)目的文件結(jié)構(gòu)、CPU 的寄存器及部份特殊功能寄存器的值(調(diào)試時(shí)才出現(xiàn))和所選CPU 的附加說明文件,如果是第一次啟動(dòng)Keil,那么這三個(gè)標(biāo)簽頁全是空的。
上傳時(shí)間: 2013-12-26
上傳用戶:liulinshan2010
隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,目前已有越來越多的人從普遍使用匯編語言到逐漸使用高級(jí)語言開發(fā),其中主要是以C語言為主,市場(chǎng)上幾種常見的單片機(jī)均有其C語言開發(fā)環(huán)境。這里以最為流行的80C51單片機(jī)為例來學(xué)習(xí)單片機(jī)的C語言編程技術(shù)。大家都有C語言基礎(chǔ),但是編單片機(jī)程序,大家還得找專門的書來學(xué)習(xí)一下。這里我們只介紹Keil這種工具軟件的用法。學(xué)習(xí)一種編程語言,最重要的是建立一個(gè)練習(xí)環(huán)境,邊學(xué)邊練才能學(xué)好。Keil軟件是目最流行開發(fā)80C51系列單片機(jī)的軟件,Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個(gè)集成開發(fā)環(huán)境(µVision)將這些部份組合在一起。下面我以一個(gè)實(shí)驗(yàn)舉一個(gè)例子,一步一步學(xué)習(xí)Keil軟件的使用。 首先我們看硬件原理圖: 很明顯,要點(diǎn)亮使發(fā)光二極管,必須使單片機(jī)的I/O口P1.0輸出低電平。于是我們的任務(wù)就是編程序使P1.0輸出地電平。1. 使用Keil前必須先安裝。安裝過程簡(jiǎn)單,這里不在敘述。2. 安裝好了Keil軟件以后,我們打開它。打開以后界面如下:
上傳時(shí)間: 2013-11-07
上傳用戶:wtrl
Keil C51 使用技巧及實(shí)戰(zhàn):到你的程序中這本書將教你充分使用你的工具如果你只有8051 的匯編程序你也可以學(xué)習(xí)該書和使用這些例子但是你必須把C 語言的程序裝入你的匯編程序中這對(duì)懂得C 語言和8051匯編程序指令的人來說并不是一件困難的事如果你有C 編譯器的話那恭喜你使用C 語言進(jìn)行開發(fā)是一個(gè)好的決定你會(huì)發(fā)現(xiàn)使用C 進(jìn)行開發(fā)將使你的工程開發(fā)和維護(hù)的時(shí)間大大減少如果你已經(jīng)擁有Keil C51 那你已經(jīng)選擇了一個(gè)非常好的開發(fā)工具我發(fā)現(xiàn)Keil 軟件包能夠提供最好的支持本書支持Keil C 的擴(kuò)展如果你有其它的開發(fā)工具像Archimedes 和Avocet 這本書也能很好地為你服務(wù)但你必須根據(jù)你所用的開發(fā)工具改變一些Keil 的特殊指令在書的一些地方有硬件圖實(shí)例程序在這些硬件上運(yùn)行這些圖繪制地不是很詳細(xì)主要是方框圖但足以使讀者明白軟件和硬件之間的接口讀者應(yīng)該把這本書看成工具書而不是用來學(xué)習(xí)各種系統(tǒng)設(shè)計(jì)通過本書你可以了解給定一定的硬件和軟件設(shè)計(jì)之后8051 的各種性能希望你能從本書中獲取靈感并有助于你的設(shè)計(jì)使你豁然開朗當(dāng)然我希望你也能夠從本書中學(xué)到有用的知識(shí)使之能夠提升你的設(shè)計(jì)。
上傳時(shí)間: 2013-10-27
上傳用戶:Jerry_Chow
使用C語言肯定要使用到C編譯器,以便把寫好的C程序編譯為機(jī)器碼,這樣單片機(jī)才能執(zhí)行編寫好的程序。KEIL uVISION2是眾多單片機(jī)應(yīng)用開發(fā)軟件中優(yōu)秀的軟件之一,它支持眾多不同公司的MCS51架構(gòu)的芯片,它集編輯,編譯,仿真等于一體,同時(shí)還支持,PLM,匯編和C語言的程序設(shè)計(jì),它的界面和常用的微軟VC++的界面相似,界面友好,易學(xué)易用,在調(diào)試程序,軟件仿真方面也有很強(qiáng)大的功能。因此很多開發(fā)51應(yīng)用的工程師或普通的單片機(jī)愛好者,都對(duì)它十分喜歡。 以上簡(jiǎn)單介紹了KEIL51軟件,要使用KEIL51軟件,必需先要安裝它。KEIL51是一個(gè)商業(yè)的軟件,對(duì)于我們這些普通愛好者可以到KEIL中國(guó)代理周立功公司的網(wǎng)站上下載一份能編譯2K的DEMO版軟件,基本可以滿足一般的個(gè)人學(xué)習(xí)和小型應(yīng)用的開發(fā)。(安裝的方法和普通軟件相當(dāng)這里就不做介紹了) 安裝好后,你是不是迫不及待的想建立自己的第一個(gè)C程序項(xiàng)目呢?下面就讓我們一起來建立一個(gè)小程序項(xiàng)目吧。或許你手中還沒有一塊實(shí)驗(yàn)板,甚至沒有一塊單片機(jī),不過沒有關(guān)系我們可以通過KEIL軟件仿真看到程序運(yùn)行的結(jié)果。 首先當(dāng)然是運(yùn)行KEIL51軟件。怎么打開?噢,天!那你要從頭學(xué)電腦了。呵呵,開個(gè)玩笑,這個(gè)問題我想讀者們也不會(huì)提的了:P。運(yùn)行幾秒后,出現(xiàn)如圖1-1的屏幕。
上傳時(shí)間: 2013-11-10
上傳用戶:邶刖
Keil uVision2是目前使用廣泛的單片機(jī)開發(fā)軟件,它集成了源程序編輯和程序調(diào)試于一體,支持匯編、C、PL/M語言。 這里我們僅僅介紹 Keil uVision2 的簡(jiǎn)單使用,更詳細(xì)的使用方法見本光盤\單片機(jī)軟件\Keil c51\Keil書籍與資料目錄中的內(nèi)容。 keil C51 v6.12 的安裝: 先運(yùn)行光盤中 單片機(jī)軟件\setup\setup.exe 安裝程序,選擇安裝“Eval Version”版進(jìn)行安裝。一直點(diǎn)擊“Yes”或“Next”,直到“Finish”完成。 之后運(yùn)行同目錄中的 Keil uv2 漢化安裝.exe 安裝漢化程序。 keil C51 v6.12 的使用: 點(diǎn)擊桌面快捷圖標(biāo),可以直接進(jìn)入主畫面:現(xiàn)在,我們來做個(gè)實(shí)際程序,請(qǐng)跟著我一步一步學(xué)著做,實(shí)際體驗(yàn)一下從編輯源程序到程序調(diào)試的全過程。 這里讓我們做一個(gè) 讓單片機(jī) P0 口所驅(qū)動(dòng)的 LED 燈隔一個(gè)亮隔一個(gè)滅 的程序。 在Keil系統(tǒng)中,每做個(gè)獨(dú)立的程序,都視為工程(或者叫項(xiàng)目)。首先從菜但的“工程”中“新建工程...”,建立我們將要做的工程項(xiàng)目:新建的工程要起個(gè)與工程項(xiàng)目意義一致的名字,可以是中文名;我們這里的程序是實(shí)驗(yàn)測(cè)試程序,所以起的名字為 Test ,并將 Test 工程“保存”到 C:\Keil 下:接下來,Keil環(huán)境要求我們?yōu)?Test 工程選擇一個(gè)單片機(jī)型號(hào);我們選擇 Atmel 公司的 89C51(雖然我們使用的是89S51,但由于89S51與89C51內(nèi)、外部結(jié)構(gòu)完全一樣,所以這里依然選擇“89C51”)。“確定”后工程項(xiàng)目就算建立了。
上傳時(shí)間: 2013-10-12
上傳用戶:zzzzzz
Keil C51 是目前世界上最好的51單片機(jī)的匯編和c語言的開發(fā)工具。支持匯編,c語言以及混合編程。同時(shí)具備功能強(qiáng)大的軟件仿真和硬件仿真(用mon51協(xié)議)。發(fā)布日期:2008.1
上傳時(shí)間: 2013-11-20
上傳用戶:642778338
I2C總線高頻頭控制程序(Keil C51程序 基于芯片TSA5522系列) /*I2C總線高頻頭控制Keil C51程序(PLL芯片為TSA5522系列) *///--------------------------------------------------------------------------//// 源程序大公開 //// (c) Copyright 2001-2003 xuwenjun //// All Rights Reserved //// V1.00 ////--------------------------------------------------------------------------////標(biāo) 題: I2C總線高頻頭控制程序(PLL芯片為TSA5522系列) ////文件名: xwj_fi1256.c ////版 本: V1.00 ////修改人: 徐文軍 E-mail:xuwenjun@21cn.com ////日 期: 06-02-26 首次公開 ////描 述: I2C總線高頻頭控制程序(PLL芯片為TSA5522系列) ////聲 明: //// 以下代碼僅免費(fèi)提供給學(xué)習(xí)用途,但引用或修改后必須在文件中聲明出處. //// 如用于商業(yè)用途請(qǐng)與作者聯(lián)系. E-mail:xuwenjun@21cn.com //// 有問題請(qǐng)mailto xuwenjun@21cn.com 歡迎與我交流! ////--------------------------------------------------------------------------////老版本: 無 老版本文件名: ////創(chuàng)建人: 徐文軍 E-mail:xuwenjun@21cn.com ////日 期: 06-02-26 ////描 述: ////--------------------------------------------------------------------------// /* 頻率單位為KHz */#define FUENCY 38900 /* 中頻頻率 */#define PLLdataH(f) ((f+FUENCY)*16/1000/256) /* 頻率數(shù)據(jù)高 第1字節(jié)*/#define PLLdataL(f) ((f+FUENCY)*16/1000%256) /* 頻率數(shù)據(jù)低 第2字節(jié)*/#define PLLCON1 0x8e /* 控制字1 第3字節(jié)*/ /* 控制字2 第4字節(jié)*/#define PLLCON2(f) (((f)<(168000))?(0xa0):(((f)<(450000))?(0x90):(0x30)))#define PLLdata3(fchan) PLLdataH (fchan),PLLdataL (fchan),PLLCON2 (fchan)
上傳時(shí)間: 2013-11-10
上傳用戶:nanfeicui
Keil Cx51 V7.0單片機(jī)高級(jí)語言編程與uVision2應(yīng)用實(shí)踐詳細(xì)介紹了KeilCx51V7.機(jī)C語言編譯器和全新Windows集成開發(fā)環(huán)境μVision2的強(qiáng)大功能和具體使用方法。全面介紹了最新版本Cx51編譯器新增加的控制命令,給出了全部Cx51運(yùn)行庫函數(shù)及其應(yīng)用范例,對(duì)KeilCx51軟件包中各種應(yīng)用工具,如BL51/Lx51連接定位器、A51/Ax51宏匯編器、LIB51庫管理程序以及OH51符號(hào)轉(zhuǎn)換程序等都作了詳細(xì)介紹,還介紹了單片機(jī)實(shí)時(shí)多任務(wù)操作系統(tǒng)RTX51及其子集RTX51TINY的具體功能與應(yīng)用方法。μVision2已經(jīng)將調(diào)試器功能集成于其中,用戶可以在單一環(huán)境下完成從源程序編寫、編譯、連接定位一直到目標(biāo)文件的仿真調(diào)試等全部工作,書中詳細(xì)介紹了μVision2各種功能和應(yīng)用,包括軟件模擬調(diào)試和硬件目標(biāo)板實(shí)時(shí)在線仿真。第1章 851單片機(jī)與KeilCx51基礎(chǔ) 1.1 851單片機(jī)的存儲(chǔ)器組織結(jié)構(gòu) 1.2 KeilCx51開發(fā)工具 1.3 Cx51簡(jiǎn)單編程與調(diào)試第2章 Cx51程序設(shè)計(jì)基礎(chǔ) 2.1 標(biāo)識(shí)符與關(guān)鍵字 2.2 Cx51程序設(shè)計(jì)的基本語法 2.2.1 數(shù)據(jù)類型 2.2.2 常量 2.2.3 變量及其存儲(chǔ)模式 2.2.4 用typedef重新定義數(shù)據(jù)類型 2.2.5 運(yùn)算符與表達(dá)式 2.3 Cx51程序的基本語句 2.3.1 表達(dá)式語句 2.3.2 復(fù)合語句 2.3.3 條件語句 2.3.4 開關(guān)語句 2.3.5 循環(huán)語句 2.3.6 返回語句第3章 函數(shù) 3.1 函數(shù)的定義; 3.2 函數(shù)的調(diào)用 3.2.1 函數(shù)的調(diào)用形式 3.2.2 對(duì)被調(diào)用函數(shù)的說明 3.2.3 函數(shù)的參數(shù)和函數(shù)的返回值 3.2.4 實(shí)際參數(shù)的傳遞方式 3.3 函數(shù)的遞歸調(diào)用與再入函數(shù)
上傳時(shí)間: 2014-01-16
上傳用戶:edisonfather
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1