亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

注意事項(xiàng)

  • 現代微機原理與接口技術

    掌握先進微處理器芯片結構、微型計算機實現技術、計算機主板構成、各種接口技術原理及其應用編程方法;掌握匯編語言程序的編寫方法,尤其掌握接口訪問的方法。了解微機技術新的發展趨勢,系統科學地獲得分析問題和解決問題的訓練;提高分析和設計接口的能力。不僅要學習微機各種接口電路的原理與作用,熟悉PC系列機接口電路,而且還要掌握常用接口的設計與分析方法,學會使用匯編語言和C語言對接口進行編程,并具有一定的動手實驗能力和接口應用程序的編寫能力,為微機的深入應用和嵌入式系統SOC設計等的學習與實踐打下良好基礎。同時有興趣的同學自學Windows 2000/XP驅動程序的編寫方法。一定要下載和打印或復印電子講義,課堂上注意聽講并及時記錄教師課堂上補充的內容,認真獨立完成作業,做好課程實驗和自修實驗、做好課前預習和課后復習。1)抓住IBM PC/XT機基本結構這條主線,分析其基本結構,掌握各接口電路及可編程接口芯片的應用。2)進一步擴展和延伸CPU—從8086~Core 2 Duo,從實模式~保護模式;匯編語言-CPU及接口直接控制,16位~32位匯編;總線—PCI,USB等; 中斷—從實模式下的中斷向量~保護模式下的中斷描述符;從傳統中斷~PCI中斷~串行中斷 芯片組—從中大規模集成電路(8237、8254、8255、8259等)~ 超大規模集成電路(82815EP、82801BA)。第1章—CPU與整機:CPU的信號與工作模式、PC結構第11章--軟件如何控制CPU和接口:指令系統和匯編編程(在教師講授重點的基礎上,通過預習、實驗與練習自學)  第2章--CPU如何與MEM或I/O設備通信:I/O接口與譯碼  第3章--總線如何工作:總線標準(PCI、USB)  第4章--I/O接口直接和MEM通信:DMA(8237,全自學)  第5章--I/O接口如何主動與CPU通信:中斷技術(8259)  第6章--I/O接口的定時與計數功能:(8254)  第7章--I/O接口的并行通信:8255與打印機接口標準  第8章--I/O接口的串行通信:串行通信協議與8250  第10章--I/O軟接口技術:保護模式存儲,WDM驅動程序編寫(全自學)

    標簽: 現代微機原理 接口技術

    上傳時間: 2014-01-21

    上傳用戶:徐孺

  • 驅動程序與應用程序的接口

    有兩種方式可以讓設備和應用程序之間聯系:1. 通過為設備創建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發函數之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface(  GUID* pClassGuid,  DWORD instance,  PDWORD pError){  CDeviceInterfaceClass DevClass(pClassGuid, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  CDeviceInterface DevInterface(&DevClass, instance, pError);  if (*pError != ERROR_SUCCESS)    return INVALID_HANDLE_VALUE;  cout << "The device path is "    << DevInterface.DevicePath()    << endl;   HANDLE hDev;  hDev = CreateFile(   DevInterface.DevicePath(),    GENERIC_READ | GENERIC_WRITE,    FILE_SHARE_READ | FILE_SHARE_WRITE,    NULL,    OPEN_EXISTING,    FILE_ATTRIBUTE_NORMAL,    NULL  );  if (hDev == INVALID_HANDLE_VALUE)    *pError = GetLastError();  return hDev;} 在設備中執行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產生到設備對象的IRPs。下面的表顯示了這種對應關系。Win32 API  DRIVER_FUNCTION_xxxIRP_MJ_xxx  KDevice subclass member function CreateFile  CREATE  Create ReadFile  READ  Read WriteFile  WRITE  Write DeviceIoControl  DEVICE_CONTROL  DeviceControl CloseHandle  CLOSECLEANUP  CloseCleanUp 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內核為設備創建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數。然而,存儲區并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調用,buffer參數的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數:Method  Input Buffer Parameter  Output Buffer Parameter METHOD_BUFFERED  KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT  KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER  KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數據之前拷貝輸入數據。驅動程序通過調用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統緩沖拷貝數據到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數據個數。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數呈現不同的含義。參數InputBuffer被拷貝到一個系統緩沖,這個緩沖驅動程序可以通過調用KIrp::IoctlBuffer。參數OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現。對于METHOD_OUT_DIRECT,調用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執行操作命令的字符串指針  0, FirmwareRev,      //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize,  NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){  ULONG fwLength=0;  switch ( I.IoctlCode() )  {    case IOCTL_MYDEV_GET_FIRMWARE_REV:      fwLength = strlen(FIRMWARE_REV)+1;      if (I.IoctlOutputBufferSize() >= fwLength)      {        strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV);        I.Information() = fwLength;         return I.Complete(STATUS_SUCCESS);      }      else      {              }    case . . .   } }

    標簽: 驅動程序 應用程序 接口

    上傳時間: 2013-10-17

    上傳用戶:gai928943

  • 自制ATMEL 89系列FLASH單片機編程器

    自制一臺ATMEL 89系列FLASH單片機編程器學習單片機最有用的恐怕是編程器和仿真機,一臺商品化的編程器至少要幾百元,仿真機價格更高,往往讓初學者難以選擇。這里介紹的一款國外電子網站推出的廉價51編程器,能夠讀寫最常用的12種51單片機,自己動手裝配一臺,既能鍛煉自己的動手能力,又能廉價地裝備一臺多用編程器,無論是學習單片機或業余時間搞開發,都是一個非常好的選擇。筆者按照資料自制了一臺,十分好用,不敢獨享。特編譯了全部制作資料介紹給大家。這個編程器硬件使用標準的TTL系列器件而沒有使用特殊元件。它連接在計算機的并行端口,對PC的并口沒有特殊要求,所以配置很低的計算機也能用這個編程器。Atmel Flash 系列單片機是當前最流行的單片機,易于擦寫,不象OTP芯片容易造成浪費。特別是89系列單片機與大家熟悉的INTEL51系列單片機完全兼容,這個編程器支持的單片機主要是Atmel flash系列。支持的器件:  這個編程器支持以下ATMEL單片機AT89C51,AT89C52,AT89C55,AT89S51,AT89S52,AT89S53,AT89C51RC,AT89C55WD,AT89S8252,AT89C1051U,AT89C2051,AT89C4051注意:20腳的單片機需要一個簡單的適配器。(圖 2 ) 硬件:  圖1顯示了這個FLASH 編程器的電路圖,編程器和標準的計算機并口連接。電路圖中的U2是用于控制計算機和控制器之間的數據流,U4 鎖存低位地址字節 ,U5 鎖存高位地址字節  ,U3用于產生控制信號給被編程的單片機。IC U1用于產生編程脈沖給單片機.當U7提供編程電壓給控制器時,電源部分用U8產生邏輯5v供給。IC U6用于產生5V或6.5V VDD 電源電壓給單片機。

    標簽: ATMEL FLASH 單片機編程器

    上傳時間: 2013-10-18

    上傳用戶:bakdesec

  • 自制微型51/AVR通用編程器

    微型51/AVR 編程器套件裝配說明書 請您在動手裝配這個編程器之前,務必先看完本說明書,避免走彎路。 1.收到套件后請對照元器件列表檢查一下,元件、配件是否齊全? Used  Part Type        Designator ==== ================ ========== 1    1k               R6         1    1uf 50V          C11        5    2k2              R2 R3 R4 R5 R11     1    10K*8            RN1        2    11.0592MHZ       Q1 Q2      1    12V,0.5W         D2         2    15k              R7 R8      2    21k              R9 R10     4    33p              C6 C7 C8 C9         1    47uf 25V         C10        1    74HC164          IC6        2    78L05            IC4 IC5    1    100uf 25V        C12        1    220R             R1         1    AT89C51          IC2        1    B40C800(W02)     D1         2    BS170            T1 T2      1    BS250            T3         1    DB9/F            J2         1    J1X2             J1         1    LED GN5          D3         1    LM317L           IC1        1    TLC2272          IC7        1    ZIF40            IC3        5    1uf              C1 C2 C3 C4 C5 另外,套件配有1.5米串行電纜一根和配套的PCB一塊,不含電源。編程器使用的15V交流電源或12V直流電源需要自己配套。2.裝配要點:先焊接阻容元件,3個集成電路插座(IC2,IC7,IC6)其次是晶振, 全橋,穩壓IC 等,然后焊接J2,最后焊接T1,T2,T3三只場效應管。焊接場效應管時務必按照以下方法:拔去電烙鐵的電源,使用電烙鐵余溫去焊接三只場效應管,否則靜電很容易損壞管子。這是裝配成功的關鍵。這三只管子有問題,最典型的現象是不能聯機。由于電源插座封裝比較特殊,國內無法配套上,已改用電源線接線柱,可直接焊接在PCB板焊盤上,如下圖1所示(在下圖中兩個紅色圓圈內指示的焊盤),然后在連接到套件中配套的電源插座上。最近有朋友反映用15V交流比較麻煩,還要另外配變壓器。如果要使用12V的直流電,無需將全橋焊上,將兩個接線柱分別焊接在全橋的正負輸出位置的焊盤上即可,如下圖2所示,藍色圓圈內指示的焊盤,連接電源的時候要注意正負極,不要接錯了。方形焊盤是正極。40腳ZIF插座焊接前,應該將BR1飛線焊接好。注意:由于焊盤比較小,注意焊接溫度,不要高溫長時間反復焊接,會導致焊盤脫落。

    標簽: AVR 51 編程器

    上傳時間: 2013-12-31

    上傳用戶:caiguoqing

  • 自制51編程器資料

    第一部分:硬件結構和安裝方法  將組裝好的編程器主板用串口電纜連接到計算機COM1口上,連接好電源線,電源使用的是15V交流電或12V直流電。具體連接方法可以參考裝配說明書。加電后指示燈閃爍,表明電路工作正常。如果能聯機成功,表明編程器已通過了自檢,可以開始編程操作了。注意:指示燈持續亮的時候,表明正在讀寫,這時不能插拔芯片。編程器使用中途不能斷電,如斷電再次加電時,不能聯機。需要重啟動計算機。再次啟動編程器軟件。第二部分:軟件的安裝設置將光盤上51PROG子目錄拷貝到計算機硬盤上,為使用方便,可以將PROFLASH.BAT命令建一個快捷方式在桌面上。然后需要設置計算機串口COM1通訊波特率,步驟如下:單擊鼠標左鍵,選擇“開始”---〉單擊“設置”---〉單擊“控制面板”---〉雙擊“系統”---〉單擊“設備管理器”---〉雙擊“端口(COM&LPT)--->選擇“通訊端口COM1”如下圖一所示

    標簽: 51編程器

    上傳時間: 2013-11-12

    上傳用戶:zzbbqq99n

  • 串行編程器源程序(Keil C語言)

    串行編程器源程序(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;}

    標簽: Keil 串行 C語言 編程器

    上傳時間: 2013-11-12

    上傳用戶:gut1234567

  • PIC單片機基礎知識

    ◆ PIC系列單片機簡介 ◆ PIC系列單片機程序設計基礎 ◆ PIC 8位單片機的分類和特點(一) ◆ PIC 8位單片機的分類和特點(二) ◆ PIC系列單片機的振蕩器配置方法 ◆ PIC 8位單片機的基本組成 ◆ PIC 8位單片機的匯編語言 ◆ PIC 8位單片機16F8X系列簡介 ◆ PIC 8位8腳單片機12C5××和12CE5××系列的特點 ◆ PIC 8位單片機的電源和時鐘 ◆ 常用PIC系列8位單片機芯片引腳符號的功能 ◆ PIC 8位單片機16C6×系列簡介 ◆ PIC 8位單片機匯編語言常用指令的識讀(上) ◆ PIC 8位單片機匯編語言常用指令的識讀(中) ◆ PIC 8位單片機匯編語言常用指令的識讀(下) ◆ 淺談PIC 8位單片機中的RAM和匯編程序的關系 ◆ 選擇PIC單片機存儲體0或1的方法 ◆ PIC系列8位單片機源程序的組成 ◆ PIC系列單片機的偽指令 ◆ PIC 8位單片機指令識讀技巧 ◆ PIC16C84單片機介紹 ◆ PIC16C54單片機原理及應用 ◆ PIC單片機開發的若干問題 ◆ 小議編寫PIC單片機源程序應注意的問題 ◆ PIC16C64單片機外部功能特點  ◆ PIC單片機16F84的內部硬件資源(一) ◆ PIC單片機16F84的內部硬件資源(二) ◆ PIC單片機16F84的內部硬件資源(三) ◆ PIC單片機16F84的內部硬件資料(四) ◆ PIC單片機16F84的內部硬件資源(五) ◆ PIC單片機16F84的內部硬件資源(六) ◆ PIC單片機16F84的內部硬件資源(七) ◆ PIC單片機16F84的內部硬件資源(八) ◆ PIC單片機程序設計的基本格式 ◆ PIC系列單片機數據存儲器的特點和功能(上) ◆ PIC系列單片機數據存儲器的特點和功能(中) ◆ PIC系列單片機數據存儲器的特點和功能(下) ◆ PIC8位單片機新產品的特點和功能 ◆ Windows下PIC8位單片機源程序匯編和固化(一) ◆ Windows下PIC 8位單片機源程序匯編和固化(二) ◆ Windows下PIC 8位單片機源程序匯編和固化(三) ◆ Windows下PIC 8位單片機源程序匯編和固化(四) ◆ Windows下PIC 8位單片機源程序匯編和固化(五) ◆ Windows下PIC 8位單片機源程序匯編和固化(六) ◆ Wineows下PIC 8位單片機源程序匯編和固化(七)

    標簽: PIC 單片機 基礎知識

    上傳時間: 2014-01-21

    上傳用戶:時代電子小智

  • LPC932單片機可靠性設計方案

    1. 使用單片機內部復位電路的可靠性設計LPC932 單片機只能工作在3V 供電電壓下其外圍器件既可以選用3V 接口器件也可以選用5V 接口器件當用戶決定使用內部復位時為了保證單片機上電復位100 可靠必須在復位引腳接一上拉電阻如5 10K 如果單片機使用3V 電源電壓外圍器件使用5V 電源電壓準確的復位電路設計方法如圖1 所示如果單片機使用3V 電源電壓外圍器件使用3V 電源電壓準確的復位電路設計方法如圖2 所示 2. 使用單片機外部復位電路的可靠性設計LPC932 單片機只能工作在3V 供電電壓下其外圍器件既可以選用3V 接口器件也可以選用5V 接口器件當用戶決定使用外部復位電源監控器件時為了保證單片機上電復位100 可靠一定要注意根據外圍器件的供電電源方式選擇復位電源監控器件如果單片機使用3V 電源電壓外圍器件使用5V 電源電壓準確的復位電路設計方法如圖3 所示請選擇PHILIPS 半導體公司生產的MAX809L 等合適的電源監控器件如果單片機使用3V 電源電壓外圍器件使用3V 電源電壓準確的復位電路設計方法如圖4 所示請選擇PHILIPS 半導體公司生產的MAX809R 等合適的電源監控器件.

    標簽: LPC 932 單片機 可靠性

    上傳時間: 2014-03-24

    上傳用戶:aix008

  • 單片機開發中應掌握的幾個基本技巧

    在單片機應用開發中,代碼的使用效率問題、單片機抗干擾性和可靠性等問題仍困擾著 工程師。為幫助工程師解決單片機設計上的難題,《電子工程專輯》網站特邀Holtek香 港分公司工程部處長鄧宏杰先生擔任《單片機應用編程技巧》專題討論的嘉賓,與廣大 設計工程師交流單片機設計開發經驗。現根據論壇中的討論歸納出單片機開發中應掌握 的幾個基本技巧。一、 如何提高C語言編程代碼的效率鄧宏杰指出,用C語言進行單片機程序設計是單片機開發與應用的必然趨勢。他強調:“ 如果使用C編程時,要達到最高的效率,最好熟悉所使用的C編譯器。先試驗一下每條C語言編譯以后對應的匯編語言的語句行數,這樣就可以很明確的知道效率。在今后編程的 時候,使用編譯效率最高的語句。” 他指出,各家的C編譯器都會有一定的差異,故編譯效率也會有所不同,優秀的嵌入式系統C編譯器代碼長度和執行時間僅比以匯編語言編寫的同樣功能程度長5-20%。他說:“對于復雜而開發時間緊的項目時,可以采用C語言,但前提是要求你對該MCU系統的C語言和C編譯器非常熟悉,特別要注意該C編譯系統所能支持的數據類型和算法。雖然C語言是最普遍的一種高級語言,但由于不同的MCU廠家其C語言編譯系統是有所差別的,特別是在一些特殊功能模塊的操作上。所以如果對這些特性不了解,那么調試起來問題就會很 多,反而導致執行效率低于匯編語言。” 二、 如何減少程序中的bug? 對于如何減少程序的bug,鄧宏杰給出了一些建議,他指出系統運行中應考慮的超范圍管理參數有: 1.物理參數。這些參數主要是系統的輸入參數,它包括激勵參數、采集處理中的運行參 數和處理結束的結果參數。合理設定這些邊界,將超出邊界的參數都視為非正常激勵或 非正常回應進行出錯處理。 2.資源參數。這些參數主要是系統中的電路、器件、功能單元的資源,如記憶體容量、 存儲單元長度、堆疊深度。在程式設計中,對資源參數不允許超范圍使用。 3.應用參數。這些應用參數常表現為一些單片機、功能單元的應用條件。如E2PROM的擦 寫次數與資料存儲時間等應用參數界限。 4.過程參數。指系統運行中的有序變化的參數。

    標簽: 單片機開發 基本技巧

    上傳時間: 2013-10-21

    上傳用戶:chukeey

  • 存儲器接口

    6.1  存儲器概述1、存儲器定義      在微機系統中凡能存儲程序和數據的部件統稱為存儲器。2、存儲器分類             微機系統中的存儲器分為內存和外存兩類。3、內存儲器的組成      微機系統中的存儲器由半導體存儲器芯片組成。     單片機內部有存儲器,當單片機內部的存儲器不夠用時,可以外擴存儲器。外擴的存儲器就是由半導體存儲器芯片組成的。     當用半導體存儲器芯片組成內存時必須滿足個要求:①每個存儲單元一定要有8個位。②存儲單元的個數滿足系統要求。注意:內存的容量是指它所含存儲單元的個數(每個存儲單元一定要有8個位,可以存儲8位二進制信息)。6.2  半導體存儲器由于集成工藝水平的限制,一個半導體存儲器芯片上所集成的單元個數和每個單元的位數有限,用它構成內存時必須滿足:內存容量和一個存儲單元有8個位的要求,因此內存常常由多個半導體存儲器芯片構成。      半導體存儲器芯片的存儲容量是指其上所含的基本存儲電路的個數,用單元個數×位數表示。掌握:① 已知內存容量和半導體存儲器芯片的容量,求用半導體存儲器芯片構成內存時需要的芯片個數。② 內存的容量=末地址—首地址+1     半導體存儲器芯片分成ROM和RAM兩類。6.2.1    ROM芯片6.2.2    RAM芯片6.3 MCS-51單片機存儲器擴展 在微機系統中存儲器是必不可少。MCS51系列單片機內部的存儲器不夠用時需要外擴半導體存儲器芯片,外擴的半導體存儲器芯片與MCS51系列單片機通過三總線交換信息。二者連接時必須考慮如下問題:1.二者地址線、數據線、控制線的連接。2.工作速度的匹配。CPU在取指令和存儲器讀或寫操作時,是有固定時序的,用戶要根據這些來確定對存儲器存取速度的要求,或在存儲器已經確定的情況下,考慮是否需要Tw周期,以及如何實現。3.片選信號的產生。目前生產的存儲器芯片,單片的容量仍然是有限的,通常總是要由許多片才能組成一個存儲器,這里就有一個如何產生片選信號的問題。4.CPU的驅動能力 。在設計CPU芯片時,一般考慮其輸出線的直流負載能力,為帶一個TTL負載。現在的存儲器一般都為MOS電路,直流負載很小,主要的負載是電容負載,故在小型系統中,CPU是可以直接與存儲器相連的,而較大的系統中,若CPU的負載能力不能滿足要求,可以(就要考慮CPU能否帶得動,需要時就要加上緩沖器,)由緩沖器的輸出再帶負載。6.3.1    ROM芯片的擴展6.3.2    RAM芯片的擴展                  

    標簽: 存儲器接口

    上傳時間: 2013-11-22

    上傳用戶:moerwang

主站蜘蛛池模板: 宁都县| 汉中市| 交口县| 平原县| 万州区| 阿尔山市| 梁山县| 武平县| 汉中市| 洛川县| 怀安县| 乐亭县| 阜阳市| 井冈山市| 临颍县| 新巴尔虎左旗| 万安县| 大方县| 兴安县| 涞水县| 如皋市| 霸州市| 天津市| 开远市| 东至县| 谷城县| 大足县| 共和县| 来宾市| 哈尔滨市| 扎鲁特旗| 灌南县| 千阳县| 新巴尔虎左旗| 湛江市| 华蓥市| 会昌县| 怀宁县| 响水县| 庆云县| 全椒县|