版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗一 存儲器塊清零一、實驗?zāi)康?. 掌握匯編程序設(shè)計及其調(diào)試程序方法2 掌握存儲器的讀寫方法二、實驗內(nèi)容1. 編寫程序,將外部數(shù)據(jù)存儲器中0100h-01ffh單元的內(nèi)容全部清零。2. 修改程序,將存儲器中0100h-01ffh單元的內(nèi)容置成 0ffh,0feh,0fdh,01h,00h。三、程序框圖 圖1 數(shù)據(jù)塊清零程序框圖四、程序清單blockequ4000horg0000hmovdptr, #block ; dptr = _ movr0, #0 ; r0 = _ clra ; a = _loop: movxdptr, a ; dptr = _ incdptr ; dptr = _ dj
2、nzr0, loop ; r0 = _ , z = _ , pc = _ ljmp$ ; r0 = _ , pc = _ end五、實驗步驟1. 新建匯編文件(文件名.asm),輸入源程序,另存于d: m51的目錄下。2. 匯編源程序。3. 分別用單步、斷點和連續(xù)執(zhí)行的方法調(diào)試程序,并觀察寄存器和存儲器的變化。實驗二 數(shù)據(jù)塊移動一、實驗?zāi)康?. 掌握匯編程序設(shè)計及其調(diào)試程序方法。2 掌握數(shù)據(jù)塊的移動方法。二、實驗內(nèi)容 將指定源首地址和長度的存儲塊移到指定目標(biāo)位置1編寫程序,用地址加一的方法將0000h-00ffh單元的內(nèi)容復(fù)制到0100h-01ffh的存儲單元中。2編寫程序,用地址減一的方法完
3、成上述功能。三、程序框圖圖2 程序框圖1 圖3 程序框圖2四、實驗步驟1. 新建匯編文件(文件名.asm),輸入源程序,另存于d: m51的目錄下。2. 匯編源程序。3. 分別用單步、斷點和連續(xù)執(zhí)行的方法調(diào)試程序,并觀察寄存器和存儲器的變化。五、程序清單991 用地址加一的方法實現(xiàn)數(shù)據(jù)塊移動; 0000h -00ffh -> 0100h-01ffhdata1 equ 0000hdata2 equ 0100h org 0000h mov dptr,#data2 mov p2, dph mov r0, dpl mov dptr, #data1 mov r7,#00hloop1: movx a
4、, dptr movx r0, a inc dptr inc r0 cjne r0, #00h, goon1 inc p2goon1: djnz r7, loop1 ljmp $ end2 用地址減一的方法實現(xiàn)數(shù)據(jù)塊移動; 0000h -00ffh -> 0100h-01ffhdata1 equ 00ffhdata2 equ 01ffh org 0000h mov dptr,#data2 mov p2, dph mov r0, dpl mov dptr, #data1 mov r7,#00hloop1: movx a, dptr movx r0, a dec dpl mov a, dpl
5、 cjne a, #00h, coon1 dec dphcoon1: dec r0 cjne r0, #00h, goon2 dec p2goon2: djnz r7, loop1 ljmp $ end五、思考題 當(dāng)源數(shù)據(jù)塊的地址與目標(biāo)數(shù)據(jù)塊的地址重疊時,將會發(fā)生什么情況?應(yīng)采用哪種方法編寫程序,才能保證所復(fù)制的數(shù)據(jù)與源數(shù)據(jù)完全一致。 先運行實驗一的第二段程序,將本次實驗的目標(biāo)地址修改為0180h,觀察哪個程序運行結(jié)果正確。再將本次實驗的目標(biāo)地址分別修改為0080h,觀察哪個程序運行結(jié)果正確。實驗三 二進(jìn)制到bcd碼轉(zhuǎn)換一、 實驗?zāi)康?掌握簡單的數(shù)值轉(zhuǎn)換算法2基本了解數(shù)值的各種表達(dá)方法二、實驗
6、內(nèi)容計算機(jī)中的數(shù)值有各種表達(dá)方式,掌握各種數(shù)制之間的轉(zhuǎn)換是單片機(jī)應(yīng)用的基礎(chǔ)。1. 編寫一個雙字節(jié)二進(jìn)制數(shù)到壓縮bcd碼的轉(zhuǎn)換子程序,其:入口條件:待轉(zhuǎn)換的雙字節(jié)二進(jìn)制數(shù)在r6、r7中。出口信息:轉(zhuǎn)換后的三字節(jié)壓縮碼整數(shù)在r3、r4、r5中。2 編寫一個雙字節(jié)二進(jìn)制數(shù)到分離bcd碼的轉(zhuǎn)換子程序,其:入口條件:待轉(zhuǎn)換的雙字節(jié)二進(jìn)制數(shù)在r6、r7中出口信息:轉(zhuǎn)換后的分離碼在5ah5fh的6個單元中。3. 編寫程序,將20h、21h的雙字節(jié)二進(jìn)制數(shù)轉(zhuǎn)換為分離碼存放在5ah5fh的6個單元中。三、 程序框圖四、程序清單;主程序xsq equ 60h org 0000h mov r6, #0ffh mov
7、 r7,#0ffhlcall flbcd ;調(diào)分離bcd碼程序 sjmp $;二進(jìn)制數(shù)轉(zhuǎn)換分離bcd碼程序flbcd: lcall hb2 ;調(diào)bcd碼轉(zhuǎn)換程序 mov a, r3 anl a, #0f0h swap a mov xsq, a mov a, r3 anl a, #0fh mov xsq+1, a mov a, r4 anl a, #0f0h swap a mov xsq+2, a mov a, r4 anl a, #0fh mov xsq+3, a mov a, r5 anl a, #0f0h swap a mov xsq+4, a mov a, r5 anl a, #0fh
8、mov xsq+5, a ret;二進(jìn)制數(shù)轉(zhuǎn)換壓縮bcd碼子程序;入口條件:待轉(zhuǎn)換的十六進(jìn)制數(shù)在r6、r7中,;出口信息:轉(zhuǎn)換后的bcd碼在r3、r4、r5中hb2: clra; movr3, a ; movr4, a mov r5, a movr2, #10h;雙字節(jié)需循環(huán)16次hb20:mova, r7;高位移到cy中 rlca movr7, amova, r6rlcamovr6, amova, r5;bcd碼帶進(jìn)位自身相加addca, r5daa;十進(jìn)制調(diào)整movr5, amova, r4addca, r4daamovr4, amova, r3addca, r3movr3, a ;萬位不
9、超過6不用調(diào)整djnzr2, hb20;16位沒有處理完轉(zhuǎn) ret五、實驗步驟 分別用單步、斷點和連續(xù)執(zhí)行的方法調(diào)試程序,并觀察寄存器和存儲器的變化。六、思考題 如何將分立bcd碼和壓縮bcd碼轉(zhuǎn)換成二進(jìn)制碼。實驗四 四位壓縮bcd碼加法實驗一、 實驗?zāi)康?了解設(shè)計壓縮bcd碼加法程序的方法2掌握加法指令、十進(jìn)制調(diào)整指令的使用方法。二、實驗內(nèi)容把30h、31h單元中的四位十進(jìn)制數(shù)與32h、33h單元中的四位十進(jìn)制數(shù)相加,結(jié)果存放在30h、31h、32h單元。(數(shù)據(jù)存放格式為低位在前,高位在后)程序運行前,應(yīng)先將30h-33h單元的加數(shù)和被加數(shù)賦值。執(zhí)行結(jié)果填在表1-1中。表1預(yù)置被加數(shù)預(yù)置被加
10、數(shù)程序運行結(jié)果(30h)(31h)(32h)(33h)(30h)(31h)(32h)十進(jìn)制34127856三、 程序框圖 四、 程序清單 data1 equ 30h ; 加數(shù)地址data2 equ 32h ; 被加數(shù)地址 org 0000h mov r0, #data1 mov r1, #data2 mov a, r0 add a, r1 da a mov r0, a inc r0 inc r1 mov a, r0 addc a, r1 da a mov r0, a inc r0 clr a addc a, #0 mov r0, a sjmp $ end實驗五 布爾操作實驗一、 實驗?zāi)康?掌握
11、位操作指令的使用方法2了解用程序?qū)崿F(xiàn)組合邏輯電路的功能二、實驗內(nèi)容用程序?qū)崿F(xiàn)圖6所示組合邏輯電路的功能位地址: 07h 06h 05h 04h 03h 02h 01h 00hvwuxyzq字節(jié)地址: 20h 三、 程序清單qbit00h zbit02hybit03hxbit04hubit05hwbit06hvbit07h 表2執(zhí)行前執(zhí)行后(20h)f0(20h)f4(20h)(20h)org0000hmovc, vorlc, wmovpsw.4, cmovc, xorlc, /yanlc, psw.4anlc, /zmovq, csjmp$end 程序執(zhí)行前,將表2中值填入20h單元,執(zhí)行結(jié)果
12、填入表中,并對執(zhí)行結(jié)果加以說明。實驗六 排序?qū)嶒炓?、實驗?zāi)康牧私鈹?shù)據(jù)排序的簡單算法。二、實驗內(nèi)容寄存器50h5fh單元中存放16個數(shù)據(jù),編寫一個程序?qū)?shù)據(jù)按照從小到大的次序排列?!懊芭菖判颉彼惴ㄊ牵簭牡谝粋€數(shù)據(jù)開始相鄰的數(shù)據(jù)比較,若次序不對,兩數(shù)據(jù)交換位置,第一遍比較(n-1)次后,最大的數(shù)據(jù)已排到數(shù)組的尾部,第二遍僅需比較(n-2)就夠了,共比較(n-1)遍就完成排序,這樣共有兩重循環(huán)。帶標(biāo)志位的“冒泡排序”算法:設(shè)置一個標(biāo)志位,進(jìn)入外循環(huán)時標(biāo)志位清0,在內(nèi)循環(huán)中相鄰兩數(shù)交換位置時,標(biāo)志位置1,內(nèi)循環(huán)結(jié)束后測試標(biāo)志位,若為0表示內(nèi)循環(huán)沒有進(jìn)行數(shù)據(jù)交換,數(shù)據(jù)排序已經(jīng)完成,可以結(jié)束外循環(huán),不必循
13、環(huán)(n-1)遍,從而節(jié)省了操作時間。三、程序框圖 四、程序清單size equ 10h ; 數(shù)據(jù)個數(shù)array equ 50h ; 數(shù)據(jù)起始地址change equ 0 ; 交換標(biāo)志 org 0000h mov r6, #size-1sort: mov a, r6 mov r7, a mov r0, #array clr changesort1: mov a, r0 mov r2, a inc r0 mov b, r0 cjne a, b, sort2 sjmp sort3sort2: jc sort3 ; 前小后大, 不交換 setb change ; 前大后小, 置交換標(biāo)志 xch a,
14、r0 ; 交換 dec r0 xch a, r0 inc r0sort3: djnz r7, sort1 jnb change, sort4 djnz r6, sortsort4: ljmp $ end實驗七 i/o接口實驗一一、實驗?zāi)康?、 掌握單片機(jī)i/o接口的使用方法。2、 熟悉延時子程序的編寫和使用。二、實驗內(nèi)容用p1口設(shè)計一個交通信號控制器,分別用紅、黃、綠兩組發(fā)光二極管作為交通指示信號。程序使兩組發(fā)光二極管同時按紅、黃、綠和綠、黃、紅循環(huán)點亮。 修改程序, 使紅、綠燈點亮?xí)r間比黃燈點亮?xí)r間長一倍。三、實驗電路及連線連線連接孔1連接孔21p1.7l02p1.6l13p1.5l24p1
15、.3l65p1.2l56p1.1l4四、程序框圖 四、程序清單 org 0000hloop: mov a, #88h mov r2, #3outp1: mov p1, a rl a ;右移一位 call delay djnz r2, outp1 ljmp loopdelay: ;延時程序 mov r6, #0 mov r7, #0delay1: djnz r7, $ djnz r6, delay1 ret查指令表可知:執(zhí)行djnz指令需兩個機(jī)器周期時間,當(dāng)晶振為 6mhz 時,一個機(jī)器周期為12/6mhz(s),執(zhí)行延時程序所需時間為:(256+1)×256×2×
16、12/6 = 263168 (s) 實驗八 i/o接口實驗二一、實驗?zāi)康?、 了解單片機(jī)與外設(shè)傳送信息的方式。2、 掌握查詢方式的原理、特點及編程方法。二、實驗內(nèi)容假設(shè)在工業(yè)過程控制中,有一臺機(jī)器當(dāng)k1=0時 正常工作,l0(綠燈)亮,一旦出現(xiàn)故障(k2=0),則綠燈滅,停止工作,同l2(紅燈)閃爍報警,待故障排除(k2=1)時,解除報警,繼續(xù)工作(紅燈滅。綠燈亮)。完成硬件連接,并編寫程序,編寫程序,用單片機(jī)實現(xiàn)這樣的過程。三、實驗電路及連線連線連接孔1連接孔21p1.7l02p1.6l13p1.3s04p1.2s1四、程序框圖 五、程序清單通過查詢開關(guān)k1、k2的輸入狀態(tài),org0000h
17、決定輸出控制狀態(tài):是綠燈亮(正常工main:movp1,#0fh作),還是紅燈閃爍(故障報警)。l1:jbp1.3, l1 l2:cplp1.7acalldlyjbp1.2, l2clrp1.7setbp1.6l3:lcalldlyjnbp1.2, l3sjmpmaindly:movr6, #80hmovr7, #00hdly1:djnzr7, $djnzr6, dly1ret 六、思考題 修改程序,實現(xiàn)在任何時候斷開k1時, 均能使綠燈熄滅。 實驗九 外部中斷實驗一、實驗?zāi)康?、 了解單片機(jī)與外設(shè)傳送信息的方式。2、 掌握中斷方式的原理、特點及編程方法。二、實驗內(nèi)容 當(dāng)int0中斷時,讀取開
18、關(guān)k1、k2的狀態(tài),并用led0、led1指示出k1、k2的狀態(tài)。完成硬件連接,并編寫程序,實現(xiàn)上述功能。 三、實驗電路及連線連線連接孔1連接孔21p1.7l02p1.6l13p1.3s04p1.2s15int0單脈沖輸出四、程序框圖 四、程序清單org0000hljmpmainorg0013hljmpwbint main:movp1, #0fhsetbit0setbex0setbeasjmp$wbint:movp1, #0fhmovc, p1.3cplcmovp1.7, cmovc, p1.2cplc movp1.6, c movr7, #80hmovr6, #00hwbint1: djnz
19、r6, $ djnz r7, wbint1 reti實驗十 數(shù)碼管顯示實驗一、實驗?zāi)康?、 掌握數(shù)碼管動態(tài)顯示的編程方法。2、 了解輸出端口的擴(kuò)展方法。二、實驗內(nèi)容1. 用兩片8d鎖存器74hc374擴(kuò)展兩個8位輸出口,實現(xiàn)對數(shù)碼管的顯示控制。2. 設(shè)計一個數(shù)碼管的動態(tài)顯示程序,將顯示緩沖區(qū)5ah-5fh中的內(nèi)容在數(shù)碼管上顯示出來。三、 實驗電路及連線連線:key_cs 連接cs0 字形代碼表字形dpgfedcba字形碼0001111113fh10000011006h2010110115bh3010011114fh40110011066h5011011016dh6011111017dh7000
20、0011107h8011111117fh9011011116fha0111011177hb011111007chc0011100139hd010111105ehe0111100179hf0111000171h暗0000000000h段碼輸出地址:8004h;位碼輸出地址:8002h四、實驗說明1 六個數(shù)碼管的8 位段碼、6位位碼是由兩片74ls374輸出控制,實現(xiàn)動態(tài)方式顯示。位碼經(jīng)uln2003倒相驅(qū)動后,選擇相應(yīng)的顯示位。將key/led cs 接到cs0 上,則段碼地址為8004h,位碼地址為8002h。2. 調(diào)用顯示程序前,應(yīng)先在顯示緩沖區(qū)5ah5fh存入六個字節(jié)00h0fh的顯示數(shù)據(jù)
21、。五、程序框圖程序框圖如圖所示。六、程序框圖outbit equ 8002h ; 位控制口outseg equ 8004h ; 段控制口xsq equ 5ah ; 顯示緩沖 org 0000h ljmp main main: mov sp, #60h mov xsq, #01h mov xsq+1, #02h mov xsq+2, #03h mov xsq+3, #04h mov xsq+4, #05h mov xsq+5, #06hmain1: lcall disp ljmp maindisp: mov r2, #00100000b ; 從左邊開始顯示 mov r1, #6 ; 共6個數(shù)碼管
22、 mov r0, #xsqdisp1: mov dptr, #outbit mov a,#0 movx dptr, a ;關(guān)所有數(shù)碼管 mov a, r0 mov dptr, #ledmap movc a, a+dptr ;查表取段碼 mov dptr, #outseg movx dptr, a ;輸出段碼 mov a, r2 mov dptr, #outbit movx dptr, a ;輸出位碼 rr a ;為顯示下一位作準(zhǔn)備 mov r2, a inc r0 mov r7, #00h djnz r7, $ ;延時 djnz r1, disp1 retledmap: ; 數(shù)碼管段碼表 db
23、 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h db 00h end七、思考題延時時間延長至1秒以上,觀察程序執(zhí)行結(jié)果有何變化。實驗十一 鍵盤掃描、顯示實驗一、實驗?zāi)康?、 掌握鍵盤掃描原理及編程方法。2、 掌握輸入、輸出端口的擴(kuò)展方法及鍵盤、顯示電路的設(shè)計方法。二、實驗內(nèi)容在數(shù)碼管顯示實驗電路的基礎(chǔ)上,用8路雙向驅(qū)動器74ls245擴(kuò)展4路輸入端口,與位碼輸出端口組成鍵盤掃描電路,并編寫一個鍵盤掃描和數(shù)碼顯示程序,把按鍵輸入的鍵碼在數(shù)碼管上顯示出來。實驗程序可分為三個模塊1.
24、主程序:循環(huán)調(diào)用顯示模塊和鍵盤掃描模塊,如果有鍵按下,則將所按下的鍵碼送顯示緩沖區(qū)。2. 顯示模塊:將顯示緩沖區(qū)的內(nèi)容在數(shù)碼管上動態(tài)顯示。3. 鍵盤掃描模塊:掃描鍵盤,并獲取按鍵的鍵碼。三、 實驗電路及連線連線:key_cs 連接cs0段碼輸出地址:8004h;列掃描地址:8002h行碼地址:8001h四、實驗說明實驗箱提供了一個6×4的小鍵盤,向列掃描地址(8002h)逐列輸出低電平,然后從行碼地址(8001h)讀回。如果有鍵按下,則相應(yīng)行的值應(yīng)為低,如果無鍵按下,由于上拉的作用,行碼為高。這樣就可以通過輸出的列碼和讀取的行碼來判斷按下的是什么鍵。在判斷有鍵按下后,要有一定的延時,
25、防止鍵盤抖動。地址中的x 是由key/led cs 決定,參見地址譯碼。做鍵盤和led實驗時,需將key/led cs 接到相應(yīng)的地址譯碼上。以便用相應(yīng)的地址來訪問。例如將key/led cs信號接cs0 上,則列掃描地址為8002h,行碼地址為8001h。列掃描碼還可以分時用作led的位選通信號。五、程序框圖五、程序清單outbit equ 8002h ; 位控制口outseg equ 8004h ; 段控制口jpin equ 8001h ; 鍵盤讀入口xsw equ 20h ; 按鍵顯示位置xsq equ 5ah ; 顯示緩沖 org 0000h ljmp mainmain: mov sp
26、, #60h mov xsq, #20h ;清顯示 mov xsq+1, #20h mov xsq+2, #20h mov xsq+3, #20h mov xsq+4, #20h mov xsq+5, #20h mov xsw, #xsq ;main1: lcall disp ;調(diào)顯示程序 lcall jpsm ;調(diào)鍵盤掃描 cjne a, #10h, main2main2: jnc main1 ;非數(shù)字鍵轉(zhuǎn) mov r0,xsw cjne r0, #xsq+6, main3main3: jc main4 ;非第六位轉(zhuǎn) mov xsq, #10h ; mov xsq+1, #10h mov x
27、sq+2, #10h mov xsq+3, #10h mov xsq+4, #10h mov xsq+5, #10h mov r0, #xsq ;從最高位顯示main4: mov r0, a inc r0 mov xsw, r0 ;保存顯示指針 ljmp main1jpsm: mov dptr, #outbit mov p2, dph mov r0, #low(jpin) mov r1, #11011111b mov r2, #6 ;掃描列數(shù)jpsm1: mov a, r1 movx dptr, a ;輸出列碼 rr a mov r1, a movx a, r0 ;讀行碼 cpl a anl
28、a, #0fh jnz jpsm2 ;該列有鍵入 djnz r2, jpsm1 mov a, #0ffh ;沒有鍵按下轉(zhuǎn) ljmp jpsm7jpsm2: mov r1, a ;鍵值 = 列 x 4 + 行 mov a, r2 dec a rl a rl a mov r2, a ;r2= (r-1)*4 mov a, r1 ;r1 為讀入的行值 mov r1, #4jpsm3: rrc a ;移位找出所在行 jc jpsm4 inc r2 ;r2 = r2+ 行值 djnz r1, jpsm3jpsm4: mov a,r2 ;取出鍵碼 mov dptr, #jmbiao movc a, a+d
29、ptr mov r2, ajpsm5: mov dptr, #outbit ; 等鍵釋放 clr a movx dptr, a mov r7, #0 mov r6, #0jpsm6: djnz r6, $; djnz r7, jpsm6 movx a, r0 cpl a anl a, #0fh jnz jpsm5 mov a,r2jpsm7: retjmbiao: ; 鍵碼定義 db 16h, 15h, 14h, 0ffh db 13h, 12h, 11h, 10h db 0dh, 0ch, 0bh, 0ah db 0eh, 03h, 06h, 09h db 0fh, 02h, 05h, 08
30、h db 00h, 01h, 04h, 07hdisp: mov r2, #00100000b ;先顯示高位 mov r1, #6 ;共6個數(shù)碼管 mov r0, #xsqdisp1: mov dptr, #outbit mov a,#0 movx dptr, a ;關(guān)顯示 mov a, r0 mov dptr, #ledmap movc a, a+dptr ;查表取段碼 mov dptr, #outseg movx dptr, a ;輸出段碼 mov a, r2 mov dptr, #outbit movx dptr, a ;輸出位碼 rr a ;準(zhǔn)備顯示下一位 mov r2, a inc
31、r0 mov r7, #00h djnz r7, $ ;延時 djnz r1, disp1 retledmap: ;數(shù)碼管段碼表 db 3fh,06h,5bh,4fh;不帶小數(shù)點 db 66h,6dh,7dh,07h db 7fh,6fh,77h,7ch db 39h,5eh,79h,71h db 0bfh,86h,0dbh,0cfh ;帶小數(shù)點 db 0e6h,0edh,0fdh,87h db 0ffh,0efh,0f7h,0fch db 0b9h,0deh,0f9h,0f1h db 00h end實驗十二 計數(shù)器實驗一、實驗?zāi)康恼莆?031內(nèi)部定時器/計數(shù)器的使用方法。二、實驗內(nèi)容內(nèi)部定時
32、器t0工作于計數(shù)器模式和方式1,對p3.4(t0)引腳的輸入脈沖進(jìn)行計數(shù)。并將計數(shù)值在數(shù)碼管顯示出來。三、實驗電路及連線 顯示電路見實驗十。連線連接孔1連接孔21cs0key/led_cs 2t0單脈沖輸出 cs0 - - - - - key/led_cs t0 - - - - - 單脈沖輸出四、實驗說明當(dāng)定時器t0工作在計數(shù)器方式時,可對t0(p3.4)引腳上的外部脈沖進(jìn)行計數(shù),外部脈沖每出現(xiàn)一個下降沿,由th0、tl0組成的計數(shù)器就加一。由于單片機(jī)識別一個從1到0的跳變需兩個機(jī)器周期,(24個振蕩周期),則輸入脈沖的最高頻率為fosc/24。 實驗系統(tǒng)的fosc=6mhz,則輸入脈沖的最高
33、頻率為250 khz。五、程序框圖五、程序清單outbit equ 8002h ; 位控制口outseg equ 8004h ; 段控制口xsq equ 5ah ; 顯示緩沖 org 0000h ljmp mainmain: mov sp, #60h mov xsq, #20h ;清顯示 mov xsq+1, #20h mov xsq+2, #20h mov xsq+3, #20h mov xsq+4, #20h mov xsq+5, #20h mov tmod, #05h ;t0:方式1,記數(shù)器 mov th0, #0 mov tl0, #0 setb tr0 ; 開始記數(shù)main1: lc
34、all disp ;調(diào)顯示程序 mov a, th0 ;顯示記數(shù)值高位 swap a anl a, #0fh mov xsq, a mov a, th0 anl a, #0fh mov xsq+1, a mov a, tl0 ;顯示記數(shù)值低位 swap a anl a, #0fh mov xsq+2, a mov a, tl0 anl a, #0fh mov xsq+3, a ljmp main1disp: mov r2, #00100000b ;從左邊開始顯示 mov r1, #4 ; 共6個數(shù)碼管 mov r0, #xsqdisp1: mov dptr, #outbit mov a,#0
35、movx dptr, a ; 關(guān)所有數(shù)碼管 mov a, r0 mov dptr, #ledmap movc a, a+dptr ;查表取段碼 mov dptr, #outseg movx dptr, a ;輸出段碼 mov a, r2 mov dptr, #outbit movx dptr, a ;輸出位碼 rr a ;為顯示下一位作準(zhǔn)備 mov r2, a inc r0 mov r7, #00h djnz r7, $ ;延時 djnz r1, disp1 retledmap: ; 數(shù)碼管段碼表 db 3fh, 06h, 5bh, 4fh ;不帶小數(shù)點 db 66h, 6dh, 7dh, 0
36、7h db 7fh, 6fh, 77h, 7ch db 39h, 5eh, 79h, 71h db 0bfh, 86h, 0dbh, 0cfh ;帶小數(shù)點 db 0e6h, 0edh, 0fdh, 87h db 0ffh, 0efh, 0f7h, 0fch db 0b9h, 0deh, 0f9h, 0f1h db 00h end六、思考題修改程序,將計數(shù)值用十進(jìn)制顯示。實驗十三 定時器實驗電子時鐘一、實驗?zāi)康?. 掌握8031內(nèi)部定時器/計數(shù)器的使用和編程方法。2. 進(jìn)一步掌握中斷處理程序的編程方法。3. 進(jìn)一步掌握數(shù)碼管的動態(tài)顯示方法。二、實驗內(nèi)容利用定時器t0和數(shù)碼管顯示電路,設(shè)計一個電子時鐘,顯示格式:xx xx xx ,由左至右分別為:時、分、秒。定時器每100s中斷一次,在中斷服務(wù)程序中,對中斷次數(shù)進(jìn)行計數(shù),計數(shù)10000次就是1秒。然后再對秒計數(shù)得到分和小時值,并送入顯示緩沖區(qū)。顯示子程序模塊可參照實驗十?dāng)?shù)碼管顯示實驗。三、實驗電路及連線 顯示電路見實驗十。連接孔1連接孔2cs0key/led_cs 四、實驗說明定時工作方式,其實質(zhì)也是一種計數(shù)方式,只不過計數(shù)脈沖由內(nèi)部提供,每個機(jī)器周期計數(shù)器加一,因此計數(shù)速率固定為fosc
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度主題餐飲店長創(chuàng)意管理聘用協(xié)議3篇
- 2024版新媒體內(nèi)容創(chuàng)作與分發(fā)合同
- 2025年度醫(yī)療器械代工與品牌推廣管理協(xié)議4篇
- 2025年度新型瓷磚研發(fā)生產(chǎn)合作協(xié)議范本4篇
- 2024版箱式變壓器的采購合同范本
- 2024版鋁合金辦公室隔斷門制作與安裝協(xié)議
- 中國片壯晶石項目投資可行性研究報告
- 2025年版?zhèn)€人房產(chǎn)出售交易資金監(jiān)管及風(fēng)險控制合同2篇
- 2025年度個人房產(chǎn)買賣合同(含物業(yè)費)4篇
- 2025年度個人消費貸款合同補(bǔ)充協(xié)議(綠色金融)4篇
- 品牌策劃與推廣-項目5-品牌推廣課件
- 信息學(xué)奧賽-計算機(jī)基礎(chǔ)知識(完整版)資料
- 發(fā)煙硫酸(CAS:8014-95-7)理化性質(zhì)及危險特性表
- 數(shù)字信號處理(課件)
- 公路自然災(zāi)害防治對策課件
- 信息簡報通用模板
- 社會組織管理概論全套ppt課件(完整版)
- 火災(zāi)報警應(yīng)急處置程序流程圖
- 耳鳴中醫(yī)臨床路徑
- 安徽身份證號碼前6位
- 分子生物學(xué)在動物遺傳育種方面的應(yīng)用
評論
0/150
提交評論