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

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

我愛(ài)你真的好愛(ài)你啊真的真的

  • Sunplus SPCE061A 微控制器

    輸入/輸出(I/O)接口是CPU與外設間信息交換的橋梁,是一個過渡性的電路,在單片機中和CPU集成在一塊芯片上。介紹輸入輸出口的內容中,著重講述SPCE061A單片機的較特殊的并行I/O結構,以及SPCE061A I/O口的特殊能力。單片機內部CPU與外設間所傳遞信息的性質、傳送方式、傳送速度和電平各不相同,所以CPU與外設之間不是簡單的直接相連,必須借助于I/O接口這個過渡電路才能協(xié)調起來。 并行I/O接口:CPU數(shù)據(jù)轉換為電平的最基本途徑;外設電平轉換為CPU識別的數(shù)據(jù)的最基本途徑;SPCE061A 并行I/O特性獨立的I/O口邏輯電平(VDDIO)    可接VDDIO范圍:3.3~5.5V。多種輸入方式   懸浮、上拉、下拉輸入方式,適應不同的外圍器件對接口要求。按位設置每一位I/O口    可按位設置每一位的輸入輸出方式、狀態(tài)。

    標簽: Sunplus SPCE 061A 061

    上傳時間: 2013-11-19

    上傳用戶:sssnaxie

  • 輸入輸出與接口技術

    2.1.1 I/O接口基本概念1.為什么要引入接口微機和I/O設備的信息類型和格式可能不一樣。微機和I/O設備信號傳輸處理的速度可能不匹配。不用接口, I/O直接接CPU,隨著外設增加,會大大降低CPU的效率。I/O直接接CPU,會使外設硬件結構過于依賴CPU,對外設本身發(fā)展不利。2.接口的概念  定義:接口是CPU與“外部世界”的連接電路,負責“中轉”各種信息。 分類:存儲器接口和I/O接口。 位置:介于系統(tǒng)總線與外部設備之間。3.I/O接口與I/O設備不同I/O設備對應I/O接口不同。I/O接口受CPU控制,I/O設備受I/O接口控制。為增加通用性,I/O接口電路一般均具有可編程功能。微機的應用離不開外部設備接口的設計、選用和連接。2.1.2、I/O接口功能  數(shù)據(jù)緩沖功能:通過寄存器或鎖存器實現(xiàn)。    存放數(shù)據(jù)的寄存器或鎖存器稱之為數(shù)據(jù)口。  接受和執(zhí)行CPU命令功能:    存放CPU命令代碼的寄存器稱之為命令口,    存放執(zhí)行狀態(tài)信息的寄存器稱之為狀態(tài)口。  設備選擇功能:CPU通過地址譯碼選擇不同外設。    即CPU通過地址譯碼選擇不同I/O接口和I/O接口中連接的不同的設備。  信號轉換功能:協(xié)調總線信號與I/O設備信號。    轉換包括信號的邏輯關系、時序配合和電平轉換。  可編程功能:增加接口的靈活性和智能性。

    標簽: 輸入輸出 接口技術

    上傳時間: 2013-11-05

    上傳用戶:jixingjie

  • 現(xiàn)代微機原理與接口技術

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

    標簽: 現(xiàn)代微機原理 接口技術

    上傳時間: 2014-01-21

    上傳用戶:徐孺

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

    有兩種方式可以讓設備和應用程序之間聯(lián)系:1. 通過為設備創(chuàng)建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創(chuàng)建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創(chuàng)建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調用設備。在某個Win32 APIs和設備對象的分發(fā)函數(shù)之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3",  GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節(jié)查看有關Kdevice和CreateLink的內容。在上述調用中第一個參數(shù)中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數(shù)不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產(chǎn)生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數(shù)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;} 在設備中執(zhí)行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產(chǎn)生到設備對象的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使內核為設備創(chuàng)建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調用Close。如果被打開的設備不支持指定的功能,則調用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創(chuàng)建了一個存儲在IRP中的MDL域。一個設備可以通過調用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數(shù)。然而,存儲區(qū)并沒有被鎖住而且地址只對調用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調用,buffer參數(shù)的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):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,系統(tǒng)分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅動程序通過調用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給Ring 3級調用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數(shù)據(jù)個數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個系統(tǒng)緩沖,這個緩沖驅動程序可以通過調用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調用KIrp::Mdl來實現(xiàn)。對于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)現(xiàn)在使用一個DeviceIoControl調用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STRING,  NULL, // no input  注意,這里放的是包含有執(zhí)行操作命令的字符串指針  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

  • DS1820 C51 子程序 (一線數(shù)據(jù)傳輸)

    //芯片資料請到www.elecfans.com查找 //DS1820 C51 子程序//這里以11.0592M晶體為例,不同的晶體速度可能需要調整延時的時間//sbit DQ =P2^1;//根據(jù)實際情況定義端口 typedef unsigned char byte;typedef unsigned int  word; //延時void delay(word useconds){  for(;useconds>0;useconds--);} //復位byte ow_reset(void){  byte presence;  DQ = 0; //pull DQ line low  delay(29); // leave it low for 480us  DQ = 1; // allow line to return high  delay(3); // wait for presence  presence = DQ; // get presence signal  delay(25); // wait for end of timeslot  return(presence); // presence signal returned}     // 0=presence, 1 = no part //從 1-wire 總線上讀取一個字節(jié)byte read_byte(void){  byte i;  byte value = 0;  for (i=8;i>0;i--)  {    value>>=1;    DQ = 0; // pull DQ low to start timeslot    DQ = 1; // then return high    delay(1);  //for (i=0; i<3; i++);     if(DQ)value|=0x80;    delay(6); // wait for rest of timeslot  }  return(value);} //向 1-WIRE 總線上寫一個字節(jié)void write_byte(char val){  byte i;  for (i=8; i>0; i--) // writes byte, one bit at a time  {    DQ = 0; // pull DQ low to start timeslot    DQ = val&0x01;    delay(5); // hold value for remainder of timeslot    DQ = 1;    val=val/2;  }  delay(5);} //讀取溫度char Read_Temperature(void){  union{    byte c[2];    int x;  }temp;   ow_reset();  write_byte(0xCC); // Skip ROM  write_byte(0xBE); // Read Scratch Pad  temp.c[1]=read_byte();  temp.c[0]=read_byte();  ow_reset();  write_byte(0xCC); //Skip ROM  write_byte(0x44); // Start Conversion  return temp.x/2;}

    標簽: 1820 C51 DS 程序

    上傳時間: 2013-11-03

    上傳用戶:hongmo

  • 51單片機驅動步進電機(含電路圖和C語言源程序代碼)

    51單片機驅動步進電機(含電路圖和源程序代碼) 源程序:stepper.c stepper.hex /* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */ #i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.h register unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n; unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400 /* flag1 mask byte 0x01 run cw() 0x02 run ccw() */

    標簽: 51單片機 驅動 步進電機 C語言

    上傳時間: 2013-11-09

    上傳用戶:釣鰲牧馬

  • 4x4鍵盤的設計與制作

    三種方法讀取鍵值􀂄 使用者設計行列鍵盤介面,一般常採用三種方法讀取鍵值。􀂉 中斷式􀂄 在鍵盤按下時產(chǎn)生一個外部中斷通知CPU,並由中斷處理程式通過不同位址讀資料線上的狀態(tài)判斷哪個按鍵被按下。􀂄 本實驗採用中斷式實現(xiàn)使用者鍵盤介面。􀂉 掃描法􀂄 對鍵盤上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對應列的鍵被按下。否則掃描下一行。􀂉 反轉法􀂄 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。􀂄 根據(jù)讀到的值組合就可以查表得到鍵碼。4x4鍵盤按4行4列組成如圖電路結構。按鍵按下將會使行列連成通路,這也是見的使用者鍵盤設計電路。 //-----------4X4鍵盤程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key; if((PINC&0x0f)!=0x0f) //是否有按鍵按下 {delayms(1); //延時去抖動 if((PINC&0x0f)!=0x0f) //有按下則判斷 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //復位 PORTC=0x0f; while((PINC&0x0f)!=0x0f) //按鍵是否放開 { display(data); } i=4; //計算返回碼 while(xxa!=0) { xxa=xxa>>1; i--; } if(yyb==0x80) key=i; else if(yyb==0x40) key=4+i; else if(yyb==0x20) key=8+i; else if(yyb==0x10) key=12+i; return key; //返回按下的鍵盤碼 } } else return 17; //沒有按鍵按下 }

    標簽: 4x4 鍵盤

    上傳時間: 2013-11-12

    上傳用戶:a673761058

  • Altera 28nm FPGA芯片精彩剖析

    電子發(fā)燒友網(wǎng)訊: Altera公司 28nm FPGA系列芯片共包括三大系列:Stratix V、Arria V與Cyclone V系列芯片。近日,Altera公司也正式宣布該三大系列芯片已全部開始量產(chǎn)出貨。Altera公司憑借著其28nm FPGA芯片在性能和成本上的優(yōu)勢,未來的前景勢必無法估量。通過本文對Altera公司 28nm FPGA系列芯片的基本性能、市場優(yōu)勢、型號差異以及典型應用等介紹,電子發(fā)燒友網(wǎng)小編將帶領大家一起來感受Altera公司28nm FPGA系列芯片的“雄韜偉略”,深入闡述如何更好地為你未來的設計選擇相應的Altera 28nm FPGA 芯片。  

    標簽: Altera FPGA 28 nm

    上傳時間: 2013-11-21

    上傳用戶:ZZJ886

  • 中央空調和分體空調的區(qū)別對比

    很多人問我,是分體空調好還是中央空調好?做空調的人通常會說,是中央空調好,否則,怎么賓館里都是中央空調而不是分體呢。但是,所有的事情都不能一概而論。比如,從價格上講,當然是分體空調有優(yōu)勢,中央空調的價格肯定會高于分體空調,這是毋庸置疑的.

    標簽: 中央空調 分體空調 對比

    上傳時間: 2013-10-26

    上傳用戶:daxigua

  • Altera 28nm FPGA芯片精彩剖析

    電子發(fā)燒友網(wǎng)訊: Altera公司 28nm FPGA系列芯片共包括三大系列:Stratix V、Arria V與Cyclone V系列芯片。近日,Altera公司也正式宣布該三大系列芯片已全部開始量產(chǎn)出貨。Altera公司憑借著其28nm FPGA芯片在性能和成本上的優(yōu)勢,未來的前景勢必無法估量。通過本文對Altera公司 28nm FPGA系列芯片的基本性能、市場優(yōu)勢、型號差異以及典型應用等介紹,電子發(fā)燒友網(wǎng)小編將帶領大家一起來感受Altera公司28nm FPGA系列芯片的“雄韜偉略”,深入闡述如何更好地為你未來的設計選擇相應的Altera 28nm FPGA 芯片。  

    標簽: Altera FPGA 28 nm

    上傳時間: 2013-10-31

    上傳用戶:半熟1994

主站蜘蛛池模板: 会泽县| 紫阳县| 珲春市| 麻栗坡县| 醴陵市| 鄂伦春自治旗| 大渡口区| 禹州市| 眉山市| 江陵县| 泰顺县| 景泰县| 仁布县| 密山市| 金阳县| 汉川市| 海南省| 焉耆| 内丘县| 建始县| 大方县| 额济纳旗| 安远县| 万载县| 霞浦县| 金华市| 凤台县| 社会| 南和县| 合江县| 将乐县| 沈丘县| 仙游县| 白玉县| 万源市| 栾城县| 长沙县| 定结县| 视频| 汝南县| 桐梓县|