考工程序-帶注釋_第1頁
考工程序-帶注釋_第2頁
考工程序-帶注釋_第3頁
考工程序-帶注釋_第4頁
考工程序-帶注釋_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、-;=; 課題一:用AT89C51單片機(jī)P1口控制8個發(fā)光二極管循環(huán)發(fā)光;=ORG0000HJMPBOOTORG0030HBOOT:MOVA,*01H;將立即數(shù)01H送給存放器ALOOP:MOVP1,A;將A中的值送往P1口,點亮最低位發(fā)光二極管RLA;將A中的值循環(huán)左移CALLDELAYJMPLOOP;=; 當(dāng)工作于12M晶振,它的時鐘周期是1/12US,一個機(jī)器周期為1US.; 延時 100MS, 需要 100000=100*250*4個機(jī)器周期;=; 當(dāng)工作于11.0592M晶振,它的時鐘周期是1/11.0592US,一個機(jī)器周期為1.085US.; 延時 100MS, 需要 92160

2、=160*144*4個機(jī)器周期;=N1EQU10;延時1S,N1*100MS=N2*N3*4T;N2EQU100;N3EQU250N2EQU160N3EQU144DELAY:;延時程序MOVR2,*N1DELAY1:;DELAY100MSMOVR3,*N2DELAY2:MOVR4,*N3DELAY3:NOP;1TNOP;1TDJNZR4,DELAY3;2TDJNZR3,DELAY2;2TDJNZR2,DELAY1;2TRET;1TEND;=; 課題二:定時器控制七段LED顯示器循環(huán)顯示;=T50MSEQU-46080;定義時間常數(shù)50000US,50000/(12/11.0592)=46080

3、T20EQU20 ;定義時間常數(shù)20*50MS=1SCOUNTEQU30H ;定義計時單元DIGITEQU31H ;定義字符單元ORG0000HAJMPMAINORG000BHAJMPTIMER0ORG0030HMAIN:MOVSP,*60H;設(shè)置堆棧指針MOVTMOD,*01H ;用定時器0,方式1MOVTH0,*HIGH(T50MS);定時50MSMOVTL0,*LOW(T50MS)MOVCOUNT,*T20 ;延時控制MOVDIGIT,*00H ;字符控制MOVP1,*00H;關(guān)閉顯示MOVIE,*82H;開中斷SETBTR0 ;啟動定時器T0AJMP$;等待中斷TIMER0:MOVTH

4、0,*HIGH(T50MS) ;定時50MSMOVTL0,*LOW(T50MS)DJNZCOUNT,RET0;判斷計時單元值減1是否為0,不是則轉(zhuǎn)到RET0MOVCOUNT,*T20;重新定義計時單元值CALLDISPINCDIGIT;字符單元加1MOVA,DIGIT;將字符單元值送入ACJNEA,*10,RET0;判斷A是否等于10MOVDIGIT,*00;字符單元清零RET0:RETI;中斷返回DISP:MOVA,DIGITMOVDPTR,*TAB;定義表頭首地址MOVCA,A+DPTR;將A和DPTR相加后得到的地址中的容賦給AMOVP1,A;將A的值送入P1口RETTAB:DB 7DH

5、,18H,6EH,3EH,1BH;對應(yīng)數(shù)字0-4DB 37H,77H,1CH,7FH,3FH;對應(yīng)數(shù)字5-9END;=; 課題三:計數(shù)器構(gòu)成脈沖計數(shù)電路;=T_CONST0EQU-1;定義計數(shù)常數(shù)COUNTEQU40H;計數(shù)單元KEY1EQUP3.7;暫停鍵KEY2EQUP3.6;清零鍵ORG0000HAJMPMAINORG000BHLJMPINT_T0 ORG0030HMAIN:MOVTH0,*T_CONST0;給計數(shù)器送入計數(shù)常數(shù)MOVTL0,TH0MOVTMOD,*06H;計數(shù)器0,工作在方式2MOVP1,*0FFHMOVP3,*0FFHMOVCOUNT,*0;計數(shù)單元清零SETBEA;

6、開中斷SETBET0;開計數(shù)器0中斷SETBTR0;啟動計數(shù)器0LOOP:KEY2,NE*T1;如有清零鍵MOVCOUNT,*0;則對計數(shù)單元清零NE*T1:MOVP1,COUNT;取計數(shù)單元數(shù)值送入外部端口AJMPLOOP;=;計數(shù)器0中斷效勞程序INT_T0:JNBKEY1,INT_T01;如有暫停鍵INCCOUNT;則計數(shù)單元加1INT_T01:RETIEND;=; 課題四:點陣LED顯示電路;=ROWEQUP1;CZ5-1 接 P1.0 CZ5-8 接 P1.7RANKEQUP3;CZ4-1 接 P3.7 CZ4-8 接 P3.0DISPEQU30H;字符碼緩沖區(qū)首地址ORG0HAJM

7、PMAINORG0030HMAIN:ACALLGET;讀字符DISPLAY: ACALLSCAN;字符顯示掃描AJMPDISPLAY;=GET:MOVR0,*DISP;將字符讀入緩沖區(qū)MOVR7,*08H;定義取字符次數(shù)MOVDPTR,*TAB;定義表頭首地址GET1:MOVA,*00HMOVCA,A+DPTR;將A和DPTR相加后得到的地址中的容賦給AMOVR0,A;將A的值放到(R0)中INCDPTR;加1INCR0DJNZR7,GET1;判斷字符讀取是否完畢RET;=SCAN:;字符顯示掃描MOVR7,*08HMOVR0,*DISPMOVR1,*0FEHSCAN1:MOVA,R0;將(R

8、0)中的容送入AMOVRANK,A;給P3口送A的值MOVROW,R1;給P1口送R1的值LCALLDELAYMOVA,R1;將R1中的值循環(huán)左移RLAMOVR1,AINCR0;加1DJNZR7,SCAN1;判斷是顯示掃描是否完畢RETDELAY:;延時程序MOVR6,*8DELAY0: MOVR5,*144DJNZR5,$DJNZR6,DELAY0RETTAB: ;DB7EH,8H,8H,8H;DB3EH,8H,8H,0FFH;王;DB7EH,08H,08H,28H;DB2EH,28H,28H,0FFH ;正DB20H,10H,092H,0C3HDB40H,0A2H,53H,04EH;心EN

9、D;=;課題五:用串入并出移位存放器74HC595; 實現(xiàn)AT89C51單片機(jī)I/0口的擴(kuò)展(R*D,T*D);=;=;6個74HC595級聯(lián),并行輸出6個數(shù)字;共陽數(shù)碼管,與595的輸出連接如下;QA-H,QB-G,QC-E,QD-D;QE-C,QF-B,QG-A,QH-F;=;接線提示 ;P3.0接(A1)串口數(shù)據(jù)通過R*D送入595的數(shù)據(jù)輸入端SER ;P3.1接(A2)串口數(shù)據(jù)時鐘T*D接595的移位存放器時鐘SCLKSRCLREQU P3.2 ;P3.2接(A3) 當(dāng)SRCLR=0,移位存放器清零RCLK EQU P3.3 ;P3.3接(A4) 上升沿時將移位存放器中的數(shù)據(jù)送入到輸器

10、DISP EQU 30H ;顯示數(shù)據(jù)的首地址ORG 0000HSJMP MAINORG 0030HMAIN: MOV SP,*60H ;SP為堆棧指針用于保護(hù)斷點 CLR SRCLR ;移位存放器清零 NOP SETB SRCLR ;關(guān)閉清零口 MOV SCON,*0H;串口工作在方式0 CLR TI CALL GET ;將數(shù)據(jù)放置在數(shù)據(jù)緩沖區(qū)LOOP:MOV R7,*06H MOV R0,*DISPLOOP1:MOV A,R0 MOV SBUF,A ;串行輸出一個數(shù)據(jù)到595 JNB TI,$ CLR TI INC R0 DJNZ R7,LOOP1 CLR RCLK ;將數(shù)據(jù)送入輸出鎖存器以

11、使6個數(shù)據(jù)并行輸出 NOP SETB RCLK AJMP $GET: MOVR0,*DISP ;將要顯示的段碼送入數(shù)據(jù)緩沖區(qū) MOVR7,*06H MOV DPTR,*TABGET1: MOV A,*00HMOVC A,A+DPTR MOV R0,A INC DPTR INC R0 DJNZ R7,GET1 ;用于判斷六位數(shù)據(jù)是否送完 RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90H;0C0H(0),0F9H(1),0A4H(2),0B0H(3),99H(4);92H(5),82H(6),0F8H(7),80(8),90H(9)

12、END;=;課題六:A/D轉(zhuǎn)換;=;目錄;1、初始化;2、AD轉(zhuǎn)換; A、啟動轉(zhuǎn)換; B、將轉(zhuǎn)換的數(shù)據(jù)放入數(shù)據(jù)存儲區(qū)中;3、將數(shù)據(jù)轉(zhuǎn)0255轉(zhuǎn)換為0.005.00再調(diào)用顯示; A、將顯示單元里的數(shù)通過串口傳送給595; C、輸出顯示數(shù)據(jù)并顯示;=;接線提示;= ;顯示局部接線 ;P3.0接(A1) 串口數(shù)據(jù)通過R*D送入595的數(shù)據(jù)輸入端SER ;P3.1接(A2) 串口數(shù)據(jù)時鐘T*D接595的移位存放器時鐘SCLKSRCLREQUP3.2 ;P3.2接(A3) 當(dāng)SRCLR=0,移位存放器清零RCLKEQUP3.3 ;P3.3接(A4) 上升沿時將移位存放器中的數(shù)據(jù)送入到輸出鎖存器 ;此時調(diào)

13、用DISP595子程序 ;或者用P1口直接將AD轉(zhuǎn)換的八位二進(jìn)制數(shù)據(jù)輸出給發(fā)光二極管 ;此時調(diào)用DISPLED子程序;= ;P2.0P2.2接地址A,B,C 即J3-1J3-3(用于選通道)EOCEQUP2.3;P2.3接EOC J3-4(判斷轉(zhuǎn)換是否完畢);P2.4接J3-5(與P3.6共同作用高電平啟動AD轉(zhuǎn)換);單片機(jī)30引腳ALE接J3-6AD0809的時鐘 ;P3.6接J3-7,寫信號;P3.7接J3-8,讀信號(使能輸出);P0P7接J4-1J4-8 ,將AD0809的數(shù)據(jù)輸入到P0;讀寫地址是:00FFHDISPEQU30H;存放AD轉(zhuǎn)換的原始數(shù)據(jù)DISP0EQU 33H ;百分

14、位DISP1EQU 34H ;十分位DISP2EQU 35H ;個位ORG0000H;主程序AJMPMAINORG 0030HMAIN:CLRTIL_MAIN: LCALLTESTLCALLDISP595;LCALLDISPLEDJMP L_MAIN;子程序TEST:MOV DPTR,*00FFH ;P2.7P2.0的值為00H, P0.7P0.0的值為0FFHMOV*DPTR,A ;選通通道并且進(jìn)展AD轉(zhuǎn)換NOPNOPEOC,$;跳線在JP1位置時,用;跳線在JP2位置時,用JNB ;用來判斷AD轉(zhuǎn)換是否完畢了MOV*A,DPTRMOVDISP,A ;AD轉(zhuǎn)換的原始數(shù)據(jù)RET;通過595串入

15、并出的方式顯示6個數(shù)碼查表,點亮小數(shù)點,串入并出DISP595:LCALLTURNBCD;顯示0.005.00MOVR0,*DISP0MOVDPTR,*TABMOVR6,*3LOOP:MOVA,R0MOVCA,A+DPTRMOVR0,AINCR0DJNZR6,LOOP ;LOOP循環(huán)是通過查表將要顯示的十進(jìn)制的值轉(zhuǎn)化為所要顯示的段碼MOVA,DISP2ANLA,*7FH;點亮小數(shù)點MOVDISP2,AMOV36H,*0FFH ;滅掉不需要的三個數(shù)碼管MOV37H,*0FFHMOV38H,*0FFHMOVR6,*6 ;6個數(shù)碼管MOVR0,*DISP0LOOP1:MOVA,R0MOV SBUF,

16、A;串行輸出一個數(shù)據(jù)到595JNB TI,$CLRTIINC R0DJNZR6,LOOP1SETBRCLKNOPCLRRCLKRETTURNBCD:MOV A,DISP;將0255轉(zhuǎn)換為0.005.00MOVB,*51 ;255用5.00來表示所以每一個1.00為51DIVAB ;A/B 商是個位的值, 余數(shù)還需要下面進(jìn)一步運(yùn)算;(余數(shù)*10/51=十分位)MOVDISP2,AMOVA,*10MULAB;將余數(shù)乘以10得到低8位放入A, 高8位放入B(0 OR 1)MOVR6,B;B的值可以判斷A*B>255 OR A*B<=255ADDA,R6;數(shù)值修正MOVB,*51DIVAB;低8位除以51CJNER6,*1,NE*T1ADDA,*5 ;假設(shè)高8位是1,(256-1)/51NE*T1:MOVDISP1,A;十分位MOVA,*10MULABMOVR6,BADDA,R6MOVB,*51DIVABCJNER6,*1,NE*T2ADDA,*5NE*T2:MOVDISP0,A ;百分位RETDISPLED:M

溫馨提示

  • 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

提交評論