定时器计数器实验C语言程序,单片机定时器计数器实验报告.docx
單片機(jī)定時(shí)器計(jì)數(shù)器實(shí)驗(yàn)報(bào)告
單片機(jī)定時(shí)器計(jì)數(shù)器實(shí)驗(yàn)報(bào)告
篇一:單片機(jī)計(jì)數(shù)器實(shí)驗(yàn)報(bào)告 計(jì)數(shù)器實(shí)驗(yàn)報(bào)告 ㈠ 實(shí)驗(yàn)?zāi)康摹 ?. 學(xué)習(xí)單片機(jī)內(nèi)部定時(shí)/計(jì)數(shù)器的使用和編程方法; 2. 進(jìn)一步掌握中斷處理程序的編程方法?! 、?實(shí)驗(yàn)器材 1. 2. 3. 4. 5. G6W仿真器一臺(tái) MCS—51實(shí)驗(yàn)板 一臺(tái) PC機(jī) 一臺(tái) 電源 一臺(tái) 信號(hào)發(fā)生器 一臺(tái) ?、?實(shí)驗(yàn)內(nèi)容及要求 8051內(nèi)部定時(shí)計(jì)數(shù)器,按計(jì)數(shù)器模式和方式1工作,對(duì)P3.4(T0)引腳進(jìn)行計(jì)數(shù),使用8051的T1作定時(shí)器,50ms中斷一次,看T0內(nèi)每50ms來(lái)了多少脈沖,將計(jì)數(shù)值送顯(通過(guò)LED發(fā)光二極管8421碼來(lái)表示),1秒后再次測(cè)試。 ?、?實(shí)驗(yàn)說(shuō)明 1. 本實(shí)驗(yàn)中內(nèi)部計(jì)數(shù)器其計(jì)數(shù)器的作用,外部事件計(jì)數(shù)器脈沖由P3.4引入 定時(shí)器T0。單片機(jī)在每個(gè)機(jī)器周期采樣一次輸入波形,因此單片機(jī)至少需要兩個(gè)機(jī)器周期才能檢測(cè)到一次跳變,這就要求被采樣電平至少維持一個(gè)完整的機(jī)器周期,以保證電平在變化之前即被采樣,同時(shí)這就決定了輸入波形的頻率不能超過(guò)機(jī)器周期頻率。 2. 計(jì)數(shù)脈沖由信號(hào)發(fā)生器輸入(從T0端接入)。 3. 計(jì)數(shù)值通過(guò)發(fā)光二極管顯示,要求:顯示兩位,十位用L4~L1的8421 碼表示,個(gè)位用L8~L5的8421碼表示 4. 將脈搏檢查模塊接入電路中,對(duì)脈搏進(jìn)行計(jì)數(shù),計(jì)算出每分鐘脈搏跳動(dòng) 次數(shù)并顯示 ㈤ 實(shí)驗(yàn)框圖(見(jiàn)下頁(yè)) 程序源代碼 ORG 00000H LJMP MAIN ORG 001BH AJMP MAIN1 MAIN: MOV SP,#60H MOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H ;T0的中斷入口地址 ;設(shè)置T1做定時(shí)器,T0做計(jì)數(shù)器,都于方式1工作 ;裝入中斷次數(shù) ;裝入計(jì)數(shù)值低8位 ;裝入計(jì)數(shù)值高8位 MOV TH0,#00H SETB TR1 ;啟動(dòng)定時(shí)器T1 SETB TR0 ;啟動(dòng)計(jì)數(shù)器T0 SETB ET1 ;允許T1中斷 SETB EA ;允許CPU中斷 SJMP $;等待中斷 MAIN1: PUSH PSW PUSH ACC CLR TR0 CLR TR1 MOV TL1,#0B0H MOV TH1,#3CH DJNZ 20H,RETUNT MOV 20H ,#14H SHOW: MOV R0,TH0 MOV R1,TL0 MOV A,R1 MOV B,#0AH DIV AB MOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOV C,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,C MOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0 MOV P1.7,C ;保護(hù)現(xiàn)場(chǎng) ;裝入計(jì)數(shù)值低8位 ;裝入計(jì)數(shù)值高8位,50ms;允許T1中斷 ;未到1s,繼續(xù)計(jì)時(shí) ;1s到重新開(kāi)始 ;顯示計(jì)數(shù)器T0的值;讀計(jì)數(shù)器當(dāng)前值 ;將計(jì)數(shù)值轉(zhuǎn)為十進(jìn)制 ;顯示部分,將A中保存的十位賦給L0~L3 將B中保存的各位轉(zhuǎn)移到A中 ;將個(gè)位的數(shù)字顯示在L4~L7上 ; RETUNT: MOV TL0,#00H;將計(jì)數(shù)器T0清零 MOV TH0,#00H SETB TR0SETB TR1POP ACCPOP PSW RETI ;中斷返回 在頻率為1000HZ時(shí),L0~L7顯示為50;頻率為300HZ時(shí),L0~L7顯示為15,結(jié)果正確,程序可以正確運(yùn)行。 思考與小結(jié): 有了前面的定時(shí)器實(shí)驗(yàn)做基礎(chǔ),定時(shí)器計(jì)數(shù)器的選擇以及初始化已經(jīng)不再是難點(diǎn),本次試驗(yàn)的重點(diǎn)是寫入兩個(gè)中斷判斷程序和十六進(jìn)制到十進(jìn)制的轉(zhuǎn)化和顯示。 MOV TL1,#0B0H ;裝入計(jì)數(shù)值低8位 MOV TH1,#3CH;裝入計(jì)數(shù)值高8位,50ms MOV 20H,#14H ;未到1s,繼續(xù)計(jì)時(shí) DJNZ 20H,RETUNT;1s到重新開(kāi)始 RETUNT: MOV TL0,#00H;將計(jì)數(shù)器T0清零 MOV TH0,#00H 由于書上詳細(xì)解釋了設(shè)置中斷時(shí)間的問(wèn)題,所以中斷程序并沒(méi)有什么太大的難點(diǎn),主要是要思考一下程序的執(zhí)行順序問(wèn)題。 十六進(jìn)制到十進(jìn)制的轉(zhuǎn)化和顯示使我們這次實(shí)驗(yàn)遇到的比較大的困難,剛開(kāi)始采用的是DA指令,由于沒(méi)有搞清楚它的實(shí)質(zhì)錯(cuò)誤的使用了DA。DA用于十六進(jìn)制到BCD的轉(zhuǎn)換,不能用于十六進(jìn)制到8421的轉(zhuǎn)換,于是我們思考了很久
總結(jié)
以上是生活随笔為你收集整理的定时器计数器实验C语言程序,单片机定时器计数器实验报告.docx的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。