單片機聽課筆記1-8課-(金沙灘2014年更新)_第1頁
單片機聽課筆記1-8課-(金沙灘2014年更新)_第2頁
單片機聽課筆記1-8課-(金沙灘2014年更新)_第3頁
單片機聽課筆記1-8課-(金沙灘2014年更新)_第4頁
單片機聽課筆記1-8課-(金沙灘2014年更新)_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

單片機聽課筆記1-8課----金沙灘工作室2014年更新Lesson1:用公司用的單片機/視頻用的單片機書是用來查的。單片機方面不怎么需要軟件仿真KEIL軟件安裝(keilc51)30分鐘-35分鐘雙擊→next→√→next→默認(rèn)路徑→next→1,2,3,email格式→next→自動安裝→去掉三個選項的√→finish。桌面上出現(xiàn)KEIL快捷方式。文字大小,文字顏色的設(shè)定:edit→configuration→colour&font→:editorcfiles→只需要修改text,textselection,number,keyword,string即可。下載軟件stc-isp-v480.sewin7系統(tǒng)第一次打開,右鍵,以管理員身份運行一次?!度荡篝[好萊塢》:追求卓越,成功就會在不經(jīng)意間追上你。Lesson2:1、51單片機:兼容intel的MCS-51體系架構(gòu)的一系列單片機2、STC89C52RC---學(xué)習(xí)板上的第一個單片機。3、單片機最小系統(tǒng):電源電路、晶振電路(20PF起振電容,幫助晶振起振,并維持震蕩信號的穩(wěn)定)、復(fù)位電路(0.1uF,18R,4.7K)。4、單片機復(fù)位一般用三種:上電復(fù)位,手動復(fù)位,程序自動復(fù)位。5、單片機原理圖引腳位置與封裝圖可以不一樣。6、貼片發(fā)光二極管限流電阻的選用。7、sfrP0=0X80,告訴我們編程軟件P0在0X80的位置上,查手冊可得。8、打開KEIL軟件→project→newproject→選擇路徑→寫工程名,不需寫擴展名→舊:選擇單片機型號→NXP→P89V51→copy,,,,,→否→新建文件file→new→保存→給文件起名led.c→新:選擇單片機型號→intel→隨便一個→copy,,,,,→是→新建文件file→new→保存→給文件起名led.c9、#include<reg52.h>及函數(shù)名后不需要加分號。10、單片機編程是根據(jù)硬件編程,不同的板子,程序可能不一樣。11、target1右邊的targetoptions→target→11.0592M,output→creathex選項框選中,點擊ok,編譯,連接就可生成hex文件。12、hex文件大小的看法:在編譯連接之后,buildoutput對話框里看。Programsize:data=9.0xdata=0code=29表示:其中data,xdata指RAM,兩項加起來就是內(nèi)存的值:0+9=9字節(jié)。code指占程序存儲空間的值:29個字節(jié)。13、點亮小燈的程序#include<reg52.h>sbitLED=P0^0;sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;voidmain(){ ENLED=0;ADDR3=1;ADDR2=1;ADDR1=1;ADDR0=0; LED=0; while(1);}14、安裝usb-串口的驅(qū)動;查找COM口。我的電腦→設(shè)備管理器。選擇單片機型號→打開hex文件→選擇使用的COM口→波特率默認(rèn)→下次冷啟動選擇:與下載無關(guān)→(STC89C52RC冷啟動單片機)先點下載后上電。作業(yè):3.了解KEIL軟件的基本用法和單片機編程流程,能夠獨立完成編程下載等基本操作。 P0=0XFE; for(i=0;i<30000;i++); P0=0XFD; for(i=0;i<30000;i++); P0=0XFB; for(i=0;i<30000;i++); P0=0XF7; for(i=0;i<30000;i++); P0=0XEF; for(i=0;i<30000;i++); P0=0XDF; for(i=0;i<30000;i++); P0=0XBF; for(i=0;i<30000;i++); P0=0X7F; for(i=0;i<30000;i++); }}13、移位指令(<<>>)、取反指令(~)。14、程序二:流水燈程序(法二)#include<reg52.h>sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;voidmain(){ unsignedcharcnt=0; unsignedinti=0; ENLED=0;ADDR3=1; ADDR2=1;ADDR1=1;ADDR0=0; while(1) { P0=~(0x01<<cnt++); for(i=0;i<30000;i++); if(cnt>=8) { cnt=0; } }}作業(yè):4、獨立完成流水燈右移操作。5、獨立完成左移到頭,接著右移,右移到頭,接著左移的程序。Lesson5定時器和數(shù)碼管基礎(chǔ)1、邏輯運算邏輯與:&&邏輯或:||邏輯非:!按位與:&按位或:|按位取反:~按位異或:^0b11001100|0b11110000等于0b111111002、數(shù)字電路常用符號3、機器周期是定時器的計數(shù)周期,打開定時器后,每經(jīng)過一個機器周期,定時器“存儲寄存器”的值加1。8位定時器存儲的值的范圍:0-22516位定時器0-655354、標(biāo)準(zhǔn)51里有兩個定時器:T0和T1。5、定時器/計數(shù)器模式示意圖。5、使用定時器的方法一、設(shè)置TMOD(模式寄存器M1、M0位,常用模式1、模式2自動重裝),配置好工作模式例如:TMOD=1;二、設(shè)計數(shù)寄存器TH0、TL0的初值。例如:TH0=0XB8;TL0=0X00;定時20msTH0=0XB8;TL0=0X00;定時1ms三、設(shè)TCON(控制寄存器TF位,TR位),通過TR0置1來讓定時器開始計數(shù)例如:TR0=1;四、判斷TCON寄存器的TF0位,檢測定時器的溢出情況。計算計數(shù)寄存器初值的方法:12*(65536-X)/11059200=20ms6、1s閃爍一次的小燈程序#include<reg52.h>sbitLED=P0^0;sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;voidmain(){ unsignedcharcnt=0; ENLED=0;ADDR3=1; ADDR2=1;ADDR1=1;ADDR0=0; TMOD=0x01; TH0=0XB8; TL0=0X00; TR0=1; while(1) { if(TF0==1) { TF0=0; TH0=0XB8; TL0=0X00; //定時20ms cnt++; if(cnt>=50) { cnt=0; LED=~LED; } } }}7、數(shù)碼管分:位、段(A/B/C/D/E/F/G/DOP)兩個概念8、第一個數(shù)碼管顯示“1”的程序#include<reg52.h>sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;voidmain(){ unsignedcharcnt=0; ENLED=0;ADDR3=1; ADDR2=0;ADDR1=0;ADDR0=0; P0=0XF9; while(1);}1位數(shù)碼管從1-F(每隔1秒加1)#include<reg52.h>sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;unsignedcharcodeledchar[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};voidmain(){ unsignedcharcnt=0; unsignedcharsec=0; ENLED=0;ADDR3=1; ADDR2=0;ADDR1=0;ADDR0=0; TMOD=1; TH0=0XB8; TL0=0X00; TR0=1; while(1) { if(TF0==1) { TF0=0; TH0=0XB8; TL0=0X00; cnt++; if(cnt>=50) { cnt=0; P0=ledchar[sec]; sec++; if(sec>=16) { sec=0; } } } }}作業(yè):熟練掌握單片機定時器的原理和應(yīng)用方法通過研究定時器模式1的示意圖,自己打開STC89C52RC手冊的定時器部分,獨立研究模式0,模式1,模式2,和模式3的示意圖,鍛煉研究示意圖的能力。使用定時器實現(xiàn)延時,完成左右移動的流水燈程序。了解數(shù)碼管的原理,掌握數(shù)碼管的真值表計算方法。編程實現(xiàn)數(shù)碼管靜態(tài)顯示秒表的倒計時。Lesson6中斷與數(shù)碼管動態(tài)顯示if語句的用法if(條件表達式){ 語句1;}只判斷一次,只執(zhí)行一次,然后執(zhí)行下面的程序。if(條件表達式){ 語句1;}else{ 語句2;}(3) if(表達式1){語句1;}elseif(表達式1){語句1;}elseif(表達式1){語句1;}else{語句n}一旦有一個為真,執(zhí)行完相應(yīng)語句后,跳出if語句。switch語句的用法法一:Switch(表達式){ Case常量表達式1:語句1; Case常量表達式2:語句2; Case常量表達式n:語句n; Default:語句n+1;}法二:Switch(表達式){ Case常量表達式1:語句1;break; Case常量表達式2:語句2;break; Case常量表達式n:語句n;break; Default:語句n+1; break;} 3、動態(tài)顯示利用人肉眼的視覺暫留現(xiàn)象(余暉效應(yīng))10ms以內(nèi)必須重新刷新同一個數(shù)碼管。ENLEDADDR3選中ADDR2ADDR1ADDR0切換4、6位顯示的秒表程序(if語句)#include<reg52.h>sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;unsignedcharcodeledchar[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};unsignedcharledbuff[6]={0xff,0xff,0xff,0xff,0xff,0xff}; //初始值0XFFvoidmain(){ unsignedintcnt=0; unsignedlongsec=0; unsignedchari=0; ENLED=0; ADDR3=1; TMOD=0X01; TH0=0XFC; TL0=0X67; TR0=1; while(1) { if(TF0==1) { TF0=0; TH0=0XFC; TL0=0X67; cnt++; if(cnt>=1000) { cnt=0; sec++; ledbuff[0]=ledchar[sec%10]; ledbuff[1]=ledchar[sec/10%10]; ledbuff[2]=ledchar[sec/100%10]; ledbuff[3]=ledchar[sec/1000%10]; ledbuff[4]=ledchar[sec/10000%10]; ledbuff[5]=ledchar[sec/100000%10];// } if(i==0) { ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=ledbuff[0]; } elseif(i==1) { ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=ledbuff[1]; } elseif(i==2) { ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=ledbuff[2]; } elseif(i==3) { ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=ledbuff[3]; } elseif(i==4) { ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=ledbuff[4]; } elseif(i==5) { ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=ledbuff[5]; } } }}5、6位顯示的秒表程序(switch語句)#include<reg52.h>sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;unsignedcharcodeledchar[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};unsignedcharledbuff[6]={0xff,0xff,0xff,0xff,0xff,0xff}; //初始值0XFFvoidmain(){ unsignedintcnt=0; unsignedlongsec=0; unsignedchari=0; ENLED=0; ADDR3=1; TMOD=0X01; TH0=0XFC; TL0=0X67; TR0=1; while(1) { if(TF0==1) { TF0=0; TH0=0XFC; TL0=0X67; cnt++; if(cnt>=1000) { cnt=0; sec++; ledbuff[0]=ledchar[sec%10]; ledbuff[1]=ledchar[sec/10%10]; ledbuff[2]=ledchar[sec/100%10]; ledbuff[3]=ledchar[sec/1000%10]; ledbuff[4]=ledchar[sec/10000%10]; ledbuff[5]=ledchar[sec/100000%10];// } P0=0XFF;//消除鬼影操作。 switch(i) { case0:ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=ledbuff[0];break; case1:ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=ledbuff[1];break; case2:ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=ledbuff[2];break; case3:ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=ledbuff[3];break; case4:ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=ledbuff[4];break; case5:ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=ledbuff[5];break; default:break; } } }}使用中斷實現(xiàn)秒表程序(中斷)#include<reg52.h>sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;unsignedcharcodeLedChar[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};unsignedcharLedBuff[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};unsignedintcnt=0;voidmain(){ unsignedlongsec=0; ENLED=0; ADDR3=1; TMOD=0x01; TH0=0xFC; TL0=0x67; TR0=1; EA=1; ET0=1; while(1) { if(cnt>=1000) { cnt=0; sec++; LedBuff[0]=LedChar[sec%10]; LedBuff[1]=LedChar[sec/10%10]; LedBuff[2]=LedChar[sec/100%10]; LedBuff[3]=LedChar[sec/1000%10]; LedBuff[4]=LedChar[sec/10000%10]; LedBuff[5]=LedChar[sec/100000%10]; } }}unsignedchari=0;voidInterruptTimer0()interrupt1 { TH0=0xFC; TL0=0x67; cnt++; P0=0xFF;//消隱 switch(i) { case0:ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LedBuff[0];break; case1:ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[1];break; case2:ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[2];break; case3:ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[3];break; case4:ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[4];break; case5:ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=LedBuff[5];break; default:break; }}數(shù)碼管不亮的地方發(fā)暗,數(shù)碼管鬼影怎么解決?秒表加1時,顯示抖動怎么解決?消除鬼影:見程序二上面黃色部分。顯示抖動:使用中斷消除。中斷優(yōu)先級(固有優(yōu)先級)中斷函數(shù)編號中斷名稱中斷標(biāo)志位中斷使能位中斷向量地址默認(rèn)優(yōu)先級0外部中斷IE0EX00x00031(最高)1T0TF0ET00x000B22外部中斷IE1EX10x001333T1TF1ET10x001B44UARTTI/RIES0x002355T2TF2/EXF2ET20x002B69、中斷58分鐘后。進入中斷條件:第一打開中斷、符合中斷條件、中斷入口正確。中斷使能寄存器:IE可位尋址。關(guān)注:EA、ET0位。中斷向量地址:決定中斷入口號x*8+3=中斷向量地址。定時器0:中斷入口號1;定時器1,中斷入口號3。作業(yè):徹底理解中斷的原理和應(yīng)用方法,關(guān)閉教程自己把本章節(jié)程序編寫完畢,下載實踐。嘗試修改程序,只顯示有效位嘗試寫一個從999999開始倒計時的程序,通過改用定時器T1的中斷來完成。Lesson7變量進階與LED點陣(點陣部分需要完善)變量的作用域局部變量:只在函數(shù)內(nèi)部使用的變量全局變量:全局變量的副作用:降低函數(shù)的獨立性—修改,對任何一個函數(shù)的修改,都可能影響其他函數(shù)。降低函數(shù)的通用性—不利于函數(shù)重復(fù)調(diào)用降低程序的清晰度---每個函數(shù)執(zhí)行,都可能改變?nèi)肿兞康闹?。全局變量永久占?jù)內(nèi)存。原則:能用局部變量,就不用全局變量。全局變量和局部變量同名,在局部變量作用域范圍內(nèi),局部變量有效。變量的存儲類別:自動變量:函數(shù)中的局部變量,如不加static關(guān)鍵字修飾,都屬于自動變量,也叫做動態(tài)變量。靜態(tài)變量:所有全局函數(shù)都屬于靜態(tài)變量,局部變量如果加了static關(guān)鍵字修飾,也是靜態(tài)變量。點陣取模軟件的用法A,新建圖像:8*8,B,模擬動畫:放大格點值最大,畫圖,選中的點為滅,白色的為亮,C,修改圖像;黑白反選,確定要顯示的內(nèi)容。D,取模方式:C51格式。E,參數(shù)設(shè)置:→其他選項→選擇橫向取模+其他默認(rèn)(選中:字節(jié)倒序(點陣第一行左側(cè)DB0),保留、任何時候都)F,基本操作:保存圖像,打開圖像,便于下次操作。顯示漢字:需要至少16*16的顯示屏。動態(tài)顯示:例如,I?u可以新建一個8*40行的點陣。(點陣顯示部分重看之后待完善)左右移動方法一,圖像側(cè)過來,把板子側(cè)過來就可以了。左右移動方法二:二維數(shù)組。Unsignedchara[2][3]={{1,2,3},{4,5,6}};Lesson8函數(shù)進階與按鍵一、單片機最小系統(tǒng)解析1、電源:5V、3.3V兩種; 數(shù)字電路電源:24V、12V、5V、3.3V、2.5V、1.8V2、無源晶振(晶體):需接起振電容,不依賴電源電壓,接好電路就工作; 有源晶振(振蕩器):需接電源,輸出端直接接XTAL1,依賴工作電壓,適用高精度場合。3、復(fù)位電路上電復(fù)位:復(fù)位時間t=1.2RC故:t=1.2*4.7K*0.1*0.000001F=564us,大于兩個機器周期約2us,故能起到復(fù)位作用。手動復(fù)位:人手按下按鍵的時間一般100ms以上,快的也有幾十ms,故滿足復(fù)位條件。 18歐的電阻作用是放電時,K、R、C形成閉合回路,消除干擾。軟件復(fù)位。二、函數(shù)的調(diào)用 1、例如:利用voidsecondcount()voidledrefresh()函數(shù)優(yōu)化秒表程序。 2、靜態(tài)變量只第一次有效。 3、函數(shù)調(diào)用時,不加函數(shù)類型(無void等),加分號; 函數(shù)調(diào)用之前,必須進行定義或聲明; 函數(shù)聲明的時候必須加:函數(shù)類型,函數(shù)的形參,最后加一個分號。 4、函數(shù)體順序:函數(shù)聲明→main()→子函數(shù)排序→中斷函數(shù)。 5、實參,形參27-32分鐘。三、獨立式按鍵只有內(nèi)部輸出為高電平,MCU的I0口就為高電平,才能讀鍵。故有P2=0XF7;程序一:#include<reg52.h>//用K1-K4控制LED6-9的亮滅sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;sbitLED9=P0^7;sbitLED8=P0^6;sbitLED7=P0^5;sbitLED6=P0^4;sbitKEY1=P2^4;sbitKEY2=P2^5;sbitKEY3=P2^6;sbitKEY4=P2^7;main(){ ENLED=0; ADDR3=1; ADDR2=1;ADDR1=1;ADDR0=0; P2=0XF7;//KEY1=4接高電平、KEYOUT4接低電平 while(1) { LED9=KEY1;//把讀的KEY1的值賦給LED9; LED8=KEY2; LED7=KEY3; LED6=KEY4; }}(法二)Main程序#include<reg52.h>#include"key.h"main(){ ENLED=0; ADDR3=1; ADDR2=1;ADDR1=1;ADDR0=0; P0=0Xff; KEYOUT1=0; while(1) { P0=(P2>>4)|0xf0; }}頭文件#ifndef_KEY_H_#define_KEY_H_sbitADDR0=P1^0;sbitADDR1=P1^1;sbitADDR2=P1^2;sbitADDR3=P1^3;sbitENLED=P1^4;sbitKEY1=P2^4;sbitKEY2=P2^5;sbitKEY3=P2^6;sbitKEY4=P2^7;sbitKEYOUT1=P2^3;sbitKEYOUT2=P2^2;sbitKEYOUT3=P2^1;sbitKEYOUT4=P2^0;#endif程序二:K1、K2控制數(shù)字加減的程序,防抖動#include<reg52.h>#include"key.h"voiddelay(){ unsignedinti=2000; while(i--);}main(){ unsignedcharn=0; P0=0XFF; KEYOUT1=0; ENLED=0;ADDR3=1; ADDR2=0;ADDR1=0;ADDR0=0;//控制最右邊數(shù)碼管DS1亮 P0=ledchar[0]; while(1) { if(!KEY1)//相當(dāng)于if(KEY1==0)判斷鍵是否按下 { delay(); if(!KEY1)//再判斷健是否按下 { if(n>=9) { n=0; } else n++; P0=ledchar[n]; while(!KEY1); //等待按鍵1松開的語句。 } } if(!KEY2) { delay(); if(!KEY2) { if(n<=0) { n=9; } else n--; P0=ledchar[n]; while(!KEY2); } } }}程序三、用小燈構(gòu)成的5位二進制數(shù)表示16個按鍵,1-1,2-2,16-0;#include<reg52.h>#include"key.h"voiddelay();main(){ ENLED=0;ADDR3=1; ADDR2=1;ADDR1=1;ADDR0=0; P0=0xFF; while(1) { KEYOUT1=0; KEYOUT2=1; KEYOUT3=1; KEYOUT4=1; if(KEY1==0) { delay(); if(KEY1==0) { P0=~1; } } if(KEY2==0) { delay(); if(KEY2==0) { P0=~2; } } if(KEY3==0) { delay(); if(KEY3==0) { P0=~3; } } if(KEY4==0) { delay(); if(KEY4==0) { P0=~4; } } while((KEY1==0)||(KEY2==0)||(KEY3==0)||(KEY4==0)); //第一行檢測完 KEYOUT1=1; KEYOUT2=0; KEYOUT3=1; KEYOUT4=1; if(KEY1==1) { delay(); if(KEY1==0) { P0=~5; } } if(KEY2==0) { delay(); if(KEY2==0) { P0=~6; } } if(KEY3==0) { delay(); if(KEY3==0) { P0=~7; } } if(KEY4==0) { delay(); if(KEY4==0) { P0=~8; } } while((KEY1==0)||(KEY2==0)||(KEY3==0)||(KEY4==0));//第二行檢測完 KEYOUT1=1; KEYOUT2=1; KEYOUT3=0; KEYOUT4=1; if(KEY1==1) { delay(); if(KEY1==0) { P0=~9; } } if(KEY2==0) { delay(); if(KEY2==0) { P0=~10; } } if(KEY3==0) { delay(); if(KEY3==0) { P0=~11; } } if(KEY4==0) { delay(); if(KEY4==0) { P0=~12; } } while((KEY1==0)||(KEY2==0)||(KEY3==0)||(KEY4==0)); //第三行檢測完 KEYOUT1=1; KEYOUT2=1; KEYOUT3=1; KEYOUT4=0; if(KEY1==1) { delay(); if(KEY1==0) { P0=~13; } } if(KEY2==0) { delay(); if(KEY2==0) { P0=~14; } } if(KEY3==0) { delay(); if(KEY3==0) { P0=~15; } } if(KEY4==0) { delay(); if(KEY4==0) { P0=~16; } } while((KEY1==0)||(KEY2==0)||(KEY3==0)||(KEY4==0)); //第四行檢測完 }}voiddelay(){ unsignedinti

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論