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