




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上單片機(jī)實(shí)驗(yàn)報(bào)告孫洪悅 20112.1實(shí)驗(yàn)1:匯編程序?qū)嶒?yàn)12.1.2 自我完成實(shí)驗(yàn) (1)實(shí)驗(yàn)內(nèi)容 將片內(nèi) RAM 30H 單元中的 8 位二進(jìn)制數(shù)轉(zhuǎn)換成 10 進(jìn)制數(shù)。希望轉(zhuǎn)換后的結(jié)果保存于 31H和 32H,31H 低 4 位存放個(gè)位,高 4 位存放十位,32H 低 4 位存放百位,高 4 位為 0自我完成實(shí)驗(yàn)程序ORG 0000H AJMPMAINORG 0030HMAIN:MOV SP,#62H ;MOV 30H,#0AFH;先將30H寫上100 MOV R0,#32H;將百位地址送R0MOV A,30H;這句寫錯(cuò)了,應(yīng)該是將30H的內(nèi)容送給A,而不是30,我
2、誤寫成了#30MOV B,#64H;除數(shù)為100DIV AB ;AB相除MOV R0,A ;將百位的數(shù)送給32H地址MOV A,B ;將余數(shù)送給AMOV B,#0AH;將10送BDIV AB;AB相除SWAP A ;高低四位交換DEC R0 ;R0減1 到31HMOV R0,A ;將十位送31H的高四位MOV A,BANL A,#0FHORL 31H,A;31高低四位分別存十和百位SJMP $END2.1總結(jié)與提高:本程序用了一個(gè)小算法,一個(gè)三位數(shù)數(shù)X除以100,商a為百位,余數(shù)為:X-100*a再用此余數(shù)除10,商為十位,余數(shù)為個(gè)位。2.2實(shí)驗(yàn)2:匯編程序?qū)嶒?yàn)22.2.2 自我完成實(shí)驗(yàn) (1
3、)實(shí)驗(yàn)內(nèi)容 將片內(nèi) RAM 30H 開始的 32 個(gè)單元中分布著隨機(jī)的有符號(hào) 8 位二進(jìn)制數(shù),請按從小到大的順序進(jìn)行排序,排序后的數(shù)據(jù)仍然保存到 30H 開始的 32 個(gè)單元中(低地址存放小數(shù)據(jù))。程序及其注釋 自我完成實(shí)驗(yàn)程序第一種排序方法:ORG 0000H AJMP MAINORG 0090HMAIN:MOV SP,#62H ;MOV A,#0HMOV R1,#30HMOV R7,#20HMOV DPTR,#TABLEMOV R0,#1FH;執(zhí)行31次LOOP1:MOVC A,A+DPTRMOV R1,AINC R1INC DPTRMOV A,#0HDJNZ R7,LOOP1 ;執(zhí)行32
4、次循環(huán),在30-4F寫表格數(shù)據(jù)LOOP2: MOV R1,#30H;將起始地址給R1MOV A,R0;R0為執(zhí)行31次MOV R2,A;把進(jìn)行一次冒泡的次數(shù)存到R2中LOOP3: CLR C ;清CMOV A,R1; ;比較開始,取第一個(gè)數(shù)MOV R3,A; 騰出累加器INC R1;指向下一個(gè)地址SUBB A,R1;取后一個(gè)數(shù) ,并與前一個(gè)數(shù)相減,看是否有CY位溢出,溢出則說明前一個(gè)數(shù)小,要換位 JC LOOP4;前一個(gè)數(shù)小的情況下,兩個(gè)數(shù)交換位置,否則,繼續(xù)執(zhí)行MOV A,R3;把后一個(gè)數(shù)存到累加器下XCH A,R1 ;累加器的數(shù)與R1指向的數(shù)交換位置, 即 ;前一個(gè)數(shù)和后一個(gè)數(shù)交DEC R
5、1 ;R1自減,準(zhǔn)備將后面的數(shù)存到前面MOV R1,A;將后面的數(shù)存到前面INC R1 ;R1自增,準(zhǔn)備下次轉(zhuǎn)換,以上五行為交換LOOP4: DJNZ R2,LOOP3;R2自減,為下次冒泡準(zhǔn)備DJNZ R0,LOOP2 ;跳回去進(jìn)行下一輪冒泡SJMP $ORG 30HTABLE: DB 1,3,9,2,17,4,11,6DB 5,20,100,64,21,14,79,35DB 92,7,91,23,65,16,13,18DB 18,73,65,101,27,19,62,69END第二種排序方法;ORG 0000H AJMP MAINORG 0090HMAIN:MOV SP,#62H ;MOV
6、 A,#0HMOV R1,#30HMOV R7,#20HMOV DPTR,#TABLEMOV R0,#1FH;執(zhí)行31次LOOP1:MOVC A,A+DPTRMOV R1,AINC R1INC DPTRMOV A,#0HDJNZ R7,LOOP1 ;執(zhí)行32次循環(huán),在30-4F寫表格數(shù)據(jù)LOOP2: MOV R1,#30H;將起始地址給R1MOV A,R0;R0為執(zhí)行31次MOV R2,A;把進(jìn)行一次冒泡的次數(shù)存到R2中MOV R4,#30H;R4存的是最大數(shù)的位置LOOP3: CLR C ;清CMOV A,R1; ;比較開始,取第一個(gè)數(shù)MOV R3,A; 騰出累加器INC R1;指向下一個(gè)地
7、址MOV A,R4SUBB A,R1;取后一個(gè)數(shù) ,并與前一個(gè)數(shù)相減,看是否有CY位溢出,溢出則說明前一個(gè)數(shù)小,要換位 JC LOOP4;前一個(gè)數(shù)小的情況下,兩個(gè)數(shù)交換位置,否則,繼續(xù)執(zhí)行;MOV A,R3;把后一個(gè)數(shù)存到累加器下;XCH A,R1 ;累加器的數(shù)與R1指向的數(shù)交換位置, 即 ;前一個(gè)數(shù)和后一個(gè)數(shù)交;DEC R1 ;R1自減,準(zhǔn)備將后面的數(shù)存到前面;MOV R1,A;將后面的數(shù)存到前面;INC R1 ;R1自增,準(zhǔn)備下次轉(zhuǎn)換,以上五行為交換DJNZ R2,LOOP3;R2自減,為下次冒泡準(zhǔn)備LOOP4: MOV A,R1 ;MOV R4,ADJNZ R2,LOOP3DJNZ R0
8、,LOOP2 ;跳回去進(jìn)行下一輪冒泡SJMP $ORG 30HTABLE: DB 1,3,9,2,17,4,11,6DB 5,20,100,64,21,14,79,35DB 92,7,91,23,65,16,13,18DB 18,73,65,101,27,19,62,69END總結(jié)與提高:所謂冒泡法,有兩種理解方式:1.相鄰的兩個(gè)數(shù)比較,大的數(shù)放后一個(gè)位置,直到一輪循環(huán)后,最后一個(gè)數(shù)為此輪遍歷的最大的數(shù)。2相鄰的兩個(gè)數(shù)比較,記下最大的數(shù)的位置,直到一輪遍歷后將找到的最大的數(shù)與最后一個(gè)數(shù)交換,實(shí)現(xiàn)排序2.3 C語言程序?qū)嶒?yàn) 自我完成實(shí)驗(yàn) (1)實(shí)驗(yàn)內(nèi)容 將片內(nèi) RAM 30H 開始的 32 個(gè)單
9、元中分布著隨機(jī)的有符號(hào) 8 位二進(jìn)制數(shù),請按從小到大的順序進(jìn)行排序,排序后的數(shù)據(jù)仍然保存到 30H 開始的 32 個(gè)單元中(低地址存放小數(shù)據(jù))。#include#include#include#define uchar unsigned char#define uint unsigned int/uchar data a32 _at_ 0x30;/設(shè)定數(shù)組a的起始地址為30uchar data a32 _at_ 0x30;/設(shè)定數(shù)組a的起始地址為30uint i _at_ 0x55;uchar data b32 = 1,3,9,2,17,4,11,6,5,20,100,64,21,14,79,
10、35,92,7,91,23,65,16,13,18,18,73,65,101,27,19,62,69;void fuzhi()uchar j;/srand(5);for(j=0;j0;j-)while(t=at+1)temp = at+1;at+1 = at;at = temp;t+;t = 0;*/第二種方法實(shí)現(xiàn)冒泡 void maopao(uchar c,uchar num)uchar j = 0,temp = 0,m = 0;uchar weizhi = 0;uchar maxloc = 31;for(j=num;j0;j-)weizhi = 0;for(m=1;m=j;m+)if(cw
11、eizhicm)weizhi = m;temp = cweizhi;cweizhi = cmaxloc;cmaxloc = temp;maxloc-;void main()fuzhi();maopao(a,31);while(1);總結(jié)與提高:C語言編寫的代碼也是用兩種方法寫的,其中一種已經(jīng)被注釋掉了。所謂冒泡法,有兩種理解方式:1.相鄰的兩個(gè)數(shù)比較,大的數(shù)放后一個(gè)位置,直到一輪循環(huán)后,最后一個(gè)數(shù)為此輪遍歷的最大的數(shù)。2相鄰的兩個(gè)數(shù)比較,記下最大的數(shù)的位置,直到一輪遍歷后將找到的最大的數(shù)與最后一個(gè)數(shù)交換,實(shí)現(xiàn)排序3.1基本并行I/O口實(shí)驗(yàn)實(shí)驗(yàn)功能為: 當(dāng)按鍵 SW1 按下之后,D1-D8 輪流
12、點(diǎn)亮,點(diǎn)亮?xí)r間為 100ms,當(dāng)按鍵停下后,停止輪換,再次按下后繼續(xù)輪換。ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#60HMOV P2,#0FFHMOV 20H,#0FEHMOV R7,#8LOOP:SETB P1.0JNB P1.0,LOOP1AJMP LLOOP1:MOV A,20HMOV P2,AACALL DELAYMOV A,P2RL AMOV 20H,AL:DJNZ R7,LOOPDELAY:MOV R6,#200L1:MOV R5,#250DJNZ R5,$DJNZ R6,L1RETSJMP $END總結(jié)與提高:1.按鍵去抖動(dòng)是必要的 2用移
13、位操作可以很方便的實(shí)現(xiàn)一些功能3多使用調(diào)試工具,程序不是寫出來的,而是調(diào)出來的。3.2擴(kuò)展并行I/O口實(shí)驗(yàn)實(shí)驗(yàn)功能為: 仿真實(shí)現(xiàn)交通信號(hào)燈控制功能。 控制順序?yàn)椋?南北綠燈亮,同時(shí)東西紅燈亮 10s; 南北黃燈亮,同時(shí)東西紅燈亮 2s; 南北紅燈亮,同時(shí)東西綠燈亮 10s; 東西黃燈亮,同時(shí)南北紅燈亮 2s; 重復(fù)。ORG 0000HAJMP STARTORG 0003HSTART:MOV SP,#60HMOV P0,#0FFHCLR P3.6STATE1:MOV DPTR,#0FE00HMOV A,#0F3HMOVX DPTR,AMOV DPTR,#0FD00HMOV A,#0CHMOVX
14、DPTR,AACALL DELAY2STATE2:MOV DPTR,#0FE00HMOV A,#0C3HMOVX DPTR,AMOV DPTR,#0FD00HMOV A,#0FHMOVX DPTR,AACALL DELAY1STATE3:MOV DPTR,#0FE00HMOV A,#0FCHMOVX DPTR,AMOV DPTR,#0FD00HMOV A,#03HMOVX DPTR,AACALL DELAY2STATE4:MOV DPTR,#0FE00HMOV A,#3CHMOVX DPTR,AMOV DPTR,#0FD00HMOV A,#0FHMOVX DPTR,AACALL DELAY1A
15、JMP STATE1DELAY1:MOV R7,#20DL2:MOV R6,#200DL1:MOV R5,#250DJNZ R5,$DJNZ R6,DL1DJNZ R7,DL2RETDELAY2:MOV R7,#100L2:MOV R6,#200L1:MOV R5,#250DJNZ R5,$DJNZ R6,L1DJNZ R7,L2RETEND總結(jié)與提高:1.用匯編寫程序比難的一個(gè)地方我覺得就是控制邏輯不是那么直觀,所以一定要注意程序的格式規(guī)范,盡量使用縮進(jìn),標(biāo)號(hào)命名盡量通俗易懂2用移位操作可以很方便的實(shí)現(xiàn)一些功能3多使用調(diào)試工具,程序不是寫出來的,而是調(diào)出來的多積累一些常用代碼,比如延時(shí)程序,
16、只需簡單改些參數(shù)就可以再次使用3.3靜態(tài)LED顯示實(shí)驗(yàn)控制要求 圖 3.9 中 7SEG2 為十位顯示數(shù)碼管,7SEG1 為個(gè)位顯示數(shù)碼管,KEY_LOAD 為倒計(jì)時(shí)初值按鈕,KEY_START 為倒計(jì)時(shí)啟動(dòng)按鈕。要求實(shí)現(xiàn)的功能是:當(dāng) KEY_LOAD 按鈕按下時(shí)加載倒計(jì)時(shí)初值(如:10s),當(dāng)按下 KEY_START 按鈕時(shí),開始倒計(jì)時(shí),每過 1s,計(jì)時(shí)器減 1,直到減到“00”為止。減到“00”時(shí)使 P3.0 引腳上的 LED 按 10Hz 頻率進(jìn)行閃爍,直到再次按下 KEY_LOAD 按鈕才重新加載初值,并熄滅 LED。再次按下 KEY_START 按鈕又一次開始倒計(jì)時(shí),如此反復(fù)。ORG
17、 0000HAJMP MAINORG 000BHAJMP T0INTORG 001BHAJMP T1INTORG 0100HMAIN:SETB P1.0SETB P1.1CLR P1.2CLR P1.3CLR P1.4MOV R4,#0MOV TMOD,#21HMOV TH1,#56;直接賦值就可MOV TL1,#56MOV TH0,#0B1HMOV TL0,#0E0HSETB ET1SETB ET0SETB EASETB TR1SETB TR0WAIT1: ;定時(shí)器中斷等待JB P1.2,S4JB P1.3,S5SJMP WAIT1 S4:CLR P1.2;清標(biāo)志位MOV R3,#9MOV
18、DPTR,#0FD00H;十位顯示0,個(gè)位循環(huán)MOV A,#0C0HMOVX DPTR,ALOOP:;09-00循環(huán)JB P1.2,S4;判斷顯示過程中有無按鍵被按下JB P1.3,S5MOV A,R3MOV DPTR,#TABLEMOVC A,A+DPTRMOV DPTR,#0FE00HMOVX DPTR,ALCALL DELAY2;此處容易出錯(cuò)誤DEC R3MOV A,R3INC A;JNZ LOOPSETB P1.4;到00后才閃燈SJMP WAIT1 S5:;裝載初值CLR P1.3;清標(biāo)志位MOV DPTR,#0FD00HMOV A,#0F9HMOVX DPTR,AMOV DPTR,
19、#0FE00HMOV A,#0C0HMOVX DPTR,ASJMP WAIT1 TABLE:DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90HT0INT:MOV TH0,#0B1H;T0工作在方式1 ,要裝載初值MOV TL0,#0E0H;T0工作在方式1,20ms 檢測按鍵JNB P1.1, S2;檢測裝載初值鍵JNB P1.0, S3;檢測開始鍵RETIS2:CLR P1.4;檢測裝載初值鍵SETB P3.0;熄滅LEDSETB P1.3;裝載顯示初值RETIS3:CLR P1.4;檢測開始鍵SETB P3.0;熄滅LEDSETB P1.2R
20、ETIT1INT:;T1 工作在方式2 8位重裝JB P1.4,S6RETIS6:INC R4MOV A,#50;LED 閃爍CLR CSUBB A,R4JZ S1 RETIS1:;控制LEDMOV R4,#0CPL P3.0;RETI;必須要寫中斷返回DELAY2:;1s 換一次MOV R7,#10L2:MOV R6,#200L1:MOV R5,#250DJNZ R5,$DJNZ R6,L1DJNZ R7,L2RETEND總結(jié)與提高:1.此程序我用了的位重裝的定時(shí)方式我用定時(shí)器每隔,來檢測有無按鍵按下,但是也得加入按鍵去抖動(dòng)的程序3.4矩陣鍵盤掃描實(shí)驗(yàn)控制要求 圖 3.11 中 D1D8 八
21、個(gè)發(fā)光二極管構(gòu)成彩色旋轉(zhuǎn)燈,D9D13 為檔位指示燈,一檔旋轉(zhuǎn)速度最慢(周期 1s,D13 亮),二檔較快(周期 0.8s,D12 亮),三檔更快(周期 0.6s,D11 亮),四檔再快(周期 0.4s,D10 亮),五檔最快(周期 0.2s,D10 亮)。四個(gè)按鍵 KEY0-KEY1用于設(shè)定旋轉(zhuǎn)方向?yàn)轫槙r(shí)針旋轉(zhuǎn)或者逆時(shí)針旋轉(zhuǎn),KEY2-KEY3 用于增快或則減慢旋轉(zhuǎn)速度。ORG 0000HAJMP MAINORG 0003HAJMP PINT0ORG 000BHAJMP T0INTORG 0013HAJMP PINT1ORG 0100HMAIN:CLR P0.6CLR P0.7MOV SP,
22、#40HMOV R4,#1 ;默認(rèn)為1檔;the fastest 0.2sMOV R3,#0 ;控制旋轉(zhuǎn)間隔時(shí)間MOV P1,#07FHMOV TMOD,#21H;定時(shí)器初始化;MOV TH1,#56;直接賦值就可;MOV TL1,#56MOV TH0,#0B1HMOV TL0,#0E0H;SETB ET1SETB ET0SETB EA;SETB TR1;SETB PT0;響應(yīng)外部中斷0 就把定時(shí)器給關(guān)了,所以還是兩級(jí)嵌套;SETB PX0;?;SETB PX1;必須設(shè)計(jì)成高優(yōu)先級(jí)SETB EX0SETB EX1SETB IT0;邊沿觸發(fā)SETB IT1WAIT1:SJMP WAIT1S2:ORG 0200HPINT0:;控制旋轉(zhuǎn)與停止旋轉(zhuǎn)CPL P2.0LCALL Delay10ms;按鍵去抖動(dòng)CPL TR0;關(guān)閉打開定時(shí)器,實(shí)現(xiàn)開始和暫停RETIPINT1:;控制循環(huán)變速CPL P2.1LCALL Delay10ms;按鍵去抖動(dòng)INC R4CLR CMOV A,#6SUBB A,R4JZ S8RETIS8:MOV R4,#1RETIDelay10ms:;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 書籍設(shè)備采購合同范本
- 課程建設(shè)研究課題申報(bào)書
- 企業(yè)廠區(qū)租賃合同范本
- 小學(xué)數(shù)學(xué)思維課題申報(bào)書
- 共建工廠合作合同范例
- 勞動(dòng)合同范本 計(jì)時(shí)
- 農(nóng)機(jī)隊(duì)耕種合同范本
- 印譜制作合同范例
- 體育產(chǎn)業(yè)趨勢分析與未來市場展望
- Unit+1+Cultural+Heritage+Grammar導(dǎo)學(xué)案 高中英語人教版必修第二冊
- 壓縮空氣管道施工組織設(shè)計(jì)
- 落實(shí)中央八項(xiàng)規(guī)定改進(jìn)干部作風(fēng)建設(shè)課程
- 橋本氏甲狀腺炎-課件
- 第1課調(diào)查旅游意向(課件)四年級(jí)下冊信息技術(shù)粵教版
- 《中學(xué)生心理輔導(dǎo)》第一章 心理輔導(dǎo)的基礎(chǔ)知識(shí)
- 032021年英語高考全國甲卷研讀語法填空詳解
- COMMERCIAL INVOICE 商業(yè)發(fā)票模板
- 部編人教版四年級(jí)下冊道德與法治 第6課 有多少浪費(fèi)本可避免 教學(xué)課件PPT
- 精神衛(wèi)生醫(yī)聯(lián)體服務(wù)平臺(tái)
- 設(shè)備日常點(diǎn)檢標(biāo)準(zhǔn)作業(yè)指導(dǎo)書
評(píng)論
0/150
提交評(píng)論