基于.-51單片機(jī)的籃球計分器_第1頁
基于.-51單片機(jī)的籃球計分器_第2頁
基于.-51單片機(jī)的籃球計分器_第3頁
基于.-51單片機(jī)的籃球計分器_第4頁
基于.-51單片機(jī)的籃球計分器_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

...wd......wd......wd...工程設(shè)計課程報告基于51單片機(jī)的籃球計分器姓名:莫崇維學(xué)號:011040222012年12月基于51單片機(jī)的籃球計分器一.需求分析籃球是一項充滿樂趣的運動,打籃球可以學(xué)到很多課本里沒有的東西,比方信任,合作,鼓勵等,現(xiàn)在籃球普及率已經(jīng)很高,不僅僅是專業(yè)運發(fā)動的運動,也是普通老百姓的活動,不管是走在學(xué)校里,還是公園里,甚至是鄉(xiāng)村里,都能看到籃球場,都能看到打籃球的人,籃球已成為我們大局部人生活里不可或缺的組成局部,每天都能聽到有人在談?wù)摶@球,說說自己喜歡的NBA巨星……因為喜歡籃球,所以打籃球,時不時會來場劇烈的比賽,籃球計分器將讓我們擺脫用粉筆或記分牌計分帶來的不便,輕輕松松幾個按鈕開關(guān)就能讓我們記下分?jǐn)?shù),讓我們感受到科技給我們帶來的巨變。計分器主要功能:1、記下雙方比分,隨時顯示2、能夠隨時更改雙方比分3、能夠調(diào)整比賽的時間,還有暫停時間4、能夠?qū)Q比分當(dāng)雙方更換場地5、時間走完能發(fā)出終場比賽信號二.方案設(shè)計根據(jù)所學(xué)的C語言根基知識和一些編程思想,對所需的一些硬件進(jìn)展市場調(diào)查比擬,選擇了比擬簡單,易于實現(xiàn)的51單片機(jī),結(jié)合運用了C語言思想進(jìn)展方案設(shè)計,運用keiluversion軟件編寫程序。51單片機(jī)內(nèi)部的定時器/計數(shù)器進(jìn)展中斷可以結(jié)合軟件延時實現(xiàn)計時。采用89C51芯片作為硬件核心,其內(nèi)部采用FlashROM,具有4KBROM存儲空間,能與3V的超低壓工作,由于電路設(shè)計中時由于不具備ISP在線編程技術(shù),可以運用STC-isp燒入程序。圖1給出了本系統(tǒng)的實現(xiàn)框圖。圖1總體框圖三.電路原理設(shè)計電路主要包括CPU局部、電源局部、復(fù)位電路局部、按鍵局部、LED顯示局部。1、CPU局部51單片機(jī)為單芯片微控制器,常見封裝形式為40腳雙列直插式塑料封裝DIP-40,其引腳識別為:正面面向用戶,缺口向上,左上面第一腳為1腳,然后按逆時針方向依次為2~40腳。通常第一腳有標(biāo)志符號。51單片機(jī)管腳圖如圖2所示。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器〔FPEROM—FalshProgrammableandErasableReadOnlyMemory〕的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。AT89C單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。圖2單片機(jī)引腳圖管腳說明:VCC:供電電壓。GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口作為原碼輸入口,當(dāng)FIASH進(jìn)展校驗時,P0輸出原碼,此時P0外部必須被拉高。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1〞時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)展存取時,P2口輸出地址的高八位。在給出地址“1〞時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)展讀寫時,P2口輸出其特殊功能存放器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1〞后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流〔ILL〕這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳備選功能P3.0RXD〔串行輸入口〕P3.1TXD〔串行輸出口〕P3.2/INT0〔外部中斷0〕P3.3/INT1〔外部中斷1〕P3.4T0〔記時器0外部輸入〕P3.5T1〔記時器1外部輸入〕P3.6/WR〔外部數(shù)據(jù)存儲器寫選通〕P3.7/RD〔外部數(shù)據(jù)存儲器讀選通〕P3口同時為閃爍編程和編程校驗接收一些控制信號。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。ALE/PROG:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想制止ALE的輸出可在SFR8EH地址上置0。此時,ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE制止,置位無效。/PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器〔0000H-FFFFH〕,不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源〔VPP〕。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的上下電平要求的寬度。單片機(jī)是一種微控制器,任何為控制器正常工作最根本的條件是要有正確的電源、時鐘電路好復(fù)位信號,三者缺一不可。單片機(jī)正常工作最根本條件是:正確的電源、時鐘信號、復(fù)位信號。51系列單片機(jī)第40引腳接電源+5V,第20引腳接地。電壓過高或者過低均會引起單片機(jī)CPU部工作。單片機(jī)指令執(zhí)行時在時鐘脈沖控制下進(jìn)展的,時鐘脈沖信號是由單片機(jī)內(nèi)部時鐘電路及18腳、19腳外接晶振和電容組成的時鐘電路產(chǎn)生的。時鐘電路異常,也會引起單片機(jī)CPU部工作,可通過測量30腳〔ALE〕是否有時鐘脈沖六分頻信號輸出來判斷振蕩電路是否起振。復(fù)位電路時在CPU通電后,給復(fù)位端9腳〔RST〕一個復(fù)位脈沖,使CPU內(nèi)部處于初始工作狀態(tài)。51系列單片機(jī)是高電平復(fù)位,在正確的復(fù)位后〔工作狀態(tài)〕9腳應(yīng)保持低電平。如果復(fù)位電路出現(xiàn)故障,CPU也將無法工作。由于CPU的復(fù)位電路只有在開機(jī)瞬間產(chǎn)生復(fù)位脈沖,周期一般為幾毫秒,用萬用表無法鑒別正常與否。對于只有上電復(fù)位的復(fù)位電路,快速判斷CPU是否有故障可以采取強(qiáng)制復(fù)位的方法,將復(fù)位瞬時接電源正端,如果此時CPU恢復(fù)工作,說明CPU的復(fù)位電路出現(xiàn)故障。對于有按鍵復(fù)位的復(fù)位電路,按下復(fù)位鍵,測量復(fù)位端是否有高電平產(chǎn)生來判斷復(fù)位電路工作是否正常。圖3CPU控制電路2、電源局部圖4電源局部如圖4所示,為單片機(jī),復(fù)位電路提供電源。3、復(fù)位電路局部如圖5所示,單片機(jī)中RST端口通過一個10uF的電解電容接VCC,又通過一個10K的電阻接地。接VCC的電容為復(fù)位電容,接地的電阻為下拉電阻。工作過程:單片機(jī)剛上電時需復(fù)位一次才能可靠工作,通過電容接VCC,是利用電容充電來提供>>2個機(jī)器周期的高電平時間讓單片機(jī)復(fù)位,如此單片機(jī)可以正常工作了,這之后又不要求單片機(jī)復(fù)位,所以可以通過10K的電阻下拉接地,保證RST腳維持在低電平狀態(tài)〔即不復(fù)位狀態(tài)〕。圖5復(fù)位電路4、按鍵局部如圖6所示,鍵盤對應(yīng)名稱如下:ADD1,DEC1,EXCHANGE,ADD2,DEC2,RUN/STOP其中, ADD1甲隊比分加1鍵,〔暫停時為調(diào)整時間分鐘加1〕 DEC1甲隊比分減1鍵,〔暫停時為調(diào)整時間分鐘減1〕 EXCHANGE換場鍵,半場休息時換場。 ADD2乙隊比分加1鍵,〔暫停時為調(diào)整時間秒鐘加1〕 DEC2乙隊比分減1鍵,〔暫停時為調(diào)整時間秒鐘減1〕 RUN/STOP啟動暫停鍵,比賽開場時按下啟動計時,比賽開場。比賽開場后,按下為暫停計時,比賽暫停。圖6按鍵局部5、LED顯示局部如圖7,圖8和圖9所示,分別代表甲乙兩隊記分牌和剩余時間牌。其中圖5為剩余時間牌,初始剩余時間默認(rèn)為12:00;圖8和圖9為甲乙兩隊的比分值,用三位數(shù)表示,范圍從000到999。圖7D2〔4LED〕圖8D3(3LED)圖9D4(3LED)系統(tǒng)的總電路圖圖10給出了系統(tǒng)總電路圖圖10系統(tǒng)總電路圖四、硬件設(shè)計與調(diào)試1、電路板的的焊接要區(qū)分開電源地和信號地,電源地主要是針對電源回路而言的,而信號地主要是指兩塊芯片或者模塊之間的通信信號的回流所流過的路徑,電源地可以理解為通過發(fā)電廠與大地相連接而信號地僅僅是電路板上所有接地信號的公共端。兩者之間應(yīng)該接在一起。但是由于電源地存在很多的高頻污染,所以經(jīng)常通過電感,電容,磁珠或者0歐姆電阻將二者相連。磁珠的等效電路相當(dāng)于帶阻限波器,只對某個頻點的噪聲有顯著抑制作用,使用時需要預(yù)先估計噪點頻率,以便選用適當(dāng)型號。主流的直流電變換芯片主要分為相控電源,線性電源,開關(guān)電源三類。焊接cup時,首先要檢查cpu的各個管腳,保證沒有彎曲或者錯位,然后將CUP各個管腳跟pcb板上的焊盤仔細(xì)的對齊,然后用電烙鐵輕輕燙一下管腳,由于CPU管腳和焊盤上均有少量的殘錫,可以將CPU固定住,然后用電烙鐵依次將管腳壓平。接下來最關(guān)鍵的步驟:補錫。先在cup管腳的一端點少量焊錫,然后將一排管腳涂滿松香,快速而緩慢的劃過管腳。焊接電路要有分塊化的思想,首先焊接電源模塊,然后測試各個供電電壓;然后焊接CPu模塊、Rs232和TTL電平轉(zhuǎn)換模塊,通電后通過串口isp測試cup是否啟動能否燒寫程序。然后是無線通訊某塊和IO串口某塊,最后成功后焊接引出的管腳。晶振(Crystal)即為石英振蕩器,是一種機(jī)電器件,是用電損耗很小的石英晶體經(jīng)精細(xì)切割磨削并鍍上電極焊上引線做成。這種晶體有一個很重要的特性,如果給他通電,他就會產(chǎn)生機(jī)械振蕩,反之,如果給他機(jī)械力,他又會產(chǎn)生電,這種特性叫機(jī)電效應(yīng)。他們有一個很重要的特點,其振蕩頻率與他們的形狀,材料,切割方向等密切相關(guān)。由于石英晶體化學(xué)性能非常穩(wěn)定,熱膨脹系數(shù)非常小,其振蕩頻率也非常穩(wěn)定,由于控制幾何尺寸可以做到很精細(xì),因此,其諧振頻率也很準(zhǔn)確。根據(jù)石英晶體的機(jī)電效應(yīng),我們可以把它等效為一個電磁振蕩回路,即諧振回路。他們的機(jī)電效應(yīng)是機(jī)-電-機(jī)-電....的不斷轉(zhuǎn)換,由電感和電容組成的諧振回路是電場-磁場的不斷轉(zhuǎn)換。在電路中的應(yīng)用實際上是把它當(dāng)作一個高Q值的電磁諧振回路。由于石英晶體的損耗非常小,即Q值非常高,做振蕩器用時,可以產(chǎn)生非常穩(wěn)定的振蕩,作濾波器用,可以獲得非常穩(wěn)定和陡削的帶通或帶阻曲線。2、程序的調(diào)試程序的調(diào)試是編寫一個程序的重要步驟,根據(jù)思想框圖寫好代碼,不是寫完就可以運用,由于一些因素可能會造成程序無法編譯,這等于代碼不能使用,有時候會因為一個小小的標(biāo)點符號,會使你半天找不到錯誤,因為目標(biāo)太小,但卻是致命的,debug過程比寫程序還要麻煩,有時候你模仿別人的程序?qū)懗鏊璩绦?,寫好了就是無法編譯,這是跟編程者的思想息息相關(guān),編寫程序最好模塊清楚,注釋明了,使人一目了然,讓懂的人一看便知你的思想,這是最重要的,所以要條理清晰,這是我調(diào)試程序的一些心得體會。五、測試方法和測試結(jié)果在proteus下的仿真。仿真如圖11-圖17所示圖1180C51單片機(jī)局部圖12排阻局部圖13蜂鳴器局部圖14按鍵局部圖15時間顯示局部圖16比分顯示局部圖17仿真全圖調(diào)整比賽時間:插上電源后,系列默認(rèn)比賽時間為12:00,甲乙隊比分默認(rèn)000,此時按下ADD1鍵,可以比照賽時間分鐘加1,按下DEC1鍵,可以比照賽時間的分鐘減1,按下ADD2鍵,可以比照賽時間秒加1,按下DEC2鍵,可以比照賽時間秒減1。開場比賽:按下RUN/STOP鍵,計時開場,比賽時間以1秒的頻率倒計時。暫停比賽:比賽運行的狀態(tài)下,按RUN/STOP鍵,比賽暫停,計時暫停。比分修改:在比賽進(jìn)展的狀態(tài)下按ADD1,DEC1鍵,可以對甲隊比分加、減1,按ADD2、DEC2鍵,可以對乙隊比分加、減1.交換場地:在半場休息時,按下EXCHANGE鍵,比賽時間重新預(yù)置為12:00,同時左右兩邊數(shù)碼管的比分交換顯示。此時按下啟動鍵可以開場新一節(jié)的比賽。報警提示:在一節(jié)比賽時間倒計時到00:00時,蜂鳴器發(fā)出報警提示。六、結(jié)論通過這次工程設(shè)計實驗,我們能很好地結(jié)合所學(xué)的一些理論知識,讓我們更好地理解,通過實踐使我們更進(jìn)一步了解所學(xué)理論,穩(wěn)固和加深印象,讓我們從抽象的理論知識到生動的實體感受,更有利于學(xué)習(xí)和掌握新的知識。附、源程序代碼#include<reg51.h>#defineLEDDataP0 //定時數(shù)碼管的段值從P0口輸出unsignedcharcodeLEDCode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //數(shù)碼管0--9的編碼unsignedcharminit,second,count,count1; //分,秒,計數(shù)器unsignedcharset_minit=12,set_second=0;sbitadd1=P1^0; //甲隊加分,每按一次加1分/比賽前為時間加1分sbitdec1=P1^1; //甲隊減分,每按一次減1分/比賽前為時間減1分sbitexchange=P1^2; //交換場地sbitadd2=P1^3; //乙隊加分,每按一次加1分/比賽前為時間加1秒sbitdec2=P1^4; //乙隊減分,每按一次減1分/比賽前為時間減1秒sbitsecondpoint=P0^7; //秒閃動點//----數(shù)碼管的位選控制腳,共有10位數(shù)碼管------sbitled1=P2^7; sbitled2=P2^6;sbitled3=P2^5;sbitled4=P2^4;sbitled5=P2^3;sbitled6=P2^2;sbitled7=P2^1;sbitled8=P2^0;sbitled9=P3^7;sbitled10=P3^6;sbitalam=P1^7; //報警bitplayon=0; //比賽進(jìn)展標(biāo)志位,為1時表示比賽開場,計時開啟bittimeover=0; //比賽完畢標(biāo)志位,為1時表示比賽完畢bitAorB=0; //甲乙隊交換位置標(biāo)志位bithalfsecond=0; //半秒標(biāo)志位unsignedintscoreA; //甲隊得分unsignedintscoreB; //乙隊得分//====================延時==================voidDelay5ms(void){ unsignedinti; for(i=100;i>0;i--);}voiddisplay(void){//-----------顯示時間〔分鐘〕-------------- LEDData=LEDCode[minit/10];//顯示分鐘的十位 led1=0; //開啟位選 Delay5ms(); //延時,以便足以點亮數(shù)碼管。 led1=1; //關(guān)閉位選 LEDData=LEDCode[minit%10]; //顯示分鐘的個位 led2=0; Delay5ms(); led2=1;//-------------秒點閃動------------ if(halfsecond==1) LEDData=0x80; else LEDData=0x00; led2=0; Delay5ms(); led2=1; secondpoint=0;//-----------顯示時間〔秒鐘〕------------ LEDData=LEDCode[second/10]; //顯示秒鐘的十位 led3=0; Delay5ms(); led3=1; LEDData=LEDCode[second%10]; //顯示秒鐘的個位 led4=0; Delay5ms(); led4=1;//-----------顯示1組的分?jǐn)?shù)百位------- if(AorB==0) LEDData=LEDCode[scoreA/100]; else LEDData=LEDCode[scoreB/100]; led5=0; Delay5ms(); led5=1;//---------------顯示1組分?jǐn)?shù)的十位----------- if(AorB==0) LEDData=LEDCode[(scoreA%100)/10]; else LEDData=LEDCode[(scoreB%100)/10]; led6=0; Delay5ms(); led6=1;//---------------顯示1組分?jǐn)?shù)的個位----------- if(AorB==0) LEDData=LEDCode[scoreA%10]; else LEDData=LEDCode[scoreB%10]; led7=0; Delay5ms(); led7=1;//-----------顯示2組分?jǐn)?shù)的百位------- if(AorB==1) LEDData=LEDCode[scoreA/100]; else LEDData=LEDCode[scoreB/100]; led8=0; Delay5ms(); led8=1;//-----------顯示2組分?jǐn)?shù)的十位----------- if(AorB==1) LEDData=LEDCode[(scoreA%100)/10]; else LEDData=LEDCode[(scoreB%100)/10]; led9=0; Delay5ms(); led9=1;//-----------顯示2組分?jǐn)?shù)的個位----------- if(AorB==1) LEDData=LEDCode[scoreA%10]; else LEDData=LEDCode[scoreB%10]; led10=0; Delay5ms(); led10=1;}//=========================按鍵檢測程序================================================voidkeyscan(void){ if(playon==0) //在比賽未開場的狀態(tài)下 { if(add1==0) //當(dāng)add1按鍵按下時 { display(); //調(diào)用顯示,同時作為延時消抖 if(add1==0); //延時消抖后,依然檢查到按鍵按下 { if(minit<99) //當(dāng)分鐘小于99時,分鐘加1 minit++; else minit=99; //否則,分鐘仍然為99,調(diào)整為99分鐘 } do //當(dāng)按鍵未松開時,一直調(diào)用顯示,防止數(shù)碼管閃動, display(); while(add1==0); } if(dec1==0) //當(dāng)dec1鍵按下時,dec1的原理與add一樣, { display(); if(dec1==0); { if(minit>0) minit--; else minit=0; } do display(); while(dec1==0); } if(add2==0) //調(diào)整秒,原理同上 { display(); if(add2==0); { if(second<59) second++; else second=59; } do display(); while(add2==0); } if(dec2==0) { display(); if(dec2==0); { if(second>0) second--; else second=0; } do display(); while(dec2==0); } if(exchange==0) //換場鍵 { display(); if(exchange==0); { TR1=0; //關(guān)閉T1計數(shù)器 alam=1; //關(guān)報警 AorB=~AorB; //開啟交換 minit=set_minit; //并將時間預(yù)設(shè)為12:00 second=0; } do display(); while(exchange==0); } } else //比賽開場。 { if(add1==0) //add1鍵按下 { display(); //調(diào)用顯示,同時延時消抖 if(add1==0); { if(AorB==0) //當(dāng)場地標(biāo)志位=0時, { if(scoreA<999) //當(dāng)A方的比分小于999時,比分加1 scoreA++; else scoreA=999; //否則最大值為999分 } else //當(dāng)場地標(biāo)志位=1時, { if(scoreB<999) //當(dāng)B方的比分小于999時,比分加1 scoreB++; else scoreB=999; //否則最在值為999分 } } do display(); while(add1==0); } if(dec1==0) //當(dāng)dec1鍵按下時,原理與add1一樣,比分減1 { display(); if(dec1==0); { if(AorB==0) { if(scoreA>0) scoreA--; else scoreA=0; } else { if(scoreB>0) scoreB--; else scoreB=0; } } do display(); while(dec1==0); } if(add2==0) //原理同上{ display(); if(add2==0); { if(AorB==1) { if(scoreA<999) scoreA++; else scoreA=999; } else { if(scoreB<999) scoreB++; else scoreB=999; } } do display(); while(add2==0); } if(dec2==0) { display(); if(dec2==0); { if(AorB==1) { if(scoreA>0) scoreA--; else scoreA=0; } else { if(scoreB>0) scoreB--; else scoreB=0; } } do display(); while(dec2==0); } }}//******************************主函數(shù)voidmain(void){ TMOD=0x11; //TMOD設(shè)置 TL0=0xb0; //定時器0,初值為0x3CB0,既定時0.05s TH0=0x3c; TL1=0xb0; //定時器1,初值為0x3CB0,即定時0.05s TH1=0x3c; minit=set_minit; //初始值為12:00 second=0; EA=1; //開總中斷 ET0=1; //開T0中斷 ET1=1; //開T1中斷 TR0=0; TR1=0; EX0=1; //開外部中斷0 IT0=1; IT1=1;// EX1=1; PX0=1;// PX1=1; PT0=0; P1=0xFF; P3=0xFF; while(1) { keyscan(); //按鍵檢查 display(); //顯示程序}}//============外部中斷0中斷程序=================voidPxInt0(void)interrupt0{ Delay5ms(); EX0=0; //關(guān)中斷使能 alam=1; //關(guān)蜂鳴器 TR1=0; //關(guān)定時器0 if(timeover==1) //當(dāng)一節(jié)比擬時間完畢時,完畢標(biāo)志位=1 { timeover=0; //去除標(biāo)志位 } if(playon==0) //當(dāng)比賽完畢或暫停時 { playon=1; //開場標(biāo)志位 TR0=1; //開啟計時 } else { playon=0; //開場標(biāo)志位清零,表示暫停 TR0=0; //暫停計時 } EX0=1; //重新開中斷 }//===================定時器0中斷服務(wù)函數(shù)====

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論