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

蟲(chóng)蟲(chóng)首頁(yè)| 資源下載| 資源專輯| 精品軟件
登錄| 注冊(cè)

IF-else-end

  • C51原理及相關(guān)基礎(chǔ)入門知識(shí)

    C51原理及相關(guān)基礎(chǔ)入門知識(shí) 第一章:C51 流程控制語(yǔ)句一、分類條件語(yǔ)句、循環(huán)語(yǔ)句和開(kāi)關(guān)語(yǔ)句。下面將對(duì)這些語(yǔ)句作詳細(xì)介紹。(1) 條件語(yǔ)句條件語(yǔ)句的一般形式為:if(表達(dá)式)語(yǔ)句 1;else語(yǔ)句 2;上述結(jié)構(gòu)表示: 如果表達(dá)式的值為非0(TURE)即真, 則執(zhí)行語(yǔ)句1, 執(zhí)行完語(yǔ)句1 從語(yǔ)句2 后開(kāi)始繼續(xù)向下執(zhí)行; 如果表達(dá)式的值為 0(FALSE)即假, 則跳過(guò)語(yǔ)句1 而執(zhí)行語(yǔ)句2。所謂表達(dá)式是指關(guān)系表達(dá)式和邏輯表達(dá)式的結(jié)合式。注意:1. 條件執(zhí)行語(yǔ)句中"else 語(yǔ)句2;"部分是選擇項(xiàng), 可以缺省, 此時(shí)條件語(yǔ)句變成:if(表達(dá)式) 語(yǔ)句1;表示若表達(dá)式的值為非 0 則執(zhí)行語(yǔ)句1 , 否則跳過(guò)語(yǔ)句1 繼續(xù)執(zhí)行。2. 如果語(yǔ)句1 或語(yǔ)句2 有多于一條語(yǔ)句要執(zhí)行時(shí), 必須使用"{"和"}" 把這些語(yǔ)句包括在其中, 此時(shí)條件語(yǔ)句形式為:if(表達(dá)式){語(yǔ)句體 1;}else{語(yǔ)句體 2;}3. 條件語(yǔ)句可以嵌套, 這種情況經(jīng)常碰到, 但條件嵌套語(yǔ)句容易出錯(cuò), 其原因主要是不知道哪個(gè)if 對(duì)應(yīng)哪個(gè)else。例如:if(x>20||x<-10)if(y<=100&&y>x)printf("Good");elseprintf("Bad");對(duì)于上述情況,規(guī)定: else 語(yǔ)句與最近的一個(gè)if 語(yǔ)句匹配, 上例中的 else 與 if(y<=100&&y>x) 相匹配。為了使 else 與if(x>20||x<-10) 相匹配, 必須用花括號(hào)。如下所示:if(x>20||x<-10){if(y<=100&&y>x)printf("Good");}

    標(biāo)簽: C51 入門知識(shí)

    上傳時(shí)間: 2013-10-24

    上傳用戶:Sophie

  • AT89C2051驅(qū)動(dòng)步進(jìn)電機(jī)的電路和源碼

    AT89C2051驅(qū)動(dòng)步進(jìn)電機(jī)的電路和源碼:AT89C2051驅(qū)動(dòng)步進(jìn)電機(jī)的電路和源碼 程序: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.hregister 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() */main(){ flag1=0; serinit(9600); disable(); /* no need timer interrupt */ cw_n = n; /* initial step number for cw */ flag1 |=0x01; /* initial enable cw() */while(1){ { tick_wait(); /* wait for 10ms elapsed */energize(); /* round-robin execution the following tasks every 10ms */ cw(); ccw(); } }}cw(){ if((flag1&0x01)!=0) { cw_n--; /* decrement cw step number */ if (cw_n !=0) j++; /* if not zero increment index j */ else {flag1&=~0x01; /* disable cw() execution */ ccw_n = n; /* reload step number to ccw counter */ flag1 |=0x02; /* enable cww() execution */ } }

    標(biāo)簽: C2051 2051 89C AT

    上傳時(shí)間: 2013-11-21

    上傳用戶:boyaboy

  • C51基本結(jié)構(gòu)程序設(shè)計(jì)

    C51基本結(jié)構(gòu)程序設(shè)計(jì)1. 掌握if語(yǔ)句來(lái)實(shí)現(xiàn)選擇結(jié)構(gòu),能利用if語(yǔ)句編寫(xiě)相應(yīng)的分枝結(jié)構(gòu)的程序。在嵌套if語(yǔ)句中,一定要搞清楚else與哪個(gè)if結(jié)合的問(wèn)題。2.掌握switch語(yǔ)句來(lái)實(shí)現(xiàn)多向分枝選擇結(jié)構(gòu),能利用switch語(yǔ)句編寫(xiě)相應(yīng)的分枝結(jié)構(gòu)的程序。 3. 掌握循環(huán)語(yǔ)句的即初始化、循環(huán)體、循環(huán)控制及結(jié)束四個(gè)部分,并能進(jìn)行循環(huán)語(yǔ)句的程序設(shè)計(jì)。分別掌握f(shuō)or 語(yǔ)句、while語(yǔ)句以及do-while語(yǔ)句的使用語(yǔ)法及方法,能利用這三種循環(huán)結(jié)構(gòu)進(jìn)行循環(huán)程序設(shè)計(jì),理解這三種語(yǔ)句的異同。4.理解并掌握continue、break語(yǔ)句在循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)中的作用。對(duì)于goto語(yǔ)句,理解該語(yǔ)句優(yōu)缺點(diǎn)。C51語(yǔ)言是結(jié)構(gòu)化編程語(yǔ)言。結(jié)構(gòu)化語(yǔ)言的基本元素是模塊,它是程序的一部分.只有一個(gè)出口和一個(gè)入口.不允許有偶然的中途插入或以模塊的其它路徑退出。結(jié)構(gòu)化編程語(yǔ)言在沒(méi)有妥善保護(hù)或恢復(fù)堆棧和其它相關(guān)的寄存器之前,不應(yīng)隨便跳入或跳出一個(gè)模塊。因此使用這種結(jié)構(gòu)化語(yǔ)言進(jìn)行編程,當(dāng)要退出中斷時(shí),堆棧不會(huì)因?yàn)槌绦蚴褂昧巳魏慰梢越邮艿拿疃罎ⅰ?nbsp;   結(jié)構(gòu)化程序由若干模塊組成,每個(gè)模塊中包含著若干個(gè)基本結(jié)構(gòu),而每個(gè)基本結(jié)構(gòu)中可以有若干條語(yǔ)句。歸納起來(lái),C51程序有順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)共三種結(jié)構(gòu)。

    標(biāo)簽: C51 基本結(jié)構(gòu) 程序設(shè)計(jì)

    上傳時(shí)間: 2013-11-01

    上傳用戶:四只眼

  • 驅(qū)動(dòng)程序與應(yīng)用程序的接口

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

    標(biāo)簽: 驅(qū)動(dòng)程序 應(yīng)用程序 接口

    上傳時(shí)間: 2013-10-17

    上傳用戶:gai928943

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

    //芯片資料請(qǐng)到www.elecfans.com查找 //DS1820 C51 子程序//這里以11.0592M晶體為例,不同的晶體速度可能需要調(diào)整延時(shí)的時(shí)間//sbit DQ =P2^1;//根據(jù)實(shí)際情況定義端口 typedef unsigned char byte;typedef unsigned int  word; //延時(shí)void delay(word useconds){  for(;useconds>0;useconds--);} //復(fù)位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 總線上讀取一個(gè)字節(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 總線上寫(xiě)一個(gè)字節(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;}

    標(biāo)簽: 1820 C51 DS 程序

    上傳時(shí)間: 2013-11-03

    上傳用戶:hongmo

  • LC7461遙控解碼子程序源代碼

    //遙控解碼子程序,LC7461,用戶碼為11C//external interrupt0void isr_4(){  unsigned char r_count;//定義解碼的個(gè)數(shù) unsigned long use_data=0;//定義16位的用戶碼,只用到13位 unsigned long use_code=0;//定義16位的用戶反碼,只用到13位 unsigned long data=0;//定義16位數(shù)據(jù)碼,包括8位數(shù)據(jù)碼和反碼 unsigned char data_h=0;//數(shù)據(jù)反碼 unsigned char data_l=0;//數(shù)據(jù)碼 _clrwdt();// _delay(7000);//7461解碼,延時(shí)7000// _delay(7000);//7461解碼,延時(shí)7000//_delay(7000);//7461解碼,延時(shí)7000 if(remote==1)  goto error; while(remote==0);//wait to high //_delay(9744);count_delay=0; while(count_delay<143); if(remote==1)  goto error;     /////用戶碼解碼use_data//////////add//////////////////////////     for(r_count=13;r_count>0;r_count--)  {  while(remote==0);//wait to high  count_delay=0;     while(count_delay<24);//_delay(1680);  _c=remote;  if(_c==1)   {   _lrrc(&use_data);   count_delay=0;         while(count_delay<32);//_delay(2200);//wait to low   }  else   _lrrc(&use_data);  }  _nop(); //if(remote==1)  //_delay(1680);//wait to low while(remote==1);//wait to low     _nop();     ////////用戶碼解碼finish/////////add/////////add////////     /////用戶碼反碼解碼use_code//////////add//////////////////////////     for(r_count=13;r_count>0;r_count--)  {  while(remote==0);//wait to high  count_delay=0;         while(count_delay<24);//_delay(1680);  _c=remote;  if(_c==1)   {   _lrrc(&use_code);   count_delay=0;         while(count_delay<32);//_delay(2200);//wait to low   }  else   _lrrc(&use_code);  } _nop(); //if(remote==1) // _delay(1680);//wait to low while(remote==1);//wait to low     _nop();     ////////用戶碼反碼解碼finish/////////add/////////add////////     ////數(shù)據(jù)碼解碼開(kāi)始////data_l為用戶碼,data_h為數(shù)據(jù)碼反碼//////////// for(r_count=16;r_count>0;r_count--)  {  while(remote==0);//wait to high  count_delay=0;         while(count_delay<24);//_delay(1680);  _c=remote;  if(_c==1)   {   _lrrc(&data);   count_delay=0;         while(count_delay<32);//_delay(2200);//wait to low   }  else   _lrrc(&data);  } ////數(shù)據(jù)碼解碼結(jié)束//////////////////////////////////////////////// data_l=data; data_h=data>>8; ///用戶碼////// use_data>>=3; use_code>>=3; use_code=~use_code; //////// ////如果用戶碼等與0x11c并且數(shù)據(jù)碼和數(shù)據(jù)反碼都校驗(yàn)一致,解碼成功 //if((~data_h==data_l)&&use_data==0x11c)//使用用戶碼 //跳過(guò)用戶碼 if(~data_h==data_l)//如果數(shù)據(jù)碼和數(shù)據(jù)反碼(取反后)相等,解碼正確  {  _nop();  r_data=data_l;//r_data為解出的最終數(shù)據(jù)碼  } //否則解碼不成功 _nop(); _nop();error:  //r_data=nocode; _nop();    _nop(); _nop();}

    標(biāo)簽: 7461 LC 遙控 解碼

    上傳時(shí)間: 2014-03-27

    上傳用戶:shenlan

  • 16 16點(diǎn)陣顯示漢字原理及顯示程序

    16 16點(diǎn)陣顯示漢字原理及顯示程序 #include "config.h" #define                DOTLED_LINE_PORT        PORTB #define                DOTLED_LINE_DDR                DDRB #define                DOTLED_LINE_PIN                PINB #define                DOTLED_LINE_SCKT        PB1 #define                DOTLED_LINE_SCKH        PB5 #define                DOTLED_LINE_SDA                PB3 #define                DOTLED_ROW_PORT                PORTC #define                DOTLED_ROW_DDR                DDRC #define                DOTLED_ROW_PIN                PINC #define                DOTLED_ROW_A0                PC0 #define                DOTLED_ROW_A1                PC1 #define                DOTLED_ROW_A2                PC2 #define                DOTLED_ROW_A3                PC3 #define                DOTLED_ROW_E                PC4 uint8 font[] = { /*--  調(diào)入了一幅圖像:這是您新建的圖像  --*/ /*--  寬度x高度=16x16  --*/ 0x00,0x00,0x00,0x00,0x08,0x38,0x18,0x44,0x08,0x44,0x08,0x04,0x08,0x08,0x08,0x10, 0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x40,0x3E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00 }; static void TransmitByte(uint8 byte); static void SelectRow(uint8 row); static void FlipLatchLine(void); static void TransmitByte(uint8 byte) {         uint8 i;                  for(i = 0 ; i < 8 ; i ++)         {                 if(byte & (1 << i))                 {                         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA);                 }                 else                 {                         DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SDA);                 }                 //__delay_cycles(100);                 DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKH);                 //__delay_cycles(100);                 DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKH);                 //__delay_cycles(100);         } } static void SelectRow(uint8 row) {           //row -= 1;         row |= DOTLED_ROW_PIN & 0xe0;         DOTLED_ROW_PORT = row; } static void FlipLatchLine(void) {         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKT);         DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKT); } void InitDotLedPort(void) {         DOTLED_LINE_PORT &= ~(_BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH));         DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SDA);         DOTLED_LINE_DDR |= _BV(DOTLED_LINE_SCKT) | _BV(DOTLED_LINE_SCKH) | _BV(DOTLED_LINE_SDA);                  DOTLED_ROW_PORT |= 0x1f;         DOTLED_ROW_PORT &= 0xf0;         DOTLED_ROW_DDR |= 0x1f; } void EnableRow(boolean IsEnable) {         if(IsEnable)         {                 DOTLED_ROW_PORT &= ~_BV(DOTLED_ROW_E);         }         else         {                 DOTLED_ROW_PORT |= _BV(DOTLED_ROW_E);         } } void PrintDotLed(uint8 * buffer) {         uint8 i , tmp;                  for(i = 0 ; i < 16 ; i ++)         {                 tmp = *buffer ++;                 TransmitByte(~tmp);                 tmp = *buffer ++;                 TransmitByte(~tmp);                 SelectRow(i);                 FlipLatchLine();         } } void main(void) {         InitDotLedPort();                  EnableRow(TRUE);                  while(1)         {                 PrintDotLed(font);                 __delay_cycles(5000);         }          } //---------------------------------------------------- config.h文件 #ifndef        _CONFIG_H #define        _CONFIG_H //#define                GCCAVR #define                CPU_CYCLES        7372800L #ifndef                GCCAVR #define                _BV(bit)        (1 << (bit)) #endif #define                MSB                0x80 #define                LSB                0x01 #define                FALSE                0 #define                TRUE                1 typedef                unsigned char        uint8; typedef                unsigned int        uint16; typedef                unsigned long        uint32; typedef                unsigned char        boolean; #include <ioavr.h> #include <inavr.h> #include "dotled.h" #endif //-----

    標(biāo)簽: 16 點(diǎn)陣顯示 漢字 顯示程序

    上傳時(shí)間: 2013-11-18

    上傳用戶:mnacyf

  • 4x4鍵盤(pán)的設(shè)計(jì)與制作

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

    標(biāo)簽: 4x4 鍵盤(pán)

    上傳時(shí)間: 2013-11-12

    上傳用戶:a673761058

  • LINUX系統(tǒng)分析與高級(jí)編程技術(shù)

    本書(shū)介紹Linux環(huán)境下的編程方法,內(nèi)容包括Linux系統(tǒng)命令、 Shell腳本、編程語(yǔ)言(gawk、Perl)、系統(tǒng)內(nèi)核、安全體系、X Window等,內(nèi)容豐富、論述全面,涵蓋了Linux系統(tǒng)的方方面面。本書(shū)附帶光盤(pán)包括了RedHat Linux系統(tǒng)的最新版本,及安裝方法,還包括本書(shū)的大量程序代碼,極大地方便了讀者,為使用和將要使用Linux系統(tǒng)的技術(shù)人員提供了較全面的參考。    目      錄前言第一篇   Linux系統(tǒng)介紹第1章   Linux簡(jiǎn)介 …11.1   Linux 的起源 11.2   自由軟件基金會(huì)的GNU計(jì)劃 11.3   Linux 的發(fā)音 21.4   Linux 的特點(diǎn) 21.5   基本硬件要求 31.6   如何獲得Linux 31.6.1   從網(wǎng)上下載Linux 31.6.2   從光盤(pán)獲得Linux 31.7   涉及Linux 的Web 網(wǎng)址和新聞?dòng)懻摻M 61.8   Linux 的不足之處 7第2章   外殼及常用命令 82.1   登錄和退出 82.2   Linux 系統(tǒng)的外殼 82.3   外殼的常用命令 92.3.1   更改帳號(hào)密碼 92.3.2   聯(lián)機(jī)幫助 92.3.3   遠(yuǎn)程登錄 92.3.4   文件或目錄處理 92.3.5   改變工作目錄 102.3.6   復(fù)制文件 102.3.7   移動(dòng)或更改文件、目錄名稱 102.3.8   建立新目錄 102.3.9   刪除目錄 112.3.10   刪除文件 112.3.11   列出當(dāng)前所在的目錄位置 112.3.12   查看文件內(nèi)容 112.3.13   分頁(yè)查看文件內(nèi)容 112.3.14   查看目錄所占磁盤(pán)容量 112.3.15   文件傳輸 112.3.16   文件權(quán)限的設(shè)定 122.3.17   檢查自己所屬的工作組名稱 132.3.18   改變文件或目錄工作組所有權(quán) 132.3.19   改變文件或目錄的最后修改時(shí)間 132.3.20   文件的鏈接 132.3.21   文件中字符串的查尋 142.3.22   查尋文件或命令的路徑 142.3.23   比較文件或目錄的內(nèi)容 142.3.24   文件打印輸出 142.3.25   一般文件的打印 142.3.26   troff 文件的打印 142.3.27   打印機(jī)控制命令 142.3.28   進(jìn)程控制 152.3.29   外殼變量 162.3.30   環(huán)境變量 162.3.31   別名 162.3.32   歷史命令 172.3.33   文件的壓縮 172.3.34   管道命令的使用 172.3.35   輸入/輸出控制 182.3.36   查看系統(tǒng)中的用戶 182.3.37   改變用戶名 182.3.38   查看用戶名 182.3.39   查看當(dāng)前系統(tǒng)上所有工作站       的用戶 192.3.40   與某工作站上的用戶交談 192.3.41   檢查遠(yuǎn)程系統(tǒng)是否正常 192.3.42   電子郵件的使用簡(jiǎn)介 19第3章   Linux系統(tǒng)的網(wǎng)絡(luò)功能 213.1   Linux支持的網(wǎng)絡(luò)協(xié)議 213.1.1   TCP/IP 213.1.2   TCP/IP 版本 6 213.1.3   IPX/SPX 213.1.4   AppleTalk 協(xié)議集 213.1.5   廣域網(wǎng) 223.1.6   ISDN 223.1.7   PPP、SLIP及PLIP 223.1.8   業(yè)余無(wú)線電 223.1.9   ATM 223.2   Linux系統(tǒng)下的文件共享和打印共享 223.2.1   Machintosh 環(huán)境 223.2.2   Windows 環(huán)境 223.2.3   Novell 環(huán)境 233.2.4   UNIX 環(huán)境 233.3   Linux系統(tǒng)中的Internet/Intranet功能 233.3.1   郵件 233.3.2   Web 服務(wù)器 243.3.3   Web 瀏覽器 243.3.4   FTP 服務(wù)器和客戶機(jī) 243.3.5   新聞服務(wù) 243.3.6   域名系統(tǒng) 243.3.7   DHCP和 bootp 243.3.8   NIS 243.4   Linux系統(tǒng)下應(yīng)用程序的遠(yuǎn)程執(zhí)行 243.4.1   Telnet 253.4.2   遠(yuǎn)程命令 253.4.3   X Window 253.5   Linux系統(tǒng)的網(wǎng)絡(luò)互連功能 253.5.1   路由器 253.5.2   網(wǎng)橋 253.5.3   IP偽裝 253.5.4   IP統(tǒng)計(jì) 263.5.5   IP 別名 263.5.6   流量限制器 263.5.7   防火墻 263.5.8   端口下傳 263.5.9   負(fù)載平衡 263.5.10   EQL 273.5.11   代理服務(wù)器 273.5.12   按需撥號(hào) 273.5.13   管道、移動(dòng)IP和虛擬個(gè)人網(wǎng)絡(luò) 273.6   Linux系統(tǒng)中的網(wǎng)絡(luò)管理 273.6.1   Linux系統(tǒng)下的網(wǎng)絡(luò)管理應(yīng)用程序 273.6.2   SNMP 283.7   企業(yè)級(jí)Linux網(wǎng)絡(luò) 283.7.1   高可用性 283.7.2   RAID 283.7.3   冗余網(wǎng)絡(luò) 28第4章   Linux系統(tǒng)管理簡(jiǎn)介 294.1   root 帳號(hào) 294.2   啟動(dòng)和關(guān)閉系統(tǒng) 294.2.1   從軟盤(pán)啟動(dòng) 294.2.2   使用LILO 啟動(dòng) 294.2.3   關(guān)閉Linux系統(tǒng) 304.3   掛接文件系統(tǒng) 304.3.1   掛接軟盤(pán) 304.3.2   創(chuàng)建新的文件系統(tǒng) 304.3.3   卸載文件系統(tǒng) 314.4   檢查文件系統(tǒng) 314.5   使用文件作為交換區(qū) 314.6   系統(tǒng)和文件的備份 324.7   設(shè)置系統(tǒng) 334.7.1   設(shè)置系統(tǒng)名 334.7.2   使用維護(hù)磁盤(pán) 334.7.3   重新設(shè)置root 帳號(hào)口令 334.7.4   設(shè)置登錄信息 33第二篇   Linux高級(jí)語(yǔ)言及管理編程第5章   外殼編程 355.1   創(chuàng)建和運(yùn)行外殼程序 355.1.1   創(chuàng)建外殼程序 355.1.2   運(yùn)行外殼程序 355.2   使用外殼變量 365.2.1   給變量賦值 365.2.2   讀取變量的值 375.2.3   位置變量和其他系統(tǒng)變量 375.2.4   引號(hào)的作用 375.3   數(shù)值運(yùn)算命令 385.4   條件表達(dá)式 405.4.1   if 表達(dá)式 405.4.2   case 表達(dá)式 415.5   循環(huán)語(yǔ)句 425.5.1   for 語(yǔ)句 435.5.2   while 語(yǔ)句 435.5.3   until 語(yǔ)句 445.6   shift 命令 445.7   select 語(yǔ)句 455.8   repeat 語(yǔ)句 465.9   子函數(shù) 46第6章   gawk語(yǔ)言編程 486.1   gawk的主要功能 486.2   如何執(zhí)行g(shù)awk程序 486.3   文件、記錄和字段 486.4   模式和動(dòng)作 496.5   比較運(yùn)算和數(shù)值運(yùn)算 506.6   內(nèi)部函數(shù) 506.6.1   隨機(jī)數(shù)和數(shù)學(xué)函數(shù) 516.6.2   字符串的內(nèi)部函數(shù) 516.6.3   輸入輸出的內(nèi)部函數(shù) 526.7   字符串和數(shù)字 526.8   格式化輸出 526.9   改變字段分隔符 546.10   元字符 546.11   調(diào)用gawk程序 556.12   BEGIN和END 556.13   變量 566.14   內(nèi)置變量 566.15   控制結(jié)構(gòu) 576.15.1   if 表達(dá)式 576.15.2   while 循環(huán) 576.15.3   for 循環(huán) 586.15.4   next 和 exit 586.16   數(shù)組 586.17   用戶自定義函數(shù) 586.18   幾個(gè)實(shí)例 59第7章   Perl語(yǔ)言編程 607.1   什么是Perl 607.2   Perl的現(xiàn)狀 607.3   初試Perl 607.4   Perl變量 607.4.1   標(biāo)量 607.4.2   數(shù)組 637.4.3   相關(guān)數(shù)組 657.5   文件句柄和文件操作 657.6   循環(huán)結(jié)構(gòu) 667.6.1   foreach循環(huán) 667.6.2   判斷運(yùn)算 667.6.3   for循環(huán) 677.6.4   while 和 until循環(huán) 677.7   條件結(jié)構(gòu) 677.8   字符匹配 687.9   替換和翻譯 697.9.1   替換 697.9.2   翻譯 707.10   子過(guò)程 707.10.1   子過(guò)程的定義 707.10.2   參數(shù) 707.10.3   返回值 707.11   Perl程序的完整例子 71第三篇   Linux系統(tǒng)內(nèi)核分析第8章   Linux內(nèi)核簡(jiǎn)介 738.1   系統(tǒng)初始化 738.2   系統(tǒng)運(yùn)行 738.3   內(nèi)核提供的各種系統(tǒng)調(diào)用 748.3.1   進(jìn)程的基本概念和系統(tǒng)            的基本數(shù)據(jù)結(jié)構(gòu) 748.3.2   創(chuàng)建和撤消進(jìn)程 748.3.3   執(zhí)行程序 748.4   存取文件系統(tǒng) 75第9章   系統(tǒng)進(jìn)程 769.1   什么是進(jìn)程 769.2   進(jìn)程的結(jié)構(gòu) 769.3   進(jìn)程調(diào)度 789.4   進(jìn)程使用的文件 799.5   進(jìn)程使用的虛擬內(nèi)存 809.6   創(chuàng)建進(jìn)程 819.7   進(jìn)程的時(shí)間和計(jì)時(shí)器 819.7.1   實(shí)時(shí)時(shí)鐘 819.7.2   虛擬時(shí)鐘 819.7.3   形象時(shí)鐘 819.8   程序的執(zhí)行 829.8.1   ELF文件 829.8.2   腳本文件 82第10章   內(nèi)存管理 8310.1   內(nèi)存管理的作用 8310.2   虛擬內(nèi)存的抽象模型 8310.3   按需裝入頁(yè)面 8410.4   交換 8510.5   共享虛擬內(nèi)存 8510.6   存取控制 8510.7   高速緩存 8610.7.1   緩沖區(qū)高速緩存 8610.7.2   頁(yè)面高速緩存 8610.7.3   交換高速緩存 8610.7.4   硬件高速緩存 8610.8   系統(tǒng)頁(yè)面表 8610.9   頁(yè)面的分配和釋放 8710.9.1   頁(yè)面的分配 8810.9.2   頁(yè)面的釋放 8810.10   內(nèi)存映射 8810.11   請(qǐng)求調(diào)頁(yè) 8910.12   頁(yè)面高速緩存 8910.13   內(nèi)核交換守護(hù)進(jìn)程 90第11章   進(jìn)程間通信 9111.1   信號(hào)機(jī)制 9111.2   管道機(jī)制 9211.3  System V IPC 機(jī)制  9311.3.1   信息隊(duì)列 9311.3.2   信號(hào)量 9411.3.3   共享內(nèi)存 96第12章   PCI 9812.1   PCI 系統(tǒng) 9812.2   PCI地址空間 9812.3   PCI設(shè)置頭 9912.4   PCI I/O 和 PCI 內(nèi)存地址 10012.5   PCI-ISA橋 10012.6   PCI-PCI 橋 10012.7   PCI初始化 10112.7.1   Linux系統(tǒng)內(nèi)核有關(guān)PCI的      數(shù)據(jù)結(jié)構(gòu) 10112.7.2   PCI 設(shè)備驅(qū)動(dòng)程序 10212.7.3   PCI BIOS 函數(shù) 10512.7.4   PCI Fixup 105第13章   中斷和中斷處理 10613.1   中斷 10613.2   可編程中斷控制器 10613.3   初始化中斷處理的數(shù)據(jù)結(jié)構(gòu) 10713.4   中斷處理 108第14章   設(shè)備驅(qū)動(dòng)程序 10914.1   硬件設(shè)備的管理 10914.2   輪詢和中斷 11014.3   直接內(nèi)存存取 11014.4   內(nèi)存 11114.5   設(shè)備驅(qū)動(dòng)程序和內(nèi)核之間的接口 11114.5.1   字符設(shè)備 11214.5.2   塊設(shè)備 11314.6   硬盤(pán) 11314.6.1   IDE 硬盤(pán) 11514.6.2   初始化IDE 硬盤(pán)子系統(tǒng) 11514.6.3   SCSI 硬盤(pán) 11514.6.4   初始化 SCSI 磁盤(pán)子系統(tǒng) 11614.6.5   傳遞塊設(shè)備請(qǐng)求 11814.7   網(wǎng)絡(luò)設(shè)備 11814.7.1   網(wǎng)絡(luò)設(shè)備文件名 11814.7.2   總線信息 11814.7.3   網(wǎng)絡(luò)接口標(biāo)記 11914.7.4   協(xié)議信息 11914.7.5   初始化網(wǎng)絡(luò)設(shè)備 119第15章   文件系統(tǒng) 12115.1   Linux文件系統(tǒng)概述 12115.2   ext2文件系統(tǒng) 12215.2.1   ext2的索引節(jié)點(diǎn) 12215.2.2   ext2超級(jí)塊 12415.2.3   ext2 數(shù)據(jù)塊組描述符 12415.2.4   ext2 中的目錄 12515.2.5   在ext2 文件系統(tǒng)中查找文件 12515.2.6   改變ext2 文件系統(tǒng)中文件             的大小 12615.3   VFS 12715.3.1   VFS 超級(jí)塊 12815.3.2   VFS 索引節(jié)點(diǎn) 12915.3.3   登記文件系統(tǒng) 12915.3.4   掛接文件系統(tǒng) 13015.3.5   在VFS中查找文件 13115.3.6   撤消文件系統(tǒng) 13115.3.7   VFS 索引節(jié)點(diǎn)緩存 13215.3.8   VFS目錄緩存 13215.4   緩沖區(qū)緩存 13315.5   /proc 文件系統(tǒng) 135第16章   網(wǎng)絡(luò)系統(tǒng) 13616.1   TCP/IP 網(wǎng)絡(luò)簡(jiǎn)介 13616.2   TCP/IP網(wǎng)絡(luò)的分層 13716.3   BSD 套接口 13816.4   INET套接口層 14016.4.1   創(chuàng)建BSD 套接口 14116.4.2   給INET BSD 套接口指定地址 14116.4.3   在INET BSD套接口上創(chuàng)建連接 14216.4.4   監(jiān)聽(tīng)I(yíng)NET BSD 套接口 14216.4.5   接收連接請(qǐng)求 14316.5   IP 層 14316.5.1   套接口緩沖區(qū) 14316.5.2   接收IP數(shù)據(jù)包 14416.5.3   發(fā)送IP數(shù)據(jù)包 14416.5.4   數(shù)據(jù)碎片 14416.6   地址解析協(xié)議 145第17章   系統(tǒng)內(nèi)核機(jī)制 14717.1   Bottom Half處理 14717.2   任務(wù)隊(duì)列 14817.3   計(jì)時(shí)器 14917.4   等待隊(duì)列 14917.5   信號(hào)量 150第四篇   Linux系統(tǒng)高級(jí)編程第18章   Linux內(nèi)核模塊編程 15118.1   一個(gè)簡(jiǎn)單程序Hello World 15118.2   設(shè)備文件 15218.3    /proc文件系統(tǒng) 15618.4   使用/proc輸入 15818.5   與設(shè)備文件通信 16218.6   啟動(dòng)參數(shù) 16918.7   系統(tǒng)調(diào)用 17018.8   阻塞進(jìn)程 17218.9   替換printk 17718.10   調(diào)度任務(wù) 178第19章   有關(guān)進(jìn)程通信的編程 18119.1   進(jìn)程間通信簡(jiǎn)介 18119.2   半雙工UNIX管道 18119.2.1   基本概念 18119.2.2   使用C語(yǔ)言創(chuàng)建管道 18219.2.3   創(chuàng)建管道的簡(jiǎn)單方法 18519.2.4   使用管道的自動(dòng)操作 18719.2.5   使用半雙工管道時(shí)的注意事項(xiàng) 18819.3   命名管道 18819.3.1   基本概念 18819.3.2   創(chuàng)建FIFO 18819.3.3   FIFO操作 18919.3.4   FIFO的阻塞 19019.3.5    SIGPIPE信號(hào) 19019.4   System V IPC 19019.4.1   基本概念 19019.4.2   消息隊(duì)列基本概念 19119.4.3   系統(tǒng)調(diào)用msgget() 19419.4.4   系統(tǒng)調(diào)用msgsnd() 19519.4.5   系統(tǒng)調(diào)用msgctl() 19719.4.6   一個(gè)msgtool的實(shí)例 19919.5   使用信號(hào)量編程 20119.5.1   基本概念 20119.5.2   系統(tǒng)調(diào)用semget() 20219.5.3   系統(tǒng)調(diào)用semop() 20319.5.4   系統(tǒng)調(diào)用semctl() 20419.5.5   使用信號(hào)量集的實(shí)例:semtool 20519.6   共享內(nèi)存 20919.6.1   基本概念 20919.6.2   系統(tǒng)內(nèi)部用戶數(shù)據(jù)結(jié)構(gòu)             shmid_ds 20919.6.3   系統(tǒng)調(diào)用shmget() 21019.6.4   系統(tǒng)調(diào)用shmat() 21119.6.5   系統(tǒng)調(diào)用shmctl() 21119.6.6   系統(tǒng)調(diào)用shmdt() 21219.6.7   使用共享內(nèi)存的實(shí)例:shmtool 212第20章   高級(jí)線程編程 21520.1   線程的概念和用途 21520.2   一個(gè)簡(jiǎn)單的例子 21520.3   線程同步 21720.4   使用信號(hào)量協(xié)調(diào)程序 21820.5   信號(hào)量的實(shí)現(xiàn) 22020.5.1   Semaphore.h 22020.5.2   Semaphore.c 221第21章   Linux系統(tǒng)網(wǎng)絡(luò)編程 22521.1   什么是套接口 22521.2   兩種類型的Internet套接口 22521.3   網(wǎng)絡(luò)協(xié)議分層 22521.4   數(shù)據(jù)結(jié)構(gòu) 22521.5   IP地址和如何使用IP地址 22621.5.1   socket() 22621.5.2   bind() 22621.5.3   connect() 22721.5.4   listen() 22821.5.5   accept() 22821.5.6   send() 和 recv() 22921.5.7   sendto() 和 recvfrom() 23021.5.8   close() 和 shutdown() 23021.5.9   getpeername() 23121.5.10   gethostname() 23121.6   DNS 23121.7   客戶機(jī)/服務(wù)器模式 23221.8   簡(jiǎn)單的數(shù)據(jù)流服務(wù)器程序 23221.9   簡(jiǎn)單的數(shù)據(jù)流客戶機(jī)程序 23421.10   數(shù)據(jù)報(bào)套接口 23521.11   阻塞 237第22章   Linux I/O端口編程 24022.1   如何在 C 語(yǔ)言下使用I/O端口 24022.1.1   一般的方法 24022.1.2   另一個(gè)替代方法: /dev/port 24122.2   硬件中斷 與 DMA 存取 24122.3   高精確的時(shí)間 24122.3.1   延遲時(shí)間 24122.3.2   時(shí)間的量測(cè) 24322.4   使用其他程序語(yǔ)言 24322.5   一些有用的 I/O 端口 24322.5.1   并行端口 24322.5.2   游戲端口 24422.5.3   串行端口 245第五篇   Linux系統(tǒng)安全分析第23章   系統(tǒng)管理員安全 24723.1   安全管理 24723.2   超級(jí)用戶 24723.3   文件系統(tǒng)安全 24723.3.1   Linux文件系統(tǒng)概述 24723.3.2   設(shè)備文件 24823.3.3   /etc/mknod命令 24923.3.4   安全考慮 24923.3.5   find命令 25023.3.6   secure程序 25023.3.7   ncheck命令 25023.3.8   安裝和拆卸文件系統(tǒng) 25023.3.9   系統(tǒng)目錄和文件 25123.4   作為root運(yùn)行的程序 25123.4.1   啟動(dòng)系統(tǒng) 25123.4.2   init進(jìn)程 25123.4.3   進(jìn)入多用戶 25223.4.4   shutdown命令 25223.4.5   系統(tǒng)V的cron程序 25223.4.6   系統(tǒng)V版本2之后的cron程序 25223.4.7   /etc/profile 25323.5   /etc/passwd文件 25323.5.1   口令時(shí)效 25323.5.2   UID和GID 25423.6   /etc/group文件 25423.7   增加、刪除和移走用戶 25423.7.1   增加用戶 25423.7.2   刪除用戶 25523.7.3   將用戶移到另一個(gè)系統(tǒng) 25523.8   安全檢查 25523.8.1   記帳 25523.8.2   其他檢查命令 25623.8.3   安全檢查程序的問(wèn)題 25623.8.4   系統(tǒng)泄密后怎么辦 25723.9   加限制的環(huán)境 25823.9.1   加限制的外殼 25823.9.2   用chroot()限制用戶 25823.10   小系統(tǒng)安全 25923.11   物理安全 25923.12   用戶意識(shí) 26023.13   系統(tǒng)管理員意識(shí) 26123.13.1   保持系統(tǒng)管理員個(gè)人的               登錄安全 26123.13.2   保持系統(tǒng)安全 261第24章   系統(tǒng)程序員安全 26324.1   系統(tǒng)子程序 26324.1.1   I/O子程序 26324.1.2   進(jìn)程控制 26324.1.3   文件屬性 26424.1.4   UID和GID的處理 26524.2   標(biāo)準(zhǔn)C程序庫(kù) 26524.2.1   標(biāo)準(zhǔn)I/O 26524.2.2   /etc/passwd的處理 26624.2.3   /etc/group的處理 26724.2.4   加密子程序 26824.2.5   運(yùn)行外殼 26824.3   編寫(xiě)安全的C程序 26824.3.1   需要考慮的安全問(wèn)題 26824.3.2   SUID/SGID程序指導(dǎo)準(zhǔn)則 26924.3.3   編譯、安裝SUID/SGID程序             的方法 26924.4   root用戶程序的設(shè)計(jì) 270第25章   Linux系統(tǒng)的網(wǎng)絡(luò)安全 27225.1   UUCP系統(tǒng)概述 27225.1.1   UUCP命令 27225.1.2   uux命令 27225.1.3   uucico程序 27325.1.4   uuxqt程序 27325.2   UUCP的安全問(wèn)題 27325.2.1   USERFILE文件 27325.2.2   L.cmds文件 27425.2.3   uucp登錄 27425.2.4   uucp使用的文件和目錄 27425.3   HONEYDANBER UUCP 27525.3.1   HONEYDANBER UUCP與           老UUCP的差別 27525.3.2   登錄名規(guī)則 27625.3.3   MACHINE規(guī)則 27725.3.4   組合MACHINE和LOGNAME             規(guī)則 27825.3.5   uucheck命令 27825.3.6   網(wǎng)關(guān) 27825.3.7   登錄文件檢查 27925.4   其他網(wǎng)絡(luò) 27925.4.1   遠(yuǎn)程作業(yè)登錄 27925.4.2   NSC網(wǎng)絡(luò)系統(tǒng) 28025.5   通信安全 28025.5.1   物理安全 28025.5.2   加密 28125.5.3   用戶身份鑒別 28225.6   SUN OS系統(tǒng)的網(wǎng)絡(luò)安全 28325.6.1   確保NFS的安全 28325.6.2   NFS安全性方面的缺陷 28425.6.3   遠(yuǎn)程過(guò)程調(diào)用鑒別 28425.6.4   Linux鑒別機(jī)制 28425.6.5   DES鑒別系統(tǒng) 28525.6.6   公共關(guān)鍵字的編碼 28625.6.7   網(wǎng)絡(luò)實(shí)體的命名 28625.6.8   DES鑒別系統(tǒng)的應(yīng)用 28725.6.9   遺留的安全問(wèn)題 28725.6.10   性能 28825.6.11   啟動(dòng)和setuid程序引起的問(wèn)題 28825.6.12   小結(jié) 289第26章   Linux系統(tǒng)的用戶安全性 29026.1   口令安全 29026.2   文件許可權(quán) 29026.3   目錄許可 29126.4   umask命令 29126.5   設(shè)置用戶ID和同組用戶ID許可 29126.6   cp mv ln和cpio命令 29126.7   su和newgrp命令 29226.7.1   su命令 29226.7.2   newgrp命令 29226.8   文件加密 29226.9   其他安全問(wèn)題 29326.9.1   用戶的.profile文件 29326.9.2   ls -a 29326.9.3   .exrc文件 29326.9.4   暫存文件和目錄 29326.9.5   UUCP和其他網(wǎng)絡(luò) 29326.9.6   特洛伊木馬 29426.9.7   誘騙 29426.9.8   計(jì)算機(jī)病毒 29426.9.9   要離開(kāi)自己已登錄的終端 29426.9.10   智能終端 29426.9.11   斷開(kāi)與系統(tǒng)的連接 29426.9.12   cu命令 29526.10   保持帳戶安全的要點(diǎn) 295第六篇   X window系統(tǒng)的內(nèi)部結(jié)構(gòu)和使用第27章  X Window系統(tǒng)的基本知識(shí) 29727.1   X Window系統(tǒng)介紹 29727.1.1   X的特點(diǎn) 29727.1.2   什么是窗口系統(tǒng) 29827.1.3   X發(fā)展的歷史 29927.1.4   X的產(chǎn)品 29927.1.5   MIT發(fā)行的X 29927.2   X的基本結(jié)構(gòu) 30227.2.1   X 的基本元素 30327.2.2   服務(wù)程序和客戶程序如何             交互通信 30427.2.3   X 的網(wǎng)絡(luò)概況 30627.3   從用戶界面的角度概觀X 30727.3.1   管理界面:窗口管理器 30727.3.2   應(yīng)用程序界面和工具箱 30927.3.3   其他系統(tǒng)角度 30927.4   術(shù)語(yǔ)和符號(hào) 31027.4.1   術(shù)語(yǔ) 31027.4.2   符號(hào) 31127.5   啟動(dòng)和關(guān)閉X 31227.5.1   啟動(dòng)X 31227.5.2   執(zhí)行X程序的方式 31327.5.3   關(guān)閉X 31427.6   窗口管理器基礎(chǔ)—uwm 31527.6.1   什么是窗口管理器 31527.6.2   啟動(dòng)uwm 31527.6.3   基本窗口操作 —uwm             的菜單 31527.6.4   移動(dòng)窗口 31627.6.5   重定窗口大小 31627.6.6   建立新窗口 31627.6.7   管理屏幕空間 31827.6.8   中止應(yīng)用程序窗口 32027.6.9   激活uwm菜單的其他方式 32027.7   使用 x的網(wǎng)絡(luò)設(shè)備 32027.7.1   指定遠(yuǎn)程終端機(jī)—display             選項(xiàng) 32127.7.2   實(shí)際使用遠(yuǎn)程的顯示器 32227.7.3   控制存取顯示器—xhost 32227.8   終端機(jī)模擬器—詳細(xì)介紹xterm 32327.8.1   選擇xterm功能—菜單與       命令行選項(xiàng) 32327.8.2   滾動(dòng)xterm屏幕 32427.8.3   記錄與終端機(jī)的交互過(guò)程—寫(xiě)           記錄 32527.8.4   剪貼文本 32527.8.5   使用Tektronix模擬功能 32627.8.6   使用不同的字體 32727.8.7   使用顏色 32727.8.8   其他xterm選項(xiàng) 32727.8.9   設(shè)定終端機(jī)鍵盤(pán) 328第28章   實(shí)用程序和工具 32928.1   實(shí)用程序 32928.2   保存、顯示和打印屏幕圖像 33028.3   使用X的應(yīng)用程序 33228.3.1   文字編輯器—Xedit 33328.3.2   郵件/信息處理系統(tǒng)—xmh 33628.4   示例和游戲程序 33628.4.1   找出通過(guò)隨機(jī)迷宮的             路徑—maze 33628.4.2   擔(dān)任鼠標(biāo)指針的大眼睛—             xeyes 33628.4.3   智慧盤(pán)游戲—puzzle 33728.4.4   打印一個(gè)大X標(biāo)志—xlogo 33728.4.5   跳動(dòng)的多面體—ico 33728.4.6   動(dòng)態(tài)幾何圖案—muncher與             plaid 33728.7   顯示信息和狀態(tài)的程序 33728.7.1   列出X服務(wù)程序的特征—    xdpyinfo 33828.7.2   獲取有關(guān)窗口的信息 33828.7.3   觀察X的事件—xev 340第29章   定制X Window系統(tǒng) 34129.1   使用X的字體和顏色 34129.1.1   字體初步 34129.1.2   字體命名 34229.1.3   觀察特定字體的內(nèi)容—xfd 34329.1.4   保存字體和位置 34329.1.5   例子:在你的服務(wù)程序中      增加新字體 34529.1.6   使用X的顏色 34629.2   定義和使用圖形 34729.2.1   系統(tǒng)圖形程序庫(kù) 34729.2.2   交互編輯圖形—bitmap 34729.2.3   編輯圖形的其他方法 34929.2.4   定制根窗口—xsetroot 34929.3   定義應(yīng)用程序的缺省選項(xiàng)—           Resources 35029.3.1   什么是資源 35029.3.2   XToolkit 35129.3.3   管理資源—資源管理器 35329.3.4   資源的類型—如何指定值 35829.4   實(shí)際使用資源 35929.4.1   在何處保存資源的缺省值 35929.4.2   在服務(wù)程序上保存缺省值—    xrdb 36329.4.3   常見(jiàn)的錯(cuò)誤和修正 36629.5   定制鍵盤(pán)和鼠標(biāo) 36729.5.1   實(shí)際使用轉(zhuǎn)換 36829.5.2   轉(zhuǎn)換—格式和規(guī)則 37429.5.3   轉(zhuǎn)換規(guī)范中常見(jiàn)的問(wèn)題 37729.6   鍵盤(pán)和鼠標(biāo)—對(duì)應(yīng)和參數(shù) 37929.6.1   鍵盤(pán)和鼠標(biāo)映射—xmodmap 37929.6.2   鍵盤(pán)和鼠標(biāo)參數(shù)設(shè)定—xset 38229.7   進(jìn)一步介紹和定制uwm 38429.7.1   uwm的新特征 38429.7.2   定制uwm 38629.8   顯示器管理器—xdm 39029.8.1   需要做些什么 39029.8.2   xdm 39129.8.3   xdm的更多信息 39229.8.4   uwm配置 395附錄A   Gcc使用介紹 396附錄B   安裝X Window窗口系統(tǒng) 410

    標(biāo)簽: LINUX 系統(tǒng)分析 高級(jí)編程

    上傳時(shí)間: 2013-11-10

    上傳用戶:changeboy

  • 半導(dǎo)體制造技術(shù)_英文教程

    The correct answer for each test bank question is highlighted in bold. Test bank questions are based on the end-of-chapter questions. If a student studies the end-of-chapter questions (which are linked to the italicized words in each chapter), then they will be successful on the test bank questions.

    標(biāo)簽: 半導(dǎo)體制造技術(shù) 英文 教程

    上傳時(shí)間: 2014-12-31

    上傳用戶:旗魚(yú)旗魚(yú)

主站蜘蛛池模板: 深圳市| 平潭县| 岑巩县| 阜阳市| 弥勒县| 囊谦县| 手机| 疏勒县| 丰镇市| 中山市| 定南县| 临安市| 清镇市| 九江县| 清涧县| 建湖县| 五大连池市| 常德市| 青浦区| 东港市| 海林市| 淄博市| 龙里县| 乃东县| 日喀则市| 车险| 兴隆县| 九龙城区| 涪陵区| 南华县| 天全县| 禹州市| 托里县| 得荣县| 阿拉善左旗| 克山县| 汉川市| 宾川县| 吉安市| 永济市| 黄龙县|