單片機C語言應用程序設計針對目前最通用的單片機8051和最流行的程序設計語言——C語言,以KEII。公司8051單片機開發(fā)套件講解單片機的C語言應用程序設計。該套件的編譯器有支持經(jīng)典8051及8051派生產(chǎn)品的版本,統(tǒng)稱為Cx51。Windows集成開發(fā)環(huán)境μVision2把μVisionl用的模擬調(diào)試器dScope與集成環(huán)境無縫結合起來,使用更方便,支持的單片機品種更多?! ”緯奶攸c是取材于原文資料,總結實際教學和應用經(jīng)驗,實例較多,實用性強。本書中C語言是針對8051特有結構描述的,這樣,即使無編程基礎的人,也可通過本書學習單片機的c編程。單片機C語言應用程序設計目錄第1章 單片機基礎知識 1.1 8051單片機的特點 1.2 8051的內(nèi)部知識 1.3 8051的系統(tǒng)擴展 習題一第2章 C與8051 2.1 8051的編程語言 2.2 Cx51編譯器 2.3 KEIL 8051開發(fā)工具 2.4 KEIL Cx51編程實例 2.5 Cx51程序結構 習題二第3章 Cx51 數(shù)據(jù)與運算 3.1 數(shù)據(jù)與數(shù)據(jù)類型 3.2 常量與變量 3.3 Cx51數(shù)據(jù)存儲類型與8051存儲器結構 3.4 8051特殊功能寄存器(SFR)及其Cx51定義 3.5 8051并行接口及其Cx51定義 3.6 位變量(BIT)及其Cx51定義 3.7 Cx51運算符、表達式及其規(guī)則 習題三第4章 Cx51 流程控制語句 4.1 C語言程序的基本結構及其流程圖 4.2 選擇語句 4.3 循環(huán)語句 習題四第5章 Cx51 構造數(shù)據(jù)類型 5.1 數(shù)組 5.2 指針 5.3 結構 5.4 共用體 5.5 枚舉 習題五第6章 Cx51 函數(shù)第7章 模塊化程序設計第8章 8051內(nèi)部資源的C編輯第9章 8051擴展資源的C編輯第10章 8051輸出控制的C編程第11章 8051數(shù)據(jù)采集的C編程第12章 8051機間通信的C編程第13章 8051人機交互的C編程附錄A μVision2集成開發(fā)環(huán)境使用附錄B KEIL Cx51 上機制南
上傳時間: 2013-10-21
上傳用戶:行者Xin
C51基本結構程序設計1. 掌握if語句來實現(xiàn)選擇結構,能利用if語句編寫相應的分枝結構的程序。在嵌套if語句中,一定要搞清楚else與哪個if結合的問題。2.掌握switch語句來實現(xiàn)多向分枝選擇結構,能利用switch語句編寫相應的分枝結構的程序。 3. 掌握循環(huán)語句的即初始化、循環(huán)體、循環(huán)控制及結束四個部分,并能進行循環(huán)語句的程序設計。分別掌握for 語句、while語句以及do-while語句的使用語法及方法,能利用這三種循環(huán)結構進行循環(huán)程序設計,理解這三種語句的異同。4.理解并掌握continue、break語句在循環(huán)結構和選擇結構中的作用。對于goto語句,理解該語句優(yōu)缺點。C51語言是結構化編程語言。結構化語言的基本元素是模塊,它是程序的一部分.只有一個出口和一個入口.不允許有偶然的中途插入或以模塊的其它路徑退出。結構化編程語言在沒有妥善保護或恢復堆棧和其它相關的寄存器之前,不應隨便跳入或跳出一個模塊。因此使用這種結構化語言進行編程,當要退出中斷時,堆棧不會因為程序使用了任何可以接受的命令而崩潰。 結構化程序由若干模塊組成,每個模塊中包含著若干個基本結構,而每個基本結構中可以有若干條語句。歸納起來,C51程序有順序結構、選擇結構、循環(huán)結構共三種結構。
上傳時間: 2013-11-01
上傳用戶:四只眼
AVR單片機GCC程序設計:第一章 概述1.1 AVR 單片機GCC 開發(fā)概述1.2 一個簡單的例子1.3 用MAKEFILE 管理項目1.4 開發(fā)環(huán)境的配置1.5 實驗板CA-M8第二章 存儲器操作編程2.1 AVR 單片機存儲器組織結構2.2 I/O 寄存器操作2.3 SRAM 內(nèi)變量的使用2.4 在程序中訪問FLASH 程序存儲器2.5 EEPROM 數(shù)據(jù)存儲器操作2.6 avr-gcc 段結構與再定位2.7 外部RAM 存儲器操作2.8 堆應用第三章 GCC C 編譯器的使用3.1 編譯基礎3.2 生成靜態(tài)連接庫第四章 AVR 功能模塊應用實驗4.1 中斷服務程序4.2 定時器/計數(shù)器應用4.3 看門狗應用4.4 UART 應用4.5 PWM 功能編程4.6 模擬比較器4.7 A/D 轉換模塊編程4.8 數(shù)碼管顯示程序設計4.9 鍵盤程序設計4.10 蜂鳴器控制第五章 使用C 語言標準I/O 流調(diào)試程序5.1 avr-libc 標準I/O 流描述5.2 利用標準I/0 流調(diào)試程序5.3 最小化的格式化的打印函數(shù)第六章 CA-M8 上實現(xiàn)AT89S52 編程器的實現(xiàn)6.1 編程原理6.2 LuckyProg2004 概述6.3 AT989S52 isp 功能簡介6.4 下位機程序設計第七章 硬件TWI 端口編程7.1 TWI 模塊概述7.2 主控模式操作實時時鐘DS13077.3 兩個Mega8 間的TWI 通信第八章 BootLoader 功能應用8.1 BootLoader 功能介紹8.2 avr-libc 對BootLoader 的支持8.3 BootLoader 應用實例8.4 基于LuckyProg2004 的BootLoader 程序第九章 匯編語言支持9.1 C 代碼中內(nèi)聯(lián)匯編程序9.2 獨立的匯編語言支持9.3 C 與匯編混合編程第十章 C++語言支持附錄 1 avr-gcc 選項附錄 2 Intel HEX 文件格式描述
上傳時間: 2014-04-03
上傳用戶:ligi201200
微型計算機課程設計論文—通用微機發(fā)聲程序的匯編設計 本文講述了在微型計算機中利用可編程時間間隔定時器的通用發(fā)聲程序設計,重點講述了程序的發(fā)聲原理,節(jié)拍的產(chǎn)生,按節(jié)拍改變的動畫程序原理,并以設計一個簡單的樂曲評分程序為引子,分析程序設計的細節(jié)。關鍵字:微機 8253 通用發(fā)聲程序 動畫技術 直接寫屏 1. 可編程時間間隔定時器8253在通用個人計算機中,有一個可編程時間間隔定時器8253,它能夠根據(jù)程序提供的計數(shù)值和工作方式,產(chǎn)生各種形狀和各種頻率的計數(shù)/定時脈沖,提供給系統(tǒng)各個部件使用。本設計是利用計算機控制發(fā)聲的原理,編寫演奏樂曲的程序。 在8253/54定時器內(nèi)部有3個獨立工作的計數(shù)器:計數(shù)器0,計數(shù)器1和計數(shù)器2,每個計數(shù)器都分配有一個斷口地址,分別為40H,41H和42H.8253/54內(nèi)部還有一個公用的控制寄存器,端地址為43H.端口地址輸入到8253/54的CS,AL,A0端,分別對3個計數(shù)器和控制器尋址. 對8353/54編程時,先要設定控制字,以選擇計數(shù)器,確定工作方式和計數(shù)值的格式.每計數(shù)器由三個引腳與外部聯(lián)系,見教材第320頁圖9-1.CLK為時鐘輸入端,GATE為門控信號輸入端,OUT為計數(shù)/定時信號輸入端.每個計數(shù)器中包含一個16位計數(shù)寄存器,這個計數(shù)器時以倒計數(shù)的方式計數(shù)的,也就是說,從計數(shù)初值逐次減1,直到減為0為止. 8253/54的三個計數(shù)器是分別編程的,在對任一個計數(shù)器編程時,必須首先講控制字節(jié)寫入控制寄存器.控制字的作用是告訴8253/54選擇哪個計數(shù)器工作,要求輸出什么樣的脈沖波形.另外,對8253/54的初始化工作還包括,向選定的計數(shù)器輸入一個計數(shù)初值,因為這個計數(shù)值可以是8為的,也可以是16為的,而8253/5的數(shù)據(jù)總線是8位的,所以要用兩條輸出指令來寫入初值.下面給出8253/54初始化程序段的一個例子,將計數(shù)器2設定為方式3,(關于計數(shù)器的工作方式參閱教材第325—330頁)計數(shù)初值為65536. MOV AL,10110110B ;選擇計數(shù)器2,按方式3工作,計數(shù)值是二進制格式 OUT 43H,AL ; j將控制字送入控制寄存器 MOV AL,0 ;計數(shù)初值為0 OUT 42H,AL ;將計數(shù)初值的低字節(jié)送入計數(shù)器2 OUT 42H,AL ;將計數(shù)初值的高字節(jié)送入計數(shù)器2 在IBM PC中8253/54的三個時鐘端CLK0,CLK1和CLK2的輸入頻率都是1.1931817MHZ. PC機上的大多數(shù)I/O都是由主板上的8255(或8255A)可編程序外圍接口芯片(PPI)管理的.關于8255A的結構和工作原理及應用舉例參閱教材第340—373頁.教材第364頁的”PC/XT機中的揚聲器接口電路”一節(jié)介紹了揚聲器的驅(qū)動原理,并給出了通用發(fā)聲程序.本設計正是基于這個原理,通過編程,控制加到揚聲器上的信號的頻率,奏出樂曲的.2.發(fā)聲程序的設計下面是能產(chǎn)生頻率為f的通用發(fā)聲程序:MOV AL, 10110110B ;8253控制字:通道2,先寫低字節(jié),后寫高字節(jié) ;方式3,二進制計數(shù)OUT 43H, AL ;寫入控制字MOV DX, 0012H ;被除數(shù)高位MOV AX, 35DEH ;被除數(shù)低位 DIV ID ;求計數(shù)初值n,結果在AX中OUT 42H, AL ;送出低8位MOV AL, AHOUT 42H,AL ;送出高8位IN AL, 61H ;讀入8255A端口B的內(nèi)容MOV AH, AL ;保護B口的原狀態(tài)OR AL, 03H ;使B口后兩位置1,其余位保留OUT 61H,AL ;接通揚聲器,使它發(fā)聲
上傳時間: 2013-10-17
上傳用戶:sunjet
;片內(nèi)RAM初始化子程序 IBCLR :MOV A,R0 MOV R1,A CLR AIBC1 :MOV @R1,A INC R1 DJNZ R7,IBC1 RET ;片外RAM初始化子程序 EBCLR1 :MOV A,ADDPL MOV DPL,A MOV A,ADDPH MOV DPH,A CLR CEBC11 :MOVX @DPTR,A INC DPTR DJNZ R7,EBC11 RET ;片外RAM初始化子程序(雙字節(jié)個單元) EBCLR2 :MOV A,ADDPL MOV DPL,A MOV A,ADDPH MOV DPH,A MOV A,R7 JZ EBC21 INC R6EBC21 :CLR A MOVX @DPTR,A INC DPTR DJNZ R7,EBC21 DJNZ R6,EBC21 RET ;內(nèi)部RAM數(shù)據(jù)復制程序;入口 :R0,R7;占用資源:A;堆棧需求:2字節(jié);出口 :R1 IBMOV :MOV A,R0 ADD A,R7 MOV R0,A MOV A,R1 ADD A,R7 MOV R1,AIBM1 :DEC R0 DEC R1 MOV A,@R0 MOV @R1,A DJNZ R7,IBM1 RET ;外部RAM數(shù)據(jù)復制程序;入口 :ADDPH,ADDPL,R7;占用資源:ACC;堆棧需求:2字節(jié);出口 :R0,R1 EBMOV1 :MOV A,ADDPL ADD A,R7 MOV DPL,A CLR A ADDC A,ADDPH MOV DPH,A MOV A,R7 ADD A,R1 XCH A,R0 ADDC A,#00H MOV P2,AEBM11 :DEC R0 CJNE R0,#0FFH,EBM12 DEC P2EBM12 :DEC DPL MOV A,DPL CJNE A,#0FFH,EBM13 DEC DPHEBM13 :MOVX A,@R0 MOVX @DPTR,A DJNZ R7,EBM11 RET ;外部RAM數(shù)據(jù)復制程序
上傳時間: 2013-10-30
上傳用戶:bs2005
微機原理與匯編語言程序設計課件為PPT文件,內(nèi)容有:第1章 基礎知識 4第2章 微型計算機系統(tǒng)結構 6第3章 程序加載并執(zhí)行 4第4章 微處理器一般指令 6第5章 匯編語言程序設計基礎 4第6章 算術運算與邏輯運算 8第7章 基本輸入與輸出 4第8章 程序流程控制 10第9章 字符串處理 6第10章 宏 4第11章 過程 4第12章 文件處理 4第13章 模塊化程序設計 4
上傳時間: 2013-10-28
上傳用戶:yanming8525826
實現(xiàn)動態(tài)顯示效果的方法和以上幾種基本類似,這里以滾動顯示為例作一說明。對于需要滾動的文字,可以將其設置為位圖格式,暫存于內(nèi)存中,然后利用VC 提供的位圖拷貝函數(shù)BitBlt將位圖復制到顯示位置。對于特殊字符或圖形,則可以直接利用BitBlt函數(shù)調(diào)用到顯示位置。然后在類CLEDDlg的 OnTimer函數(shù)中調(diào)用該函數(shù),以實現(xiàn)文字的滾動顯示。另外,也可以通過設定不同的響應時間間隔來改變文字的滾動速度。 程序清單: ORG 00H LOOP: MOV A,#0FFH ;開機初始化,清除畫面 MOV P0,A ;清除P0口 ANL P2,#00 ;清除P2口 MOV R2,#200 D100MS: MOV R3,#250 ;延時100毫秒 DJNZ R3,$ DJNZ R2,D100MS MOV 20H,#00H ;取碼指針的初值 l100: MOV R1,#100 ;每個字的停留時間 L16: MOV R6,#16 ;每個字16個碼
上傳時間: 2013-11-06
上傳用戶:zl520l
什么是JTAG 到底什么是JTAG呢? JTAG(Joint Test Action Group)聯(lián)合測試行動小組)是一種國際標準測試協(xié)議(IEEE 1149.1兼容),主要用于芯片內(nèi)部測試?,F(xiàn)在多數(shù)的高級器件都支持JTAG協(xié)議,如DSP、FPGA器件等。標準的JTAG接口是4線:TMS、 TCK、TDI、TDO,分別為模式選擇、時鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。 JTAG最初是用來對芯片進行測試的,基本原理是在器件內(nèi)部定義一個TAP(Test Access Port�測試訪問口)通過專用的JTAG測試工具對進行內(nèi)部節(jié)點進行測試。JTAG測試允許多個器件通過JTAG接口串聯(lián)在一起,形成一個JTAG鏈,能實現(xiàn)對各個器件分別測試。現(xiàn)在,JTAG接口還常用于實現(xiàn)ISP(In-System rogrammable�在線編程),對FLASH等器件進行編程。 JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對芯片進行預編程現(xiàn)再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。JTAG接口可對PSD芯片內(nèi)部的所有部件進行編程 JTAG的一些說明 通常所說的JTAG大致分兩類,一類用于測試芯片的電氣特性,檢測芯片是否有問題;一類用于Debug;一般支持JTAG的CPU內(nèi)都包含了這兩個模塊。 一個含有JTAG Debug接口模塊的CPU,只要時鐘正常,就可以通過JTAG接口訪問CPU的內(nèi)部寄存器和掛在CPU總線上的設備,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)內(nèi)置模塊的寄存器,象UART,Timers,GPIO等等的寄存器。 上面說的只是JTAG接口所具備的能力,要使用這些功能,還需要軟件的配合,具體實現(xiàn)的功能則由具體的軟件決定。 例如下載程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要參照SOC DataSheet的寄存器說明,設置RAM的基地址,總線寬度,訪問速度等等。有的SOC則還需要Remap,才能正常工作。運行Firmware時,這些設置由Firmware的初始化程序完成。但如果使用JTAG接口,相關的寄存器可能還處在上電值,甚至時錯誤值,RAM不能正常工作,所以下載必然要失敗。要正常使用,先要想辦法設置RAM。在ADW中,可以在Console窗口通過Let 命令設置,在AXD中可以在Console窗口通過Set命令設置。
上傳時間: 2013-10-23
上傳用戶:aeiouetla
解壓包包含了C語言入門經(jīng)典教程和Visuak c++軟件 【基本簡介】 Visual C++是一個功能強大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。 雖然微軟公司推出了Visual C++.NET(Visual C++7.0),但它的應用的很大的局限性,只適用于Windows 2000,Windows XP和Windows NT4.0。所以實際中,更多的是以Visual C++6.0為平臺。 Visual C++6.0不僅是一個C++編譯器,而且是一個基于Windows操作系統(tǒng)的可視化集成開發(fā)環(huán)境(integrated development environment,IDE)。Visual C++6.0由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)ppWizard、類向?qū)lass Wizard等開發(fā)工具。 這些組件通過一個名為Developer Studio的組件集成為和諧的開發(fā)環(huán)境。 在Visual C++ 6.0 企業(yè)版的基礎上集成官方的SP6升級補丁制作而成!免序列號,安裝完即可使用,無需再打補??! 【使用方法】 有些朋友反應在安裝后出現(xiàn) "Error spawning error" 可以看看下面綠色軟件找到的一些解決方案: 點擊VC“TOOLS(工具)”—>“Option(選擇)”—>“Directories(目錄)”重新設置“Excutable Fils、Include Files、Library Files、Source Files”的路徑。很多情況可能就一個盤符的不同(例如你的VC裝在C,但是這些路徑全部在D),改過來就OK了。
上傳時間: 2013-10-09
上傳用戶:hui626493
飛思卡爾智能車的舵機測試程序 #include <hidef.h> /* common defines and macros */#include <MC9S12XS128.h> /* derivative information */#pragma LINK_INFO DERIVATIVE "mc9s12xs128" void SetBusCLK_16M(void) { CLKSEL=0X00; PLLCTL_PLLON=1; //鎖相環(huán)電路允許位 SYNR=0x00 | 0x01; //SYNR=1 REFDV=0x80 | 0x01; POSTDIV=0x00; _asm(nop); _asm(nop); while(!(CRGFLG_LOCK==1)); CLKSEL_PLLSEL =1; } void PWM_01(void) { //舵機初始化 PWMCTL_CON01=1; //0和1聯(lián)合成16位PWM; PWMCAE_CAE1=0; //選擇輸出模式為左對齊輸出模式 PWMCNT01 = 0; //計數(shù)器清零; PWMPOL_PPOL1=1; //先輸出高電平,計數(shù)到DTY時,反轉電平 PWMPRCLK = 0X40; //clockA 不分頻,clockA=busclock=16MHz;CLK B 16分頻:1Mhz PWMSCLA = 0x08; //對clock SA 16分頻,pwm clock=clockA/16=1MHz; PWMCLK_PCLK1 = 1; //選擇clock SA做時鐘源 PWMPER01 = 20000; //周期20ms; 50Hz; PWMDTY01 = 1500; //高電平時間為1.5ms; PWME_PWME1 = 1;
上傳時間: 2013-11-04
上傳用戶:狗日的日子