VIP專區-嵌入式/單片機編程源碼精選合集系列(4)資源包含以下內容:1. I2C接口設計文檔.2. 非常有用的自抗擾pid控制器程序。搞控制的可以看看。.3. 卡爾曼濾波在化工傳熱過程中的應用.4. 交通燈模擬控制器.5. uc/os操作系統的文件系統源碼.6. 999秒的定時器.7. 24CXX的讀寫操作.8. 12864LCM的應用實例.9. 開發源代碼的CPU卡的COS源程序。.10. 匯編語言編寫的搶答器設計報告.11. 用匯編語言編寫的步進電機的課程設計.12. 微型計算機接口槍答器課程設計.13. tcp/ip 協議的源碼.14. 2500ad 的6502 編譯器資料.15. 6502 的編譯器的源碼和文檔.16. cc65 的編譯器文檔.17. 一個漢字顯示的例子(嵌入式).18. at29c040 card 讀寫程序源碼.19. 嵌入式的命令行解釋器.20. 研華數據采集卡PCI1713,PCI1720,PCL730測試程序.21. 在嵌入式系統DeltaSYSTEM中實現PING主機.22. 機器人的實時控制。VxWork,Windows系統在機器人控制方面的應用。鏈接來自 http://www.automationit.hut.fi.23. pci驅動程序的源代碼.24. 在大型通信系統(機架插板式)中多塊單板通過TDM總線.25. 嵌入式TCPIP協議.26. rtLinux源代碼.27. pid學習資料代碼.28. 多線程管理器源代碼thread manager,VC開發的.29. s3c44b0的bootload程序.30. 在ADS和SDT上都可運行的S3C44B0的源程序.31. LCD的源代碼.32. 在GNU上開發的應用程序源代碼.33. 在線編輯WORD文檔.34. 實時多任務系統內核分析.35. PLD實驗參考源程序.36. 世界各國電話來電顯示標準.37. 第十三屆全國電源技術年會論文集錦.38. A CCITT-16 CRC calculator. The source contains both the calculated (smaller but slower) version, and.39. 8051 RC5 Decoder A simple RC5 decoder written in C . Written to emulate a SAA3049..40. 開源嵌入式數據庫Berkeley DB-4.2.52.
上傳時間: 2013-04-15
上傳用戶:eeworm
VIP專區-嵌入式/單片機編程源碼精選合集系列(32)資源包含以下內容:1. 無線音頻電話(gprs).2. 經典的psos編程實例源碼.3. 嵌入式系統文件管理部分.4. lwIP是瑞士計算機科學院(Swedish Institute of Computer Science)的Adam Dunkels等開發的一套用于嵌入式系統的開放源代碼TCP/IP協議棧。Lwip既可.5. 非常經典的網絡協議棧.6. "CAN0 CAN4 C"是CAN0和CAN4通訊的程序。用戶可參照此例程設置MSCAN模塊。本文件夾是為用戶提供的codeworrior編程范例.7. 本文件夾是為用戶提供的codeworrior編程范例.8. ucos-ii 編譯器ICCAVR CPU atmega8 8M 晶振 對原作者的ucos進行了簡化.9. "Port ucosii V252"是嵌入式操作系統uC/OS-II在DP256/DG128上移植的范例。提供的codeworrior編程范例.10. "SendA"通過調用監控程序.11. "printpp"是幫助用戶調試的一個工具.12. This program is free software you can redistribute it and/or modify it under the terms of the GNU Ge.13. device driver for various TV and TV+FM radio tuners.14. D:MyData其它我的文章C51cp1_1 est.uv2 Project File Date: 04/02/2003.15. 一個簡單的TCP IP協議棧程序.16. 校園導游系統.17. 本文檔是關于boa web服務器的源程序.18. boa web服務器的主程序.19. 關于boa web服務器的配置文件.20. 嵌入式操作系統TCP/IP協議棧的socket小程序.21. 講解嵌入式TCP/IP協議棧的編寫.22. 本原代碼集是對計算機圖形學的編程實踐.23. 關于TCP/IP的一份碩士論文.24. 這是一個在VxWorks系統實現CS網卡END驅動的原代碼.25. 實現一個運行在16位數字信號處理器TMS320VC5402上的小型嵌入式TCP/IP協議棧。對TCP/IP協議中的IP協議、ARP協議、UDP協議進行分析.26. 此為講解內存技術的文檔資料.27. 我設計的數字電源的源代碼 還有原理圖.28. ARM MP3解碼源代碼1.0 有完整的項目文件.29. 基于WEB的嵌入式視頻采集壓縮瘦身服務器的設計與實現.30. 此文當為日本嵌入式tron的技術文檔,目前在日立等公司的主流嵌入式系統還是tron.31. C++的溫度控制系統,是本人在其它網站上找到的,還沒有試過.32. 基于牛頓迭代法的二次規劃程序.33. PCI總線與USB總線之間的數據通信的用戶端應用程序(包括界面和通信).34. GIF動畫解碼算法.35. 一個嵌入式web server的源碼。小巧好用.36. 一個橋接器87ch47仿真器的c的源程序.37. 給ARM7用的MP3程序源碼.38. 給ucgui用的字庫HZK12,12x12點陣的漢字庫和hzk16點陣的漢字庫.39. 很多人想要的LCDSLIN.c文件是給UCGUI用的驅動文件.40. 下載管理器是基于HTTP1.1而建立的,支持斷點續傳.采用Java Swing創建了一個簡單高效的GUI界面,具有一次下載多個文件的能力..
上傳時間: 2013-07-22
上傳用戶:eeworm
VIP專區-嵌入式/單片機編程源碼精選合集系列(43)資源包含以下內容:1. 單片機利用霍爾元件冊電機速度的c語言程序.2. ARM Image for uCOSII for lpc2131工程模板.3. 漢字庫的實現 一.獲取字庫.exe 可以獲得漢字庫及英文字庫 二.查看字庫.exe 可以查看漢字庫及英文字庫的點陣顯示效果 三.顯示程序.h 獲取字庫點陣及顯示的源代碼 四.其它資料 相關的字.4. 2410上的I/O控制數碼管的應用程序.5. NORTi3 is a realtime multitasking operating system conforming to the micro-ITRON 3.0 specification..6. ADE7758三相電能芯片讀寫源程序.7. AT91RM9200PQ208電路圖.8. 嵌入式系統驅動開發.9. 嵌入式系統驅動程序.10. 數控電流源61控制程序 包含zlg7289的61控制程序.11. Open Jtag小組的產品。有了它.12. flash讀寫原代碼.13. 設計一個可容納四組參賽的數字式搶答器.14. ps2鍵盤的設計.15. 簡明扼要地介紹了uIP TCP/IP協議堆棧的eCOG1端口。文中還描述了一 個應用于簡單的web網頁服務器的實例。 開放源uIP軟件包為在不犧牲互操作性或RFC標準的條件下.16. 5單片機1實用系統.17. 此文檔為采用FPGA實現的以太網MAC層.18. 一個用新方法實現的堆管理器.19. Xinx ISE 官方源代碼盤第二章.20. Xilinx ISE 官方源代碼盤 2.21. Xilinx Ise 官方源代碼盤 第四章.22. Xilinx ISE 官方源代碼盤 第五章.23. Xilinx ISE官方源代碼盤 第六章.24. Epson 清零程序大全.25. Xilinx ISE 官方源代碼盤第七章 Part1.26. Xilinx ISE 官方源代碼盤第七章 Part 2.27. Xilinx ISE 官方源代碼盤第八章.28. Xilinx ISE 官方源代碼盤第九章.29. Xilinx ISE 官方源代碼盤第十章.30. 是HD61202液晶顯示漢字的完整程序代碼.31. keil c 編寫的tea5767HL 的程序代碼.32. 這是關于vc5416dsk的文檔其中有其原理圖 為學vc54xdsp的好的參考資料.33. 這是關于PDIUSBD12usb接口開發的資料.34. 此為tidsp(vc54x)對語音音頻采集壓縮編碼解碼設計原理圖及pcb圖,非常具有參考價值.35. 心電采集設計,有源碼,很不錯,用MSP430做的,有用的可以下來.36. 改進版的紅外遙控器解碼程序 抗干擾能力非常強 至今未出現誤觸發.37. I2C總線LINUX驅動程序.38. CyPress的C8051F32X系列底層驅動(C語言)及上位機demo(vc環境).39. 微機接口實驗程序 。。 。。 。。 。。 。。 。。 。。.40. 前有人傳的imagewrite中少了文件ecc.c,根本不能編譯成功,見圖err,現把完整文件改名了上傳.
上傳時間: 2013-06-12
上傳用戶:eeworm
VIP專區-嵌入式/單片機編程源碼精選合集系列(162)資源包含以下內容:1. 如何在M68HC08、HCS08和HCS12 微控制器上應用IIC模塊.2. M68UICS08 – HC08 通用在線仿真器(ICS)使用指南.3. C語言嵌入式系統編程修煉 對作嵌入式得人很有幫助.4. 這是我們公司正在使用的滿位顯示屏程序,用C語言編寫,里面有I2C總線技術,控制數碼管顯示技術..在現代停車場用來指示車庫的剩余車位非常的實用.5. msp430F149 uc/os ii的程序.6. TI的TUSB3210芯片的原理圖和PCB文件。為您的設計提供參考。.7. 國家標準-軟件開發規范,內含完整14篇規范文檔.8. 用PIC18xxx系列單片機實現直流電機伺服控制的源代碼及詳細文檔.9. cissp入門必備經典資料.10. 51單片機.11. RDA5800芯片代碼.12. 我搜集的數控機床fanuc系統的pmc文件.13. 應用關于嵌入式開發的許多應用 還有編程方面的知識.14. 關于嵌入式arm開發的幾個頭文件描述.15. 開發試驗箱的原理圖.16. calculator code ,use toshibaor nec LSI.17. 搞嵌入式GPS導航的一個開源代碼。用的是minigui-1.3.3,移植到powerpc823上。.18. 華恒教育關于嵌入式環境構建的 相關況,以及相關的安裝說明.19. 機械工業出版社出版《嵌入式系統軟件教程》答案.20. FT1505A4配CMO2.4"玻璃的初始化代碼.21. 在2210上運行的一個嵌入式web.22. VB與S7-200PLC PPI通訊協議yuandaima.23. 44b0下的8019驅動,查詢方式,可放入lwip移植用的,轉至small.box大蝦.24. Advanced TCA相關的一系列規范.25. 這是TOPWAY公司的LCD驅動程序.26. 該教案是嵌入式系統開發中.27. mcx314的元件庫和原理圖,可用DXP2004打開!.28. LMD18200的技術文檔.29. CM240128程序.30. stm32f103開發板 tim定時器例程.31. 凌陽單片機的示例程序.32. 學verilog時寫的8位十進制頻率計.33. 華為GTM900開發板資料.34. 這是一個用VB編寫的與三菱PLC通訊的實用源碼程序,已在實際中成熟應用..35. 講解C++嵌入式的電子教程.36. X28xx功能單元使用.doc 例1、初始化鎖相環及外設時鐘函數 例2、.cmd格式文件舉例 例3、定時器中斷應用舉例 例4、利用事件管理器輸出多種頻率的正弦信號輸出例程 例5、SP.37. 歐母龍PLC控件.38. u-link1.39. 網勝B2B電子商務藍色風格2008SP6.0.1普及版.40. 本文介紹了如何在powerbuilder中實現復雜報表.
上傳時間: 2013-06-13
上傳用戶:eeworm
特點: 精確度0.1%滿刻度 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A|/ 16 BIT類比輸出功能 輸入與輸出絕緣耐壓2仟伏特/1分鐘(input/output/power) 寬范圍交直流兩用電源設計 尺寸小,穩定性高
上傳時間: 2014-12-23
上傳用戶:ydd3625
特點(FEATURES) 精確度0.1%滿刻度 (Accuracy 0.1%F.S.) 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A| (Math functioA+B/A-B/AxB/A/B/A&B(Hi&Lo)/|A|/etc.....) 16 BIT 類比輸出功能(16 bit DAC isolating analog output function) 輸入/輸出1/輸出2絕緣耐壓2仟伏特/1分鐘(Dielectric strength 2KVac/1min. (input/output1/output2/power)) 寬范圍交直流兩用電源設計(Wide input range for auxiliary power) 尺寸小,穩定性高(Dimension small and High stability)
上傳時間: 2013-11-24
上傳用戶:541657925
附件是51mini仿真器中文使用手冊,其中包括有51mini的驅動,USB安裝指南及USB驅動程序。 2003 年 SST 公司推出了 SST89C54/58 芯片,并且在官方網站公布了單片機仿真程序,配合 KEIL 可以實現標 準 51 內核芯片的單步調試等等,從而實現了一個簡單的 51 單片機仿真方案,將仿真器直接拉低到一顆芯片的價 格。 但是, 1 分錢 1 分貨,這個仿真方案由于先天的缺陷存在若干重大問題: 占用 p30,p31 端口 占用定時器 2 占用 8 個 sp 空間 運行速度慢 最高通信速度只有 38400,無法運行 c 語言程序。(由于 c 語言程序會調用庫文件,每單步一次 的時間足夠你吃個早飯) 所以,網上大量銷售的這種這種仿真器最多只能仿真跑馬燈等簡單程序,并沒有實際使用價值。51mini 是深 圳市學林電子有限公司開發生產的具有自主知識產權的新一代專業仿真器,采用雙 CPU 方案,一顆負責和 KEIL 解 釋,另外一顆負責運行用戶程序,同時巧妙利用 CPU 的 P4 口通信,釋放 51 的 P30,P31,完美解決了上述問題, 體積更小,是目前價格最低的專業級別 51 單片機仿真器,足以勝任大型項目開發。 51mini仿真器創新設計: 1 三明治夾心雙面貼片,體積縮小到只有芯片大小,真正的“嵌入式”結構。 2 大量采用最新工藝和器件,全貼片安裝,進口鉭電容,貼片電解。 3 采用快恢復保險,即便短路也可有效保護。 4 單 USB 接口,無需外接電源和串口,臺式電腦、無串口的筆記本均適用。三 CPU 設計,采用仿真芯片+監控 芯片+USB 芯片結構,是一款真正獨立的仿真器,不需要依賴開發板運行。 5 下載仿真通訊急速 115200bps,較以前版本提高一個數量級(10 倍以上),單步運行如飛。 6 不占資源,無限制真實仿真(32 個 IO、串口、T2 可完全單步仿真),真實仿真 32 條 IO 腳,包括任意使用 P30 和 P31 口。 7 兼容 keilC51 UV2 調試環境支持單步、斷點、隨時可查看寄存器、變量、IO、內存內容。可仿真各種 51 指 令兼容單片機,ATMEL、Winbond、INTEL、SST、ST 等等。可仿真 ALE 禁止,可仿真 PCA,可仿真雙 DPTR,可仿真 硬件 SPI。媲美 2000 元級別專業仿真器! 8 獨創多聲響和 led 指示實時系統狀態和自檢。 9 獨創長按復位鍵自動進入脫機運行模式,這時仿真機就相當于目標板上燒好的一個芯片,可以更加真實的運 行。這種情況下實際上就變了一個下載器,而且下次上電時仍然可以運行上次下載的程序。 USB 驅動的安裝 第一步:用隨機 USB 通訊電纜連接儀器的 USB 插座和計算機 USB口;顯示找到新硬件向導,選擇“從列表或指定位置安裝(高級)”選項,進入下一步; 第二步:選擇“在搜索中包括這個位置”,點擊“瀏覽”,定位到配套驅動光盤的驅動程序文件夾,如 E:\驅動程序\XLISP 驅動程序\USBDRIVER2.0\,進入下一步; 第三步:彈出“硬件安裝”對話框,如果系統提示“沒有通過Windows 徽標測試…”,不用理會,點擊“仍然繼續”,向導即開始安裝軟件;然后彈出“完成找到新硬件向導”對話框,點擊完成。 第四步:系統第二次彈出“找到新的硬件向導”對話框,重復以上幾個步驟; 右下角彈出對話框“新硬件已安裝并可以使用了”,表明 USB 驅動已成功安裝。你可以進入系統的:控制面板\系統\硬件\設備管理器中看到以下端口信息, 表示系統已經正確的安裝了 USB 驅動。
上傳時間: 2013-11-02
上傳用戶:貓愛薛定諤
TLC2543是TI公司的12位串行模數轉換器,使用開關電容逐次逼近技術完成A/D轉換過程。由于是串行輸入結構,能夠節省51系列單片機I/O資源;且價格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應用。 TLC2543的特點 (1)12位分辯率A/D轉換器; (2)在工作溫度范圍內10μs轉換時間; (3)11個模擬輸入通道; (4)3路內置自測試方式; (5)采樣率為66kbps; (6)線性誤差±1LSBmax; (7)有轉換結束輸出EOC; (8)具有單、雙極性輸出; (9)可編程的MSB或LSB前導; (10)可編程輸出數據長度。 TLC2543的引腳排列及說明 TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說明見表1 TLC2543電路圖和程序欣賞 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上傳時間: 2013-11-19
上傳用戶:shen1230
a_bit equ 20h ;個位數存放處 b_bit equ 21h ;十位數存放處 temp equ 22h ;計數器寄存器 star: mov temp,#0 ;初始化計數器 stlop: acall display inc temp mov a,temp cjne a,#100,next ;=100重來 mov temp,#0 next: ljmp stlop ;顯示子程序 display: mov a,temp ;將temp中的十六進制數轉換成10進制 mov b,#10 ;10進制/10=10進制 div ab mov b_bit,a ;十位在a mov a_bit,b ;個位在b mov dptr,#numtab ;指定查表啟始地址 mov r0,#4 dpl1: mov r1,#250 ;顯示1000次 dplop: mov a,a_bit ;取個位數 MOVC A,@A+DPTR ;查個位數的7段代碼 mov p0,a ;送出個位的7段代碼
上傳時間: 2013-11-06
上傳用戶:lx9076
單片機指令系統原理 51單片機的尋址方式 學習匯編程序設計,要先了解CPU的各種尋址法,才能有效的掌握各個命令的用途,尋址法是命令運算碼找操作數的方法。在我們學習的8051單片機中,有6種尋址方法,下面我們將逐一進行分析。 立即尋址 在這種尋址方式中,指令多是雙字節的,一般第一個字節是操作碼,第二個字節是操作數。該操作數直接參與操作,所以又稱立即數,有“#”號表示。立即數就是存放在程序存儲器中的常數,換句話說就是操作數(立即數)是包含在指令字節中的。 例如:MOV A,#3AH這條指令的指令代碼為74H、3AH,是雙字節指令,這條指令的功能是把立即數3AH送入累加器A中。MOV DPTR,#8200H在前面學單片機的專用寄存器時,我們已學過,DPTR是一個16位的寄存器,它由DPH及DPL兩個8位的寄存器組成。這條指令的意思就是把立即數的高8位(即82H)送入DPH寄存器,把立即數的低8位(即00H)送入DPL寄存器。這里也特別說明一下:在80C51單片機的指令系統中,僅有一條指令的操作數是16位的立即數,其功能是向地址指針DPTR傳送16位的地址,即把立即數的高8位送入DPH,低8位送入DPL。 直接尋址 直接尋址方式是指在指令中操作數直接以單元地址的形式給出,也就是在這種尋址方式中,操作數項給出的是參加運算的操作數的地址,而不是操作數。例如:MOV A,30H 這條指令中操作數就在30H單元中,也就是30H是操作數的地址,并非操作數。 在80C51單片機中,直接地址只能用來表示特殊功能寄存器、內部數據存儲器以及位地址空間,具體的說就是:1、內部數據存儲器RAM低128單元。在指令中是以直接單元地址形式給出。我們知道低128單元的地址是00H-7FH。在指令中直接以單元地址形式給出這句話的意思就是這0-127共128位的任何一位,例如0位是以00H這個單元地址形式給出、1位就是以01H單元地址給出、127位就是以7FH形式給出。2、位尋址區。20H-2FH地址單元。3、特殊功能寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號形式給出。例如下面我們分析的一條指令 MOV IE,#85H 前面的學習我們已知道,中斷允許寄存器IE的地址是80H,那么也就是這條指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。 關于數據存儲器RAM的內部情況,請查看我們課程的第十二課。 直接尋址是唯一能訪問特殊功能寄存器的尋址方式! 大家來分析下面幾條指令:MOV 65H,A ;將A的內容送入內部RAM的65H單元地址中MOV A,direct ;將直接地址單元的內容送入A中MOV direct,direct;將直接地址單元的內容送直接地址單元MOV IE,#85H ;將立即數85H送入中斷允許寄存器IE 前面我們已學過,數據前面加了“#”的,表示后面的數是立即數(如#85H,就表示85H就是一個立即數),數據前面沒有加“#”號的,就表示后面的是一個地址地址(如,MOV 65H,A這條指令的65H就是一個單元地址)。 寄存器尋址 寄存器尋址的尋址范圍是:1、4個工作寄存器組共有32個通用寄存器,但在指令中只能使用當前寄存器組(工作寄存器組的選擇在前面專用寄存器的學習中,我們已知道,是由程序狀態字PSW中的RS1和RS0來確定的),因此在使用前常需要通過對PSW中的RS1、RS0位的狀態設置,來進行對當前工作寄存器組的選擇。2、部份專用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和進位位CY。 寄存器尋址方式是指操作數在寄存器中,因此指定了寄存器名稱就能得到操作數。例如:MOV A,R0這條指令的意思是把寄存器R0的內容傳送到累加器A中,操作數就在R0中。INC R3這條指令的意思是把寄存器R3中的內容加1 從前面的學習中我產應可以理解到,其實寄存器尋址方式就是對由PSW程序狀態字確定的工作寄存器組的R0-R7進行讀/寫操作。 寄存器間接尋址 寄存間接尋址方式是指寄存器中存放的是操作數的地址,即操作數是通過寄存器間接得到的,因此稱為寄存器間接尋址。 MCS-51單片機規定工作寄存器的R0、R1做為間接尋址寄存器。用于尋址內部或外部數據存儲器的256個單元。為什么會是256個單元呢?我們知道,R0或者R1都是一個8位的寄存器,所以它的尋址空間就是2的八次方=256。例:MOV R0,#30H ;將值30H加載到R0中 MOV A,@R0 ;把內部RAM地址30H內的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H內的值放到累加器A中 大家想想,如果用DPTR做為間址寄存器,那么它的尋址范圍是多少呢?DPTR是一個16位的寄存器,所以它的尋址范圍就是2的十六次方=65536=64K。因用DPTR做為間址寄存器的尋址空間是64K,所以訪問片外數據存儲器時,我們通常就用DPTR做為間址寄存器。例:MOV DPTR,#1234H ;將DPTR值設為1234H(16位) MOVX A,@DPTR ;將外部RAM或I/O地址1234H內的值放到累加器A中 在執行PUSH(壓棧)和POP(出棧)指令時,采用堆棧指針SP作寄存器間接尋址。例:PUSH 30H ;把內部RAM地址30H內的值放到堆棧區中堆棧區是由SP寄存器指定的,如果執行上面這條命令前,SP為60H,命令執行后會把內部RAM地址30H內的值放到RAM的61H內。 那么做為寄存器間接尋址用的寄存器主要有哪些呢?我們前面提到的有四個,R0、R1、DPTR、SP 寄存器間接尋址范圍總結:1、內部RAM低128單元。對內部RAM低128單元的間接尋址,應使用R0或R1作間址寄存器,其通用形式為@Ri(i=0或1)。 2、外部RAM 64KB。對外部RAM64KB的間接尋址,應使用@DPTR作間址尋址寄存器,其形式為:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的單元的內容送入累加器A中。外部RAM的低256單元是一個特殊的尋址區,除可以用DPTR作間址寄存器尋址外,還可以用R0或R1作間址寄存器尋址。例如MOVX A,@R0;這條指令的意思是,把R0指定的外部RAM單元的內容送入累加器A。 堆棧操作指令(PUSH和POP)也應算作是寄存器間接尋址,即以堆棧指針SP作間址寄存器的間接尋址方式。 寄存器間接尋址方式不可以訪問特殊功能寄存器!! 寄存器間接尋址也須以寄存器符號的形式表示,為了區別寄存器尋址我寄存器間接尋址的區別,在寄存器間接尋址方式式中,寄存器的名稱前面加前綴標志“@”。 基址寄存器加變址寄存器的變址尋址 這種尋址方式以程序計數器PC或DPTR為基址寄存器,累加器A為變址寄存器,變址尋址時,把兩者的內容相加,所得到的結果作為操作數的地址。這種方式常用于訪問程序存儲器ROM中的數據表格,即查表操作。變址尋址只能讀出程序內存入的值,而不能寫入,也就是說變址尋址這種方式只能對程序存儲器進行尋址,或者說它是專門針對程序存儲器的尋址方式。例:MOVC A,@A+DPTR這條指令的功能是把DPTR和A的內容相加,再把所得到的程序存儲器地址單元的內容送A假若指令執行前A=54H,DPTR=3F21H,則這條指令變址尋址形成的操作數地址就是54H+3F21H=3F75H。如果3F75H單元中的內容是7FH,則執行這條指令后,累加器A中的內容就是7FH。 變址尋址的指令只有三條,分別如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC 第一條指令JMP @A+DPTR這是一條無條件轉移指令,這條指令的意思就是DPTR加上累加器A的內容做為一個16位的地址,執行JMP這條指令是,程序就轉移到A+DPTR指定的地址去執行。 第二、三條指令MOVC A,@A+DPTR和MOVC A,@A+PC指令這兩條指令的通常用于查表操作,功能完全一樣,但使用起來卻有一定的差別,現詳細說明如下。我們知道,PC是程序指針,是十六位的。DPTR是一個16位的數據指針寄存器,按理,它們的尋址范圍都應是64K。我們在學習特殊功能寄存器時已知道,程序計數器PC是始終跟蹤著程序的執行的。也就是說,PC的值是隨程序的執行情況自動改變的,我們不可以隨便的給PC賦值。而DPTR是一個數據指針,我們就可以給空上數據指針DPTR進行賦值。我們再看指令MOVC A,@A+PC這條指令的意思是將PC的值與累加器A的值相加作為一個地址,而PC是固定的,累加器A是一個8位的寄存器,它的尋址范圍是256個地址單元。講到這里,大家應可明白,MOVC A,@A+PC這條指令的尋址范圍其實就是只能在當前指令下256個地址單元。所在,這在我們實際應用中,可能就會有一個問題,如果我們需要查詢的數據表在256個地址單元之內,則可以用MOVC A,@A+PC這條指令進行查表操作,如果超過了256個單元,則不能用這條指令進行查表操作。剛才我們已說到,DPTR是一個數據指針,這個數據指針我們可以給它賦值操作的。通過賦值操作。我們可以使MOVC A,@A+DPTR這條指令的尋址范圍達到64K。這就是這兩條指令在實際應用當中要注意的問題。 變址尋址方式是MCS-51單片機所獨有的一種尋址方式。 位尋址 80C51單片機有位處理功能,可以對數據位進行操作,因此就有相應的位尋址方式。所謂位尋址,就是對內部RAM或可位尋址的特殊功能寄存器SFR內的某個位,直接加以置位為1或復位為0。 位尋址的范圍,也就是哪些部份可以進行位尋址: 1、我們在第十二課學習51單片機的存儲器結構時,我們已知道在單片機的內部數據存儲器RAM的低128單元中有一個區域叫位尋址區。它的單元地址是20H-2FH。共有16個單元,一個單元是8位,所以位尋址區共有128位。這128位都單獨有一個位地址,其位地址的名字就是00H-7FH。這里就有一個比較麻煩的問題需要大家理解清楚了。我們在前面的學習中00H、01H。。。。7FH等等,所表示的都是一個字節(或者叫單元地址),而在這里,這些數據都變成了位地址。我們在指令中,或者在程序中如何來區分它是一個單元地址還是一個位地址呢?這個問題,也就是我們現在正在研究的位尋址的一個重要問題。其實,區分這些數據是位地址還是單元地址,我們都有相應的指令形式的。這個問題我們在后面的指令系統學習中再加以論述。 2、對專用寄存器位尋址。這里要說明一下,不是所有的專用寄存器都可以位尋址的。具體哪些專用寄存器可以哪些專用寄存器不可以,請大家回頭去看看我們前面關于專用寄存器的相關文章。一般來說,地址單元可以被8整除的專用寄存器,通常都可以進行位尋址,當然并不是全部,大家在應用當中應引起注意。 專用寄存器的位尋址表示方法: 下面我們以程序狀態字PSW來進行說明 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P 1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示為D5H MOV C,D5H 2、位名稱表示:表示該位的名稱,例如PSW的位5是F0,所以可以用F0表示 MOV C,F0 3、單元(字節)地址加位表示:D0H單元位5,表示為DOH.5 MOV C,D0H.5 4、專用寄存器符號加位表示:例如PSW.5 MOV C,PSW.5 這四種方法實現的功能都是相同的,只是表述的方式不同而已。 例題: 1. 說明下列指令中源操作數采用的尋址方式。 MOV R5,R7 答案:寄存器尋址方式 MOV A,55H 直接尋址方式 MOV A,#55H 立即尋址方式 JMP @A+DPTR 變址尋址方式 MOV 30H,C 位尋址方式 MOV A,@R0 間接尋址方式 MOVX A,@R0 間接尋址方式 改錯題 請判斷下列的MCS-51單片機指令的書寫格式是否有錯,若有,請說明錯誤原因。 MOV R0,@R3 答案:間址寄存器不能使用R2~R7。 MOVC A,@R0+DPTR 變址尋址方式中的間址寄存器不可使用R0,只可使用A。 ADD R0,R1 運算指令中目的操作數必須為累加器A,不可為R0。 MUL AR0 乘法指令中的乘數應在B寄存器中,即乘法指令只可使用AB寄存器組合。
上傳時間: 2013-11-11
上傳用戶:caozhizhi