![單片機(jī)試驗(yàn)程序_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/78c9091b-08c8-4ca6-a2e6-da9531396d59/78c9091b-08c8-4ca6-a2e6-da9531396d591.gif)
![單片機(jī)試驗(yàn)程序_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/78c9091b-08c8-4ca6-a2e6-da9531396d59/78c9091b-08c8-4ca6-a2e6-da9531396d592.gif)
![單片機(jī)試驗(yàn)程序_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/78c9091b-08c8-4ca6-a2e6-da9531396d59/78c9091b-08c8-4ca6-a2e6-da9531396d593.gif)
![單片機(jī)試驗(yàn)程序_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/78c9091b-08c8-4ca6-a2e6-da9531396d59/78c9091b-08c8-4ca6-a2e6-da9531396d594.gif)
![單片機(jī)試驗(yàn)程序_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/17/78c9091b-08c8-4ca6-a2e6-da9531396d59/78c9091b-08c8-4ca6-a2e6-da9531396d595.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1.修改例程一的源程序(1)將A寄存器的初值改為80H (正邏輯,數(shù)據(jù)位為1表示發(fā)光二極管點(diǎn)亮),再對(duì)源程序進(jìn)行簡(jiǎn)單修改,使程序運(yùn)行后發(fā)光二極管 情況與修改前相同。(2)將LED向左循環(huán)移位點(diǎn)亮改為向右循環(huán)移位點(diǎn)亮(3)加快LED循環(huán)移位點(diǎn)亮的速度$include (C8051F020.inc);C8051F02x系列單片機(jī)信息頭文件包含偽指令I(lǐng)NIT:LCALL Init_Device調(diào)用初始設(shè)置子程序(1)MOVA,#080H;賦初始值并在發(fā)光二極管上顯示該數(shù)值CPLAMOVP3,ALOOP:CALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALL
2、DELAYCALLDELAY(2)RLA;A寄存器內(nèi)容后移1位并送1發(fā)光二極管 顯示MOVP3,AAJMPLOOP;無(wú)限循環(huán)DELAY:MOVR5,#0H ;延時(shí)子程 序D1:MOVR6,#00HDJNZR6,$DJNZR5,D1RET$include (Init_Device.inc);初始設(shè)置子程序文件包含偽指令 END(3)可刪除幾個(gè) CALL DELAY語(yǔ)句即可加快循環(huán)速度2.將傷程二0F的循環(huán)顯示改為09的循環(huán)顯示$include (C8051F020.inc);C8051F02x系列單片機(jī)信息頭文件包ORG0000HLJMPINIT含偽指令TAB:DB0C0H,0F9H,0A4H,
3、0B0H,099H,092H,082H,0F8H;字符段碼表 0-7DB080H,090H;字符段碼表8-FINIT:lcall Init_Device;調(diào)用初始設(shè)置子程序INIT1:MOVR1,#00H;操作數(shù)據(jù)初始值MOVA,R1MAIN:MOVDPTR,#TAB;讀取與A中數(shù)值對(duì)應(yīng)的顯示段碼MOVCA,A+DPTRMOVP5,A;段碼送并行口 1顯示CALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALL
4、DELAYINCR1操作數(shù)據(jù)(R1)增1MOVA,R1C C C C C ,#0AH,MAIN ;檢查操作數(shù)據(jù)是否大于顯示范圍(SJMPINIT1;無(wú)限循環(huán)F)D D DD D :MOVR5,#0H;延時(shí)子程序D1:MOVR6,#0HDJNZR6,$DJNZR5,D1RET$include (Init_Device.inc);初始設(shè)置子程序文件包含偽指令END1,例程5程序修改 將KEY2、KEY4的功能對(duì)調(diào)每次停下再啟動(dòng)以后,更改發(fā)光二極管點(diǎn)亮的循環(huán)方向$include(C8051F020.inc);C8051F02x系列單片機(jī)信息頭文件包含偽指令ORG0000HLJMPINITIAL ;主
5、程序入口ORG0003HLJMPSTOP;外中斷0服務(wù)程序 入口,開(kāi)始鍵(STAR)ORG0013HLJMPSTAR口口 工口停止鍵(STOP) ;外中斷1服務(wù)程序入口ORG0100HINITIAL:LCALLInit_Device;調(diào)用初始設(shè)置子程序MOVP3,#0FFH;熄滅全部發(fā)光二極管MOVA,#0FFHMOVDPTR,#7F80HMOVXDPTR,A;清除數(shù)碼管2 (NUM2 )顯示MOVA,#0FEH;點(diǎn)亮發(fā)光二極管的初始數(shù)據(jù)MOVR1,#1H;發(fā)光二極管點(diǎn)亮位置初值MOVR4,#0FHMOVIP,#04H;設(shè)置INT0 (開(kāi)始鍵STAR)為高優(yōu)先級(jí)MOVTCON,#05H;外中斷
6、采用邊沿觸發(fā)SETBEX0;INT1 (停止鍵 STOP)開(kāi)中斷SETBEA;開(kāi)放中斷LOOP:CLREA;關(guān)閉中斷CJNER4, #0FH, LPRLACJNER4,#0FH,LPMOVP3,ACJNER4,#0FH,LPINCR1CJNER4,#0FH,LPSETBEA;停止鍵的中斷服 務(wù)程序STOP:PUSHACC;保護(hù)A寄存器內(nèi)容MOVA,R1;讀取發(fā)光二極管點(diǎn)亮位置計(jì)數(shù)值MOVDPTR,#TABMOVCA,A+DPTR ;獲取發(fā)光二極管點(diǎn)亮位置計(jì)數(shù)值的顯示段碼MOVDPTR,#7F80HMOVXDPTR,A;發(fā)光二極管點(diǎn)亮位置計(jì)數(shù)值的顯示數(shù)據(jù)送顯示SETBEX1;INT0 (啟動(dòng)鍵
7、STAR)開(kāi)中斷JNZ $;等待重新啟動(dòng)條件-A=0MOVA,#0FFHMOVXDPTR,A;清除數(shù)碼管2 (NUM2)顯示CLREX1;禁止INT0中斷(避 免程序誤動(dòng)作)POPACC;恢復(fù)A寄存器內(nèi)容CLRIE1;清除INT1 (停止鍵STOP)中斷標(biāo)志(避免程序誤動(dòng)作RETI;中斷返回LP:LCALLDELAY1LCALLDELAY1LCALLDELAY1LCALLDELAY1CJNER1,#8H,LOOPMOVR1,#0HSJMPLOOPCLREACJNER4,#0F0H,LOOPRRACJNER4,#0F0H,LOOPMOVP3,ACJNER4,#0F0H,LOOPDECR1CJNE
8、R4,#0F0H,LOOPSETBEALCALLDELAY1LCALLDELAY1LCALLDELAY1LCALLDELAY1CJNER1,#0H,LPMOVR1,#8HSJMPLP;啟動(dòng)鍵的中斷服務(wù)程序STAR:MOV A,#00H;設(shè)置啟動(dòng)條件-A=0CLRPUSHMOVCPLMOVPOPRETIIE0 ;清除INT0 (啟動(dòng)鍵STOP)中斷標(biāo)志(避免程序誤動(dòng)ACCA,R4AR4,AACC;中斷返回作)TAB:DB0C0H,0F9H,0A4H,0B0H,099H;0-4段碼DB092H,082H,0F8H,080H;5-8段碼DELAY1:MOVR6,#0;延時(shí)子程序D1:MOVDJNZD
9、JNZRETR7,#0R7,$R6,D1;初始設(shè)置子程序文件包含偽指令$include (Init_Device.inc)END2.修改例程6,將計(jì)數(shù)范圍由0-F擴(kuò)展至00-FF (使用定時(shí)器/計(jì)時(shí)器0),并在2位數(shù)碼管上用10進(jìn)制數(shù)顯示計(jì)數(shù)結(jié)果(00-99)$include(C8051F020.inc);C8051F02x系列單片機(jī)信息頭文件包含偽指令DP2EQU07F80HDP_LEQU30H;低位數(shù)值暫存器DP_HEQU31H;高位數(shù)值暫存器MAIN:LCALLInit_Device;調(diào)用初始設(shè)置子程序MOVTMOD,#00000101B;C/T0 工作 于方式 2MOVA,#0;顯示初
10、值為0MOVDP_L,AMOVDP_H,ACALLDISPLAY;調(diào)用顯示子程序顯示初值0MOVTL0,#0;C/T0置初值0SETB TR0;啟動(dòng)計(jì)數(shù)器0LOOP:MOVA,TL0;讀計(jì)數(shù)器0的計(jì)數(shù)值CJNEA,#0AH,L1MOVTL0,#0MOVA,#0INCDP_HMOVA,DP_HCJNEA,#0AH,MMMOVDP_H,#0MM:MOVA,#0L1:MOVDP_L,A;在NUM2顯示計(jì)數(shù)器0的計(jì)數(shù)值CALLDISPLAY;調(diào)用顯示子程序顯示計(jì)數(shù)值SJMPLOOP;無(wú)限次循環(huán);顯示子程序DISPLAY:MOVA,DP_L;讀低位顯示值CALLDECODE;調(diào)用換碼子程序MOVDPTR
11、,#DP2;顯示段碼送NUM2MOVXDPTR,AMOVA,DP_H;讀高位顯示值CALLDECODE;調(diào)用換碼子程序MOVP5,ARET;換碼子程序DECODE:MOVDPTR,#TABMOVCA,A+DPTRRETTAB:DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H;顯示段碼 0-7DB080H,090H,088H,083H,0C6H,0A1H,086H,08EH;顯示段碼 8-F$include (Init_Device.inc);初始設(shè)置子程序文件包含偽指令END通過(guò)對(duì)例程8的程序進(jìn)行修改和上機(jī)調(diào)試,改變?cè)闯绦虻墓δ?將發(fā)送1、2、3、4的ASCI
12、I碼改為發(fā)送A、B、C、D的ASCII 碼將接收的第2、第3字節(jié)數(shù)據(jù)的顯示位置交換$include (C8051F020.inc);C8051F02x系列單片機(jī)信息頭文件包含偽指令NUM2EQU07F80H;NUM2地址NUM3EQU07F90H;NUM3地址NUM4EQU07FA0H;NUM4地址NUM5EQU07FB0H;NUM5地址TIM_LEQU0FDH;I/C1低字節(jié)計(jì)數(shù)值TIM_HEQU0FDH;I/C1高字節(jié)計(jì)數(shù)值REC_BUF0EQU32H;數(shù)據(jù)接收緩沖器0REC_BUF1EQU34H;數(shù)據(jù)接收緩沖器1REC_BUF2EQU33H;數(shù)據(jù)接收緩沖器2FLAGBIT01H;數(shù)據(jù)發(fā)送
13、完成標(biāo)志ORG 0000HLJMP MAIN;轉(zhuǎn)主程序ORG0023HLJMPRECE;轉(zhuǎn)串行通信中斷程序;主程序MAIN:Icall Init_Device;C8051F02x系列單片機(jī)信息頭文件包含偽指令MOVA,#0FFHMOVP5,AMOVDPTR,#NUM2MOVXDPTR,A;清除數(shù)碼管NUM1的顯示MOVDPTR,#NUM3MOVXDPTR,A;清除數(shù)碼管NUM2的顯示MOVDPTR,#NUM4MOVXDPTR,A;清除數(shù)碼管NUM3的顯示MOVDPTR,#NUM5MOVXDPTR,A;清除數(shù)碼管NUM4的顯示MOVR6,#0;通信操作狀態(tài)寄存器清除MOVSP,#40H;堆棧棧底
14、設(shè)置MOVTMOD,#00100000B;T/C1 方式 2MOVTH1,#TIM_H;T/C1重裝填值MOVSETBMOVSETBSETBTL1,#TIM_LTR1SCON0,#01010000BESEA;T/C1計(jì)數(shù)值;啟動(dòng)T/C1;串口方式1;串口中斷允許;開(kāi)中斷;主循環(huán)LOOP:CALLKEYBOARD;調(diào)用案件狀態(tài)分析子程序CJNEA,#0FFH,L0;按鍵狀態(tài)發(fā)生變化轉(zhuǎn)L0CLRFLAG;按鍵狀態(tài)無(wú)變化,清除發(fā)送完成 標(biāo)志SJMPLOOPL0:JBFLAG,LOOP;數(shù)據(jù)發(fā)送完 成,返回主循環(huán)MOVR7,A;否則,鍵值暫存R7MOVA,#043H;CMOVSBUF0,A;發(fā)送字符C
15、的ASCII碼值CALLDELAYMOVA,#04FH;OMOVSBUF0,A;發(fā)送字符O的ASCII碼值CALLDELAYMOVA,#04DH;MMOVSBUF0,A;發(fā)送字符M的ASCII碼值CALLDELAYMOVA,#04BH;KMOVSBUF0,A;發(fā)送字符K的ASCII碼值CALLDELAYMOVA,#40H;發(fā)送數(shù)字0的ASCII碼值MOVSBUF0,ACALLDELAYMOVA,R7ADDA,#40H;生成鍵值的ASCII碼值MOVSBUF0,A;發(fā)送鍵值的ASCII碼值SETBFLAG;置位發(fā)送完成標(biāo)志SJMPLOOP;中斷服務(wù)程序RECE:JNBTI,REC1;非發(fā)送轉(zhuǎn)接收
16、處理CLRTI;否則,清除發(fā)送中斷標(biāo)志RETI;中斷返回REC1:PUSHACC;保護(hù)累加器AMOVA,SBUF0;讀接收緩沖器CJNER6,#0,REC2CJNEA,#43H,REC6;接收狀態(tài)為0,進(jìn)行字符C的過(guò)濾處理MOVR6,#1;接收狀態(tài)改為1SJMPREC6REC2:CJNER6,#1,REC3CJNEA,#4FH,REC5;接收狀態(tài)為1,進(jìn)行字符O的過(guò)濾處理MOVR6,#2;接收狀態(tài)改為2SJMPREC6REC3:CJNER6,#2,REC4CJNEA,#4DH,REC5;接收狀態(tài)為2,進(jìn)行字符M的過(guò)濾處理MOVR6,#3;接收狀態(tài)改為3MOVR5,#3;數(shù)據(jù)接收計(jì)數(shù)器設(shè)置為3S
17、JMPREC6REC4:CJNER6,#3,REC6PUSHACC;接收狀態(tài)為3,暫存接收的內(nèi)容MOVA,#REC_BUF0ADDA,R5MOVR0,A;生成接收數(shù)據(jù)存放緩沖器地址POPACC;恢復(fù)接收數(shù)據(jù)至A寄存器MOVR0,A;保存接收的數(shù)據(jù)DECR5;接收數(shù)據(jù)計(jì)數(shù)器減1CJNER5,#0,REC6CALLDISPLAY;接收數(shù)據(jù)計(jì)數(shù)器減為0,進(jìn)行接收結(jié)果的顯示REC5:MOVR6,#0;接收狀態(tài)恢復(fù)為0 (就緒狀態(tài))REC6:POPACC;恢復(fù)累加器ACLRRI;清除接收中斷標(biāo)志RETI;中斷返回KEYBOARD:MOVA,P2;讀按鍵狀態(tài)輸入端口RRARRARRCA;KEY1有效鍵值移
18、入位累加器 CJCK1;鍵值無(wú)效轉(zhuǎn)KEY2鍵值的分析MOVA,#1;否則,KEY1代碼送A寄存器SJMPK5K1:RRCA;KEY2有效鍵值移入位累加器 CJCK2;鍵值無(wú)效轉(zhuǎn)KEY3鍵值的分析MOVA,#2;否則,KEY2代碼送A寄存器SJMPK5K2:RRCA;KEY3有效鍵值移入位累加器 CJCK3;鍵值無(wú)效轉(zhuǎn)KEY4鍵值的分析MOVA,#3;否則,KEY3代碼送A寄存器SJMPK5K3:RRCA;KEY4有效鍵值移入位累加器 CJCK4;鍵值無(wú)效轉(zhuǎn)按鍵無(wú)效處理MOVA,#4;否則,KEY4代碼送A寄存器SJMPK5K4:K5:MOVRETA,#0FFH;按鍵無(wú)效代碼送A寄存器DISPLAY:MOVA,REC_BUF2;讀取接收的第2字節(jié)數(shù)據(jù)SWAPA;局、低4位交換ANLA,#0FH;分離局4位后效數(shù)值CALLDECODE;換碼
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年業(yè)務(wù)咨詢合同范本
- 2025年新晉策劃商協(xié)議標(biāo)準(zhǔn)版
- 2025年高效電子貨運(yùn)定艙協(xié)議
- 2025年醫(yī)療服務(wù)協(xié)同與發(fā)展協(xié)議
- 2025年債務(wù)擔(dān)保合同示范
- 2025年中行商業(yè)房產(chǎn)貸款合同標(biāo)準(zhǔn)范本
- 2025年供應(yīng)鏈管理業(yè)務(wù)綁定協(xié)議
- 2025年度策劃職員離職信息保密合同
- 2025年個(gè)人養(yǎng)殖魚(yú)塘租賃合同模板
- 2025年國(guó)有產(chǎn)權(quán)轉(zhuǎn)讓合同模板
- 集成墻板購(gòu)銷(xiāo)合同范本(2024版)
- 2023九年級(jí)歷史下冊(cè) 第三單元 第一次世界大戰(zhàn)和戰(zhàn)后初期的世界第10課《凡爾賽條約》和《九國(guó)公約》教案 新人教版
- 偏癱患者肩關(guān)節(jié)脫位的綜合康復(fù)治療
- 持續(xù)質(zhì)量改進(jìn)項(xiàng)目匯報(bào)
- 2024版買(mǎi)賣(mài)二手車(chē)合同范本
- 阻燃更要消煙一文讓你掌握無(wú)煙阻燃改性技術(shù)的方方面面
- 第15課 列強(qiáng)入侵與中國(guó)人民的反抗斗爭(zhēng) 教學(xué)設(shè)計(jì)-2023-2024學(xué)年中職高一上學(xué)期高教版(2023)中國(guó)歷史全一冊(cè)
- 2023年人教版七年級(jí)歷史下冊(cè)《全冊(cè)課件》
- 新大象版科學(xué)三年級(jí)下冊(cè)全冊(cè)知識(shí)點(diǎn) (復(fù)習(xí)用)
- 2024年黑龍江省專升本考試生理學(xué)護(hù)理學(xué)專業(yè)測(cè)試題含解析
- 建筑設(shè)計(jì)工程設(shè)計(jì)方案
評(píng)論
0/150
提交評(píng)論