版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1.修改例程一的源程序(1)將A寄存器的初值改為80H (正邏輯,數據位為1表示發(fā)光二極管點亮),再對源程序進行簡單修改,使程序運行后發(fā)光二極管 情況與修改前相同。(2)將LED向左循環(huán)移位點亮改為向右循環(huán)移位點亮(3)加快LED循環(huán)移位點亮的速度$include (C8051F020.inc);C8051F02x系列單片機信息頭文件包含偽指令INIT:LCALL Init_Device調用初始設置子程序(1)MOVA,#080H;賦初始值并在發(fā)光二極管上顯示該數值CPLAMOVP3,ALOOP:CALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALL
2、DELAYCALLDELAY(2)RLA;A寄存器內容后移1位并送1發(fā)光二極管 顯示MOVP3,AAJMPLOOP;無限循環(huán)DELAY:MOVR5,#0H ;延時子程 序D1:MOVR6,#00HDJNZR6,$DJNZR5,D1RET$include (Init_Device.inc);初始設置子程序文件包含偽指令 END(3)可刪除幾個 CALL DELAY語句即可加快循環(huán)速度2.將傷程二0F的循環(huán)顯示改為09的循環(huán)顯示$include (C8051F020.inc);C8051F02x系列單片機信息頭文件包ORG0000HLJMPINIT含偽指令TAB:DB0C0H,0F9H,0A4H,
3、0B0H,099H,092H,082H,0F8H;字符段碼表 0-7DB080H,090H;字符段碼表8-FINIT:lcall Init_Device;調用初始設置子程序INIT1:MOVR1,#00H;操作數據初始值MOVA,R1MAIN:MOVDPTR,#TAB;讀取與A中數值對應的顯示段碼MOVCA,A+DPTRMOVP5,A;段碼送并行口 1顯示CALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALLDELAYCALL
4、DELAYINCR1操作數據(R1)增1MOVA,R1C C C C C ,#0AH,MAIN ;檢查操作數據是否大于顯示范圍(SJMPINIT1;無限循環(huán)F)D D DD D :MOVR5,#0H;延時子程序D1:MOVR6,#0HDJNZR6,$DJNZR5,D1RET$include (Init_Device.inc);初始設置子程序文件包含偽指令END1,例程5程序修改 將KEY2、KEY4的功能對調每次停下再啟動以后,更改發(fā)光二極管點亮的循環(huán)方向$include(C8051F020.inc);C8051F02x系列單片機信息頭文件包含偽指令ORG0000HLJMPINITIAL ;主
5、程序入口ORG0003HLJMPSTOP;外中斷0服務程序 入口,開始鍵(STAR)ORG0013HLJMPSTAR口口 工口停止鍵(STOP) ;外中斷1服務程序入口ORG0100HINITIAL:LCALLInit_Device;調用初始設置子程序MOVP3,#0FFH;熄滅全部發(fā)光二極管MOVA,#0FFHMOVDPTR,#7F80HMOVXDPTR,A;清除數碼管2 (NUM2 )顯示MOVA,#0FEH;點亮發(fā)光二極管的初始數據MOVR1,#1H;發(fā)光二極管點亮位置初值MOVR4,#0FHMOVIP,#04H;設置INT0 (開始鍵STAR)為高優(yōu)先級MOVTCON,#05H;外中斷
6、采用邊沿觸發(fā)SETBEX0;INT1 (停止鍵 STOP)開中斷SETBEA;開放中斷LOOP:CLREA;關閉中斷CJNER4, #0FH, LPRLACJNER4,#0FH,LPMOVP3,ACJNER4,#0FH,LPINCR1CJNER4,#0FH,LPSETBEA;停止鍵的中斷服 務程序STOP:PUSHACC;保護A寄存器內容MOVA,R1;讀取發(fā)光二極管點亮位置計數值MOVDPTR,#TABMOVCA,A+DPTR ;獲取發(fā)光二極管點亮位置計數值的顯示段碼MOVDPTR,#7F80HMOVXDPTR,A;發(fā)光二極管點亮位置計數值的顯示數據送顯示SETBEX1;INT0 (啟動鍵
7、STAR)開中斷JNZ $;等待重新啟動條件-A=0MOVA,#0FFHMOVXDPTR,A;清除數碼管2 (NUM2)顯示CLREX1;禁止INT0中斷(避 免程序誤動作)POPACC;恢復A寄存器內容CLRIE1;清除INT1 (停止鍵STOP)中斷標志(避免程序誤動作RETI;中斷返回LP:LCALLDELAY1LCALLDELAY1LCALLDELAY1LCALLDELAY1CJNER1,#8H,LOOPMOVR1,#0HSJMPLOOPCLREACJNER4,#0F0H,LOOPRRACJNER4,#0F0H,LOOPMOVP3,ACJNER4,#0F0H,LOOPDECR1CJNE
8、R4,#0F0H,LOOPSETBEALCALLDELAY1LCALLDELAY1LCALLDELAY1LCALLDELAY1CJNER1,#0H,LPMOVR1,#8HSJMPLP;啟動鍵的中斷服務程序STAR:MOV A,#00H;設置啟動條件-A=0CLRPUSHMOVCPLMOVPOPRETIIE0 ;清除INT0 (啟動鍵STOP)中斷標志(避免程序誤動ACCA,R4AR4,AACC;中斷返回作)TAB:DB0C0H,0F9H,0A4H,0B0H,099H;0-4段碼DB092H,082H,0F8H,080H;5-8段碼DELAY1:MOVR6,#0;延時子程序D1:MOVDJNZD
9、JNZRETR7,#0R7,$R6,D1;初始設置子程序文件包含偽指令$include (Init_Device.inc)END2.修改例程6,將計數范圍由0-F擴展至00-FF (使用定時器/計時器0),并在2位數碼管上用10進制數顯示計數結果(00-99)$include(C8051F020.inc);C8051F02x系列單片機信息頭文件包含偽指令DP2EQU07F80HDP_LEQU30H;低位數值暫存器DP_HEQU31H;高位數值暫存器MAIN:LCALLInit_Device;調用初始設置子程序MOVTMOD,#00000101B;C/T0 工作 于方式 2MOVA,#0;顯示初
10、值為0MOVDP_L,AMOVDP_H,ACALLDISPLAY;調用顯示子程序顯示初值0MOVTL0,#0;C/T0置初值0SETB TR0;啟動計數器0LOOP:MOVA,TL0;讀計數器0的計數值CJNEA,#0AH,L1MOVTL0,#0MOVA,#0INCDP_HMOVA,DP_HCJNEA,#0AH,MMMOVDP_H,#0MM:MOVA,#0L1:MOVDP_L,A;在NUM2顯示計數器0的計數值CALLDISPLAY;調用顯示子程序顯示計數值SJMPLOOP;無限次循環(huán);顯示子程序DISPLAY:MOVA,DP_L;讀低位顯示值CALLDECODE;調用換碼子程序MOVDPTR
11、,#DP2;顯示段碼送NUM2MOVXDPTR,AMOVA,DP_H;讀高位顯示值CALLDECODE;調用換碼子程序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);初始設置子程序文件包含偽指令END通過對例程8的程序進行修改和上機調試,改變源程序的功能 將發(fā)送1、2、3、4的ASCI
12、I碼改為發(fā)送A、B、C、D的ASCII 碼將接收的第2、第3字節(jié)數據的顯示位置交換$include (C8051F020.inc);C8051F02x系列單片機信息頭文件包含偽指令NUM2EQU07F80H;NUM2地址NUM3EQU07F90H;NUM3地址NUM4EQU07FA0H;NUM4地址NUM5EQU07FB0H;NUM5地址TIM_LEQU0FDH;I/C1低字節(jié)計數值TIM_HEQU0FDH;I/C1高字節(jié)計數值REC_BUF0EQU32H;數據接收緩沖器0REC_BUF1EQU34H;數據接收緩沖器1REC_BUF2EQU33H;數據接收緩沖器2FLAGBIT01H;數據發(fā)送
13、完成標志ORG 0000HLJMP MAIN;轉主程序ORG0023HLJMPRECE;轉串行通信中斷程序;主程序MAIN:Icall Init_Device;C8051F02x系列單片機信息頭文件包含偽指令MOVA,#0FFHMOVP5,AMOVDPTR,#NUM2MOVXDPTR,A;清除數碼管NUM1的顯示MOVDPTR,#NUM3MOVXDPTR,A;清除數碼管NUM2的顯示MOVDPTR,#NUM4MOVXDPTR,A;清除數碼管NUM3的顯示MOVDPTR,#NUM5MOVXDPTR,A;清除數碼管NUM4的顯示MOVR6,#0;通信操作狀態(tài)寄存器清除MOVSP,#40H;堆棧棧底
14、設置MOVTMOD,#00100000B;T/C1 方式 2MOVTH1,#TIM_H;T/C1重裝填值MOVSETBMOVSETBSETBTL1,#TIM_LTR1SCON0,#01010000BESEA;T/C1計數值;啟動T/C1;串口方式1;串口中斷允許;開中斷;主循環(huán)LOOP:CALLKEYBOARD;調用案件狀態(tài)分析子程序CJNEA,#0FFH,L0;按鍵狀態(tài)發(fā)生變化轉L0CLRFLAG;按鍵狀態(tài)無變化,清除發(fā)送完成 標志SJMPLOOPL0:JBFLAG,LOOP;數據發(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ā)送數字0的ASCII碼值MOVSBUF0,ACALLDELAYMOVA,R7ADDA,#40H;生成鍵值的ASCII碼值MOVSBUF0,A;發(fā)送鍵值的ASCII碼值SETBFLAG;置位發(fā)送完成標志SJMPLOOP;中斷服務程序RECE:JNBTI,REC1;非發(fā)送轉接收
16、處理CLRTI;否則,清除發(fā)送中斷標志RETI;中斷返回REC1:PUSHACC;保護累加器AMOVA,SBUF0;讀接收緩沖器CJNER6,#0,REC2CJNEA,#43H,REC6;接收狀態(tài)為0,進行字符C的過濾處理MOVR6,#1;接收狀態(tài)改為1SJMPREC6REC2:CJNER6,#1,REC3CJNEA,#4FH,REC5;接收狀態(tài)為1,進行字符O的過濾處理MOVR6,#2;接收狀態(tài)改為2SJMPREC6REC3:CJNER6,#2,REC4CJNEA,#4DH,REC5;接收狀態(tài)為2,進行字符M的過濾處理MOVR6,#3;接收狀態(tài)改為3MOVR5,#3;數據接收計數器設置為3S
17、JMPREC6REC4:CJNER6,#3,REC6PUSHACC;接收狀態(tài)為3,暫存接收的內容MOVA,#REC_BUF0ADDA,R5MOVR0,A;生成接收數據存放緩沖器地址POPACC;恢復接收數據至A寄存器MOVR0,A;保存接收的數據DECR5;接收數據計數器減1CJNER5,#0,REC6CALLDISPLAY;接收數據計數器減為0,進行接收結果的顯示REC5:MOVR6,#0;接收狀態(tài)恢復為0 (就緒狀態(tài))REC6:POPACC;恢復累加器ACLRRI;清除接收中斷標志RETI;中斷返回KEYBOARD:MOVA,P2;讀按鍵狀態(tài)輸入端口RRARRARRCA;KEY1有效鍵值移
18、入位累加器 CJCK1;鍵值無效轉KEY2鍵值的分析MOVA,#1;否則,KEY1代碼送A寄存器SJMPK5K1:RRCA;KEY2有效鍵值移入位累加器 CJCK2;鍵值無效轉KEY3鍵值的分析MOVA,#2;否則,KEY2代碼送A寄存器SJMPK5K2:RRCA;KEY3有效鍵值移入位累加器 CJCK3;鍵值無效轉KEY4鍵值的分析MOVA,#3;否則,KEY3代碼送A寄存器SJMPK5K3:RRCA;KEY4有效鍵值移入位累加器 CJCK4;鍵值無效轉按鍵無效處理MOVA,#4;否則,KEY4代碼送A寄存器SJMPK5K4:K5:MOVRETA,#0FFH;按鍵無效代碼送A寄存器DISPLAY:MOVA,REC_BUF2;讀取接收的第2字節(jié)數據SWAPA;局、低4位交換ANLA,#0FH;分離局4位后效數值CALLDECODE;換碼
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小手拉大手交通安全一起守
- 2024商業(yè)廣場盛大開業(yè)啟幕系列(雪域之光王府井啟航主題)活動策劃方案-113正式版
- 經內鏡逆行胰膽管造影(ERCP)護理業(yè)務學習
- Unit 4 Plants around us C (說課稿)-2024-2025學年人教PEP版(2024)英語三年級上冊
- 光學樹脂系列產品項目可行性研究報告寫作模板-拿地備案
- 信息技術七年級上冊第八課 動感溫馨感恩卡-圖文結合說課稿(小小導游本領大)
- 福建省龍巖市新羅區(qū)2024-2025學年二年級上學期期末數學試題參考答案
- 江蘇省宿遷市(2024年-2025年小學六年級語文)部編版階段練習(下學期)試卷及答案
- 貴州師范大學《急救臨床技能訓練》2023-2024學年第一學期期末試卷
- 貴州黔南科技學院《幼兒教師發(fā)展專題》2023-2024學年第一學期期末試卷
- 小班《火車開了》音樂欣賞課評課稿
- 倫理學與醫(yī)學倫理學 (醫(yī)學倫理學課件)
- GB/T 6344-2008軟質泡沫聚合材料拉伸強度和斷裂伸長率的測定
- GA/T 1740.1-2020旅游景區(qū)安全防范要求第1部分:山岳型
- 產后康復客戶健康評估表格
- 企業(yè)人員組織結構圖
- 個人現實表現材料1500字德能勤績廉(通用6篇)
- 六年級上冊數學單元測試-5.圓 青島版 (含答案)
- (精心整理)高一語文期末模擬試題
- QC成果解決鋁合金模板混凝土氣泡、爛根難題
- 管線管廊布置設計規(guī)范
評論
0/150
提交評論