//遙控解碼子程序,LC7461,用戶碼為11C//external interrupt0void isr_4(){ unsigned char r_count;//定義解碼的個數(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解碼,延時7000// _delay(7000);//7461解碼,延時7000//_delay(7000);//7461解碼,延時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ù)碼解碼開始////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ù)反碼都校驗一致,解碼成功 //if((~data_h==data_l)&&use_data==0x11c)//使用用戶碼 //跳過用戶碼 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();}
上傳時間: 2014-03-27
上傳用戶:shenlan
16 16點陣顯示漢字原理及顯示程序 #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 //-----
上傳時間: 2013-11-18
上傳用戶:mnacyf
三種方法讀取鍵值 使用者設計行列鍵盤介面,一般常採用三種方法讀取鍵值。 中斷式 在鍵盤按下時產(chǎn)生一個外部中斷通知CPU,並由中斷處理程式通過不同位址讀資料線上的狀態(tài)判斷哪個按鍵被按下。 本實驗採用中斷式實現(xiàn)使用者鍵盤介面。 掃描法 對鍵盤上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對應列的鍵被按下。否則掃描下一行。 反轉(zhuǎn)法 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。 根據(jù)讀到的值組合就可以查表得到鍵碼。4x4鍵盤按4行4列組成如圖電路結(jié)構(gòu)。按鍵按下將會使行列連成通路,這也是見的使用者鍵盤設計電路。 //-----------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; //沒有按鍵按下 }
上傳時間: 2013-11-12
上傳用戶:a673761058
1 概述由于在某些通訊設計應用中,需要擴展更多的串口數(shù)量,比如車床監(jiān)控、紡織儀器檢測和網(wǎng)狀連接的數(shù)據(jù)采集等應用。為此成都國騰微電子有限公司推出的GM814x 可以滿足多個同類產(chǎn)品的并聯(lián)擴展,并且能簡單的實現(xiàn)電路連接和程序控制,主MCU 可以識別數(shù)據(jù)的來源和指定和某個GM814x 通信。2 應用說明2.1 CS 與SPI 的數(shù)據(jù)通信GM814x 的CS(片選)引腳可用于控制SPI 總線時鐘有效性,CS 低電平有效,內(nèi)部下拉。CS 有效時,允許芯片的時鐘接收和數(shù)據(jù)收發(fā);無效時,SCLK、DIN 和DOUT 均為高阻狀態(tài),GM814x 不響應SPI 上的數(shù)據(jù)收發(fā),但能正常收發(fā)子串口數(shù)據(jù)和產(chǎn)生相應中斷。2.2 應用建議當使用GM814x 的應用需要擴展4 個以上的串口數(shù)量時,就需要使用2 片以上的GM814x。擴展的方式也有多種。方式一:將多個GM814x 的SPI 接口接在主MCU 的SPI 總線上,然后將所有GM814x 的中斷進行線與后連接到MCU 的IRQ 上,同時將各GM814x 的IRQ 輸出又連接到MCU的IO,以便MCU響應中斷后檢測是具體哪一個GM814x 輸出的中斷,然后再拉低對應的CS,拉高其它GM814x的CS,并執(zhí)行通信操作。方式二:如果擴展的GM814x 數(shù)量較多,采用上述擴展方式可能會占用MCU較多的IO 資源,則可以將GM814x 的中斷輸出連接到具有OC 輸出的與門芯片上,再輸出到MCU 的中斷輸入。同時又將所有的GM814x 的中斷輸出進行編碼輸入到MCU,以供其判斷產(chǎn)生中斷的是哪一個GM814x。方式三:將所有GM814x 的中斷輸出連接到優(yōu)先編碼器進行編碼輸出,同時編碼器也能輸出低電平信號給MCU 作為中斷響應。MCU 檢測編碼數(shù)據(jù)以獲知產(chǎn)生中斷的GM814x,然后進行數(shù)據(jù)通信處理。這種方式電路最簡單,占用MCU 的IO 資源也最少。 舉例:使用MCS51 單片機擴展8 片GM814x。本電路中,采用了上述提到的第三種擴展方式。通過普通的MCS51 單片機擴展最多8 片GM814x,可擴展最多32 個標準串口。為了節(jié)省MCU的IO 資源,電路中增加了一片8-3 線優(yōu)先編碼器74LS348 和一片3-8 線譯碼器74HC138。8 片GM814x 的IRQ 中斷通過一片74LS348 輸出中斷源向量,同時產(chǎn)生GS 低電平信號到MCS51 的外部中斷0 上,MCS51 響應中斷后,可查詢A0~A2 的值確定產(chǎn)生中斷的GM814x,然后MCU 使能74HC138,輸出對應的ABC 信號選中產(chǎn)生IRQ 信號的GM814x,再進行SPI 總線上的數(shù)據(jù)通信。 示例程序:本示例程序使用C 語言描述,僅供參考。 由于74LS348 是優(yōu)先編碼器,多個中斷同時產(chǎn)生的時候,74LS348 的編碼只會指示輸入編號上最高的IRQ,MCU 無法直接獲知是否其它的GM814x 也產(chǎn)生了中斷。同時GM814x 在自己的中斷申請后,數(shù)據(jù)傳輸?shù)降?bit 時會自動清除,所以數(shù)據(jù)接收完后如果MCU 的中斷引腳仍然為低,則表示還有其它GM814x 的中斷申請,故必須在處理完當前中斷后繼續(xù)查詢新的中斷向量。這就是上述示例程序中while 循環(huán)的目的。 以上應用建議僅供設計者參考,不代表最終實現(xiàn)方式,更可靠和實際的實現(xiàn)方式可由設計者根據(jù)自己的實際情況確定。l 示例中的數(shù)據(jù)、參數(shù)和標志字命名不代表實際產(chǎn)品的特性,請參考實際產(chǎn)品的數(shù)據(jù)手冊來獲取你所需要的數(shù)據(jù)。
上傳時間: 2013-10-26
上傳用戶:suicoe
微處理器及微型計算機的發(fā)展概況 第一代微處理器是以Intel公司1971年推出的4004,4040為代表的四位微處理機。 第二代微處理機(1973年~1977年),典型代表有:Intel 公司的8080、8085;Motorola公司的M6800以及Zlog公司的Z80。 第三代微處理機 第三代微機是以16位機為代表,基本上是在第二代微機的基礎上發(fā)展起來的。其中Intel公司的8088。8086是在8085的基礎發(fā)展起來的;M68000是Motorola公司在M6800 的基礎發(fā)展起來的; 第四代微處理機 以Intel公司1984年10月推出的80386CPU和1989年4月推出的80486CPU為代表, 第五代微處理機的發(fā)展更加迅猛,1993年3月被命名為PENTIUM的微處理機面世,98年PENTIUM 2又被推向市場。 INTEL CPU 發(fā)展歷史Intel第一塊CPU 4004,4位主理器,主頻108kHz,運算速度0.06MIPs(Million Instructions Per Second, 每秒百萬條指令),集成晶體管2,300個,10微米制造工藝,最大尋址內(nèi)存640 bytes,生產(chǎn)曰期1971年11月. 8085,8位主理器,主頻5M,運算速度0.37MIPs,集成晶體管6,500個,3微米制造工藝,最大尋址內(nèi)存64KB,生產(chǎn)曰期1976年 8086,16位主理器,主頻4.77/8/10MHZ,運算速度0.75MIPs,集成晶體管29,000個,3微米制造工藝,最大尋址內(nèi)存1MB,生產(chǎn)曰期1978年6月. 80486DX,DX2,DX4,32位主理器,主頻25/33/50/66/75/100MHZ,總線頻率33/50/66MHZ,運算速度20~60MIPs,集成晶體管1.2M個,1微米制造工藝,168針PGA,最大尋址內(nèi)存4GB,緩存8/16/32/64KB,生產(chǎn)曰期1989年4月 Celeron一代, 主頻266/300MHZ(266/300MHz w/o L2 cache, Covington芯心 (Klamath based),300A/333/366/400/433/466/500/533MHz w/128kB L2 cache, Mendocino核心 (Deschutes-based), 總線頻率66MHz,0.25微米制造工藝,生產(chǎn)曰期1998年4月) Pentium 4 (478針),至今分為三種核心:Willamette核心(主頻1.5G起,FSB400MHZ,0.18微米制造工藝),Northwood核心(主頻1.6G~3.0G,FSB533MHZ,0.13微米制造工藝, 二級緩存512K),Prescott核心(主頻2.8G起,FSB800MHZ,0.09微米制造工藝,1M二級緩存,13條全新指令集SSE3),生產(chǎn)曰期2001年7月. 更大的緩存、更高的頻率、 超級流水線、分支預測、亂序執(zhí)行超線程技術 微型計算機組成結(jié)構(gòu)單片機簡介單片機即單片機微型計算機,是將計算機主機(CPU、 內(nèi)存和I/O接口)集成在一小塊硅片上的微型機。 三、計算機編程語言的發(fā)展概況 機器語言 機器語言就是0,1碼語言,是計算機唯一能理解并直接執(zhí)行的語言。匯編語言 用一些助記符號代替用0,1碼描述的某種機器的指令系統(tǒng),匯編語言就是在此基礎上完善起來的。高級語言 BASIC,PASCAL,C語言等等。用高級語言編寫的程序稱源程序,它們必須通過編譯或解釋,連接等步驟才能被計算機處理。 面向?qū)ο笳Z言 C++,Java等編程語言是面向?qū)ο蟮恼Z言。 1.3 微型計算機中信息的表示及運算基礎(一) 十進制ND有十個數(shù)碼:0~9,逢十進一。 例 1234.5=1×103 +2×102 +3×101 +4×100 +5×10-1加權(quán)展開式以10稱為基數(shù),各位系數(shù)為0~9,10i為權(quán)。 一般表達式:ND= dn-1×10n-1+dn-2×10n-2 +…+d0×100 +d-1×10-1+… (二) 二進制NB兩個數(shù)碼:0、1, 逢二進一。 例 1101.101=1×23+1×22+0×21+1×20+1×2-1+1×2-3 加權(quán)展開式以2為基數(shù),各位系數(shù)為0、1, 2i為權(quán)。 一般表達式: NB = bn-1×2n-1 + bn-2×2n-2 +…+b0×20 +b-1×2-1+… (三)十六進制NH十六個數(shù)碼0~9、A~F,逢十六進一。 例:DFC.8=13×162 +15×161 +12×160 +8×16-1 展開式以十六為基數(shù),各位系數(shù)為0~9,A~F,16i為權(quán)。 一般表達式: NH= hn-1×16n-1+ hn-2×16n-2+…+ h0×160+ h-1×16-1+… 二、不同進位計數(shù)制之間的轉(zhuǎn)換 (二)二進制與十六進制數(shù)之間的轉(zhuǎn)換 24=16 ,四位二進制數(shù)對應一位十六進制數(shù)。舉例:(三)十進制數(shù)轉(zhuǎn)換成二、十六進制數(shù)整數(shù)、小數(shù)分別轉(zhuǎn)換 1.整數(shù)轉(zhuǎn)換法“除基取余”:十進制整數(shù)不斷除以轉(zhuǎn)換進制基數(shù),直至商為0。每除一次取一個余數(shù),從低位排向高位。舉例: 2. 小數(shù)轉(zhuǎn)換法“乘基取整”:用轉(zhuǎn)換進制的基數(shù)乘以小數(shù)部分,直至小數(shù)為0或達到轉(zhuǎn)換精度要求的位數(shù)。每乘一次取一次整數(shù),從最高位排到最低位。舉例: 三、帶符號數(shù)的表示方法 機器數(shù):機器中數(shù)的表示形式。真值: 機器數(shù)所代表的實際數(shù)值。舉例:一個8位機器數(shù)與它的真值對應關系如下: 真值: X1=+84=+1010100B X2=-84= -1010100B 機器數(shù):[X1]機= 01010100 [X2]機= 11010100(二)原碼、反碼、補碼最高位為符號位,0表示 “+”,1表示“-”。 數(shù)值位與真值數(shù)值位相同。 例 8位原碼機器數(shù): 真值: x1 = +1010100B x2 =- 1010100B 機器數(shù): [x1]原 = 01010100 [x2]原 = 11010100原碼表示簡單直觀,但0的表示不唯一,加減運算復雜。 正數(shù)的反碼與原碼表示相同。 負數(shù)反碼符號位為 1,數(shù)值位為原碼數(shù)值各位取反。 例 8位反碼機器數(shù): x= +4: [x]原= 00000100 [x]反= 00000100 x= -4: [x]原= 10000100 [x]反= 111110113、補碼(Two’s Complement)正數(shù)的補碼表示與原碼相同。 負數(shù)補碼等于2n-abs(x)8位機器數(shù)表示的真值四、 二進制編碼例:求十進制數(shù)876的BCD碼 876= 1000 0111 0110 BCD 876= 36CH = 1101101100B 2、字符編碼 美國標準信息交換碼ASCII碼,用于計算 機與計算機、計算機與外設之間傳遞信息。 3、漢字編碼 “國家標準信息交換用漢字編碼”(GB2312-80標準),簡稱國標碼。 用兩個七位二進制數(shù)編碼表示一個漢字 例如“巧”字的代碼是39H、41H漢字內(nèi)碼例如“巧”字的代碼是0B9H、0C1H1·4 運算基礎 一、二進制數(shù)的運算加法規(guī)則:“逢2進1” 減法規(guī)則:“借1當2” 乘法規(guī)則:“逢0出0,全1出1”二、二—十進制數(shù)的加、減運算 BCD數(shù)的運算規(guī)則 循十進制數(shù)的運算規(guī)則“逢10進1”。但計算機在進行這種運算時會出現(xiàn)潛在的錯誤。為了解決BCD數(shù)的運算問題,采取調(diào)整運算結(jié)果的措施:即“加六修正”和“減六修正”例:10001000(BCD)+01101001(BCD) =000101010111(BCD) 1 0 0 0 1 0 0 0 + 0 1 1 0 1 0 0 1 1 1 1 1 0 0 0 1 + 0 1 1 0 0 1 1 0 ……調(diào)整 1 0 1 0 1 0 1 1 1 進位 例: 10001000(BCD)- 01101001(BCD)= 00011001(BCD) 1 0 0 0 1 0 0 0 - 0 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 - 0 1 1 0 ……調(diào)整 0 0 0 1 1 0 0 1 三、 帶符號二進制數(shù)的運算 1.5 幾個重要的數(shù)字邏輯電路編碼器譯碼器計數(shù)器微機自動工作的條件程序指令順序存放自動跟蹤指令執(zhí)行1.6 微機基本結(jié)構(gòu)微機結(jié)構(gòu)各部分組成連接方式1、以CPU為中心的雙總線結(jié)構(gòu);2、以內(nèi)存為中心的雙總線結(jié)構(gòu);3、單總線結(jié)構(gòu)CPU結(jié)構(gòu)管腳特點 1、多功能;2、分時復用內(nèi)部結(jié)構(gòu) 1、控制; 2、運算; 3、寄存器; 4、地址程序計數(shù)器堆棧定義 1、定義;2、管理;3、堆棧形式
上傳時間: 2013-10-17
上傳用戶:erkuizhang
C語言編程基礎:1. 十六進制表示字節(jié)0x5a:二進制為01011010B;0x6E為01101110。 2. 如果將一個16位二進數(shù)賦給一個8位的字節(jié)變量,則自動截斷為低8位,而丟掉高8位。 3. ++var表示對變量var先增一;var—表示對變量后減一。 4. x |= 0x0f;表示為 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。 6. While( 1 ); 表示無限執(zhí)行該語句,即死循環(huán)。語句后的分號表示空循環(huán)體,也就是{;} 在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳)1. #include <AT89x52.h> //該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P1.3 2. void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口 3. { 4. P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC 5. While( 1 ); //死循環(huán),相當 LOOP: goto LOOP; 6. } 注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。在某引腳輸出低電平的編程方法:(比如P2.7引腳)代碼1. #include <AT89x52.h> //該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P2.7 2. void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口 3. { 4. P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND 5. While( 1 ); //死循環(huán),相當 LOOP: goto LOOP; 6. } 在某引腳輸出方波編程方法:(比如P3.1引腳)代碼1. #include <AT89x52.h> //該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P3.1 2. void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復位入口 3. { 4. While( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句 5. { 6. P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC 7. P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND 8. } //由于一直為真,所以不斷輸出高、低、高、低……,從而形成方波 9. } 將某引腳的輸入電平取反后,從另一個引腳輸出:( 比如 P0.4 = NOT( P1.1) )
上傳時間: 2013-11-02
上傳用戶:zengduo
1 /**————————————————————2 〖說明〗I2C總線驅(qū)動程序(用兩個普通IO模擬I2C總線)3 包括100Khz(T=10us)的標準模式(慢速模式)選擇,4 和400Khz(T=2.5us)的快速模式選擇,5 默認11.0592Mhz的晶振。6 〖文件〗PCF8563T.C ﹫2001/11/2 77 〖作者〗龍嘯九天 c51@yeah.net http://www.c51bbs.co /8 〖修改〗修改建議請到論壇公布 http://www.c51bbs.co m9 〖版本〗V1.00A Build 080310 —————————————————————*/1112 #ifndef SDA13 #define SDA P0_014 #define SCL P0_115 #endif1617 extern uchar SystemError;1819 #define uchar unsigned char20 #define uint unsigned int21 #define Byte unsigned char22 #define Word unsigned int23 #define bool bit24 #define true 125 #define false 02627 #define SomeNOP(); _nop_();_nop_();_nop_();_nop_();2829 /**--------------------------------------------------------------------------------30 調(diào)用方式:void I2CStart(void) ﹫2001/07/0 431 函數(shù)說明:私有函數(shù),I2C專用32 ---------------------------------------------------------------------------------*/33 void I2CStart(void)34 {35 EA=0;36 SDA=1; SCL=1; SomeNOP();//INI37 SDA=0; SomeNOP(); //START38 SCL=0;39 }4041 /**--------------------------------------------------------------------------------42 調(diào)用方式:void I2CStop(void) ﹫2001/07/0 443 函數(shù)說明:私有函數(shù),I2C專用44 ---------------------------------------------------------------------------------*/45 void I2CStop(void)46 {47 SCL=0; SDA=0; SomeNOP(); //INI48 SCL=1; SomeNOP(); SDA=1; //STOP49 EA=1;50 }5152 /**--------------------------------------------------------------------------------53 調(diào)用方式:bit I2CAck(void) ﹫2001/07/0 454 函數(shù)說明:私有函數(shù),I2C專用,等待從器件接收方的應答55 ---------------------------------------------------------------------------------*/56 bool WaitAck(void)57 {58 uchar errtime=255;//因故障接收方無ACK,超時值為255。59 SDA=1;SomeNOP();60 SCL=1;SomeNOP();61 while(SDA) {errtime--; if (!errtime) {I2CStop();SystemError=0x11;return false;}}62 SCL=0;63 return true;
上傳時間: 2014-04-11
上傳用戶:xg262122
第1章 單片機系統(tǒng)概述1.1 AVR系列單片機的特點1.2 AT90系列單片機簡介第2章 AT90LS8535單片機的基礎知識2.1 AT90LS8535單片機的總體結(jié)構(gòu)2.1.1 AT90LS8535單片機的中央處理器2.1.2 AT90LS8535單片機的存儲器組織2.1.3 AT90LS8535單片機的I/O接口2.1.4 AT90LS8535單片機的內(nèi)部資源2.1.5 AT90LS8535單片機的時鐘電路2.1.6 AT90LS8535單片機的系統(tǒng)復位2.1.7 AT90LS8535單片機的節(jié)電方式2.1.8 AT90LS8535單片機的芯片引腳2.2 AT90LS8535單片機的指令系統(tǒng)2.2.1 匯編指令格式2.2.2 尋址方式2.2.3 偽指令2.2.4 指令類型及數(shù)據(jù)操作方式2.3 應用程序設計2.3.1 程序設計方法2.3.2 應用程序舉例第3章 AT90LS8535單片機的C編程3.1 支持高級語言編程的AVR系列單片機3.2 AVR的C編譯器3.3 ICC AVR介紹3.3.1 安裝ICC AVR3.3.2 設置ICC AVR3.4 用ICC AVR編寫應用程序3.5 下載程序文件第4章 數(shù)據(jù)類型、運算符和表達式4.1 ICC AVR支持的數(shù)據(jù)類型4.2 常量與變量4.2.1 常量4.2.2 變量4.3 AT90LS8535的存儲空間4.4 算術和賦值運算4.4.1 算術運算符和算術表達式4.4.2 賦值運算符和賦值表達式4.5 邏輯運算4.6 關系運算4.7 位操作4.7.1 位邏輯運算4.7.2 移位運算4.8 逗號運算第5章 控制流5.1 C語言的結(jié)構(gòu)化程序設計5.1.1 順序結(jié)構(gòu)5.1.2 選擇結(jié)構(gòu)5.1.3 循環(huán)結(jié)構(gòu)5.2 選擇語句5.2.1 if語句5.2.2 switch分支5.2.3 選擇語句的嵌套5.3 循環(huán)語句5.3.1 while語句5.3.2 do…while語句5.3.3 for語句5.3.4 循環(huán)語句嵌套5.3.5 break語句和continue語句第6章 函數(shù)6.1 函數(shù)的定義6.1.1 函數(shù)的定義的一般形式6.1.2 函數(shù)的參數(shù)6.1.3 函數(shù)的值6.2 函數(shù)的調(diào)用6.2.1 函數(shù)的一般調(diào)用6.2.2 函數(shù)的遞歸調(diào)用6.2.3 函數(shù)的嵌套使用6.3 變量的類型及其存儲方式6.3.1 局部變量6.3.2 局部變量的存儲方式6.3.3 全局變量6.3.4 全局變量的存儲方式6.4 內(nèi)部函數(shù)和外部函數(shù)6.4.1 內(nèi)部函數(shù)6.4.2 外部函數(shù)第7章 指針第8章 結(jié)構(gòu)體和共用體第9章 AT90LS8535的內(nèi)部資源第10章 AT90LS8535的人機接口編程第11章 AT90LS8535的外圍擴展第12章 AT90LS8535的通信編程第13章 系統(tǒng)設計中的程序處理方法
上傳時間: 2013-10-31
上傳用戶:smthxt
中文版詳情瀏覽:http://www.elecfans.com/emb/fpga/20130715324029.html Xilinx UltraScale:The Next-Generation Architecture for Your Next-Generation Architecture The Xilinx® UltraScale™ architecture delivers unprecedented levels of integration and capability with ASIC-class system- level performance for the most demanding applications. The UltraScale architecture is the industr y's f irst application of leading-edge ASIC architectural enhancements in an All Programmable architecture that scales from 20 nm planar through 16 nm FinFET technologies and beyond, in addition to scaling from monolithic through 3D ICs. Through analytical co-optimization with the X ilinx V ivado® Design Suite, the UltraScale architecture provides massive routing capacity while intelligently resolving typical bottlenecks in ways never before possible. This design synergy achieves greater than 90% utilization with no performance degradation. Some of the UltraScale architecture breakthroughs include: • Strategic placement (virtually anywhere on the die) of ASIC-like system clocks, reducing clock skew by up to 50% • Latency-producing pipelining is virtually unnecessary in systems with massively parallel bus architecture, increasing system speed and capability • Potential timing-closure problems and interconnect bottlenecks are eliminated, even in systems requiring 90% or more resource utilization • 3D IC integration makes it possible to build larger devices one process generation ahead of the current industr y standard • Greatly increased system performance, including multi-gigabit serial transceivers, I/O, and memor y bandwidth is available within even smaller system power budgets • Greatly enhanced DSP and packet handling The Xilinx UltraScale architecture opens up whole new dimensions for designers of ultra-high-capacity solutions.
標簽: UltraScale Xilinx 架構(gòu)
上傳時間: 2013-11-13
上傳用戶:瓦力瓦力hong
The standard that governs the design of avioniccomponents and systems, DO-254, is one of the mostpoorly understood but widely applicable standardsin the avionic industry. While information on thegeneral aspects of the standard is easy to obtain, thedetails of exactly how to implement the standard aresketchy. And once an entity develops a process thatachieves compliance, the details of how compliancewas achieved become part of the intellectualproperty of that entity. This white paper focuses onthe details of developing a DO-254 compliantprocess for the design of FPGAs.
上傳時間: 2013-11-12
上傳用戶:q123321