圖片1
ORG0000H
000000NOP
00010130AJMPSTART
0003C2A8CLREX0;INT0入口,用于單步執(zhí)行。
000502039CLJMPPUSH_REG;轉(zhuǎn)去單步現(xiàn)場保護(hù)。
ORG000BH;T0中斷入口
000B02200BLJMP200BH;轉(zhuǎn)至200BH,向用戶開放。
ORG0013H;INT1入口
0013022013LJMP2013H;轉(zhuǎn)至2013H,向用戶開放。
ORG001BH;T1中斷入口
001B020BB2LJMP0BB2H;監(jiān)控占用,轉(zhuǎn)去打印控制。
ORG0023H;串行口中斷入口
0023022023LJMP2023H;轉(zhuǎn)至2023H,向用戶開放。
;
;*****************監(jiān)控程序初始化*********************
ORG0030H
00307879START:MOVR0,#79H;監(jiān)控初始化程序段
00327601MOV@R0,#01H;送“CPU-51”顯示代碼。
003408INCR0
00357605MOV@R0,#05H
003708INCR0
00387614MOV@R0,#14H
003A08INCR0
003B761CMOV@R0,#1CH
003D08INCR0
003E7610MOV@R0,#10H
004008INCR0
0041760CMOV@R0,#0CH
0043758140MOVSP,#40H;堆棧指針初值設(shè)為40H。
00467400MOVA,#00H;監(jiān)控用的存儲單元清零。
0048F52FMOV2FH,A;狀態(tài)標(biāo)志單元2FH清零。
004A7830MOVR0,#30H;30H—3FH單元清零。
004C7910MOVR1,#10H
004EF6START0:MOV@R0,A
004F08INCR0
0050D9FCDJNZR1,START0
;****************監(jiān)控開始,等待鍵命令*******************
00521204AFMONITOR:LCALLKEY_SCAN;掃描鍵盤。
00557005JNZKEY_PROC;有鍵則轉(zhuǎn)鍵處理。
00571204D0LCALLDISPLAY;維持顯示。
005A0152AJMPMONITOR
005C120340KEY_PROC:LCALLOFF_DISP;鍵命令處理程序。
005F120460K_P1:LCALLKEY_GET
006220E40DJB ACC.4,COMMAND;功能鍵,轉(zhuǎn)命令處理。
0065857D7EMOV7EH,7DH;數(shù)字鍵,送顯示。
0068857C7DMOV7DH,7CH
006B857B7CMOV7CH,7BH
006EF57BMOV7BH,A
0070015FAJMPK_P1
00725407COMMAND:ANLA,#07H;命令分析。
0074F8MOVR0,A;命令功能參見附錄五。
007523RLA
007628ADDA,R0
007790007BMOVDPTR,#FUNCTION
007A73JMP@A+DPTR;用散轉(zhuǎn)指令轉(zhuǎn)相應(yīng)分支。
007B02024EFUNCTION:LJMPMOV;轉(zhuǎn)MOV命令分支。
007E0200A0LJMPDOWN;轉(zhuǎn)MON命令分支。
00810201B1LJMPWRIT;轉(zhuǎn)WRI命令分支。
0084020161LJMPREAD;轉(zhuǎn)RDS命令分支。
00870200AFLJMPEXEC;轉(zhuǎn)EXE命令分支。
008A0200E6LJMPEXAM;轉(zhuǎn)EXA命令分支。
008D020209LJMPF;轉(zhuǎn)[F]命令分支。
0090 0201FB