⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex3-9.lst

📁 《PIC单片机应用开发典型模块》源代码及图片
💻 LST
📖 第 1 页 / 共 5 页
字号:
02D5 22              506               RET
                     507               
                     508     ;---------------------------------
                     509     ; THE MOST INPORTANT FUNTION
                     510     ; DIR UP FOUR BIT MEAN CURRENT DIRECRTION
                     511     ;     DOWN FOUR BIT MEAN NEXT DIRECTION
                     512     ;    (UP TO DOWN) 0000
                     513     ;                 1000  UP
                     514     ;                 0100  DOWN
                     515     ;                 0010  LEFT
                     516     ;                 0001  RIGHT;
                     517     ;     FOR INSTANT 0010 0100 MEAN CURRENT LEFT,NEXT DOWN;
                     518     ;
02D6 E53E            519     SNAG:  MOV A,DIR;                  ;TO DISPLAY THE MOVING SNAG;
02D8 B48803          520            CJNE A,#10001000B,SNAG2;
A51 MACRO ASSEMBLER  EX3_9                                                                06/23/2007 17:15:17 PAGE     9

02DB 020336          521            LJMP UPUP;
                     522     ;SNAG1: MOV A,DIR;
                     523     ;       CJNE A,#10000100B,SNAG2;
                     524     ;       LJMP UPDOWN;
02DE E53E            525     SNAG2: MOV A,DIR;
02E0 B48203          526            CJNE A,#10000010B,SNAG3;
02E3 02033B          527            LJMP UPLEFT;
02E6 E53E            528     SNAG3: MOV A,DIR;
02E8 B48103          529            CJNE A,#10000001B,SNAG5;
02EB 020340          530            LJMP UPRIGHT;
                     531     
                     532     ;SNAG4: MOV A,DIR;
                     533     ;       CJNE A,#01001000B,SNAG5;
                     534     ;       LJMP DOWNUP;
02EE E53E            535     SNAG5: MOV A,DIR;
02F0 B44403          536            CJNE A,#01000100B,SNAG6;
02F3 020345          537            LJMP DOWNDOWN;
02F6 E53E            538     SNAG6: MOV A,DIR;
02F8 B44203          539            CJNE A,#01000010B,SNAG7;
02FB 02034A          540            LJMP DOWNLEFT;
02FE E53E            541     SNAG7: MOV A,DIR;
0300 B44103          542            CJNE A,#01000001B,SNAG8;
0303 02034F          543            LJMP DOWNRIGHT;
                     544     
0306 E53E            545     SNAG8: MOV A,DIR;
0308 B42803          546            CJNE A,#00101000B,SNAG9;
030B 020359          547            LJMP LEFTUP;
030E E53E            548     SNAG9: MOV A,DIR;
0310 B42403          549            CJNE A,#00100100B,SNAGA;
0313 02035E          550            LJMP LEFTDOWN;
0316 E53E            551     SNAGA: MOV A,DIR;
0318 B42203          552            CJNE A,#00100010B,SNAGC;
031B 020354          553            LJMP LEFTLEFT;
                     554     ;SNAGB: MOV A,DIR;
                     555     ;       CJNE A,#00100001B,SNAGC;
                     556     ;       LJMP LEFTRIGHT;
                     557     
                     558     
031E E53E            559     SNAGC: MOV A,DIR;
0320 B41803          560            CJNE A,#00011000B,SNAGD;
0323 020363          561            LJMP RIGHTUP;
0326 E53E            562     SNAGD: MOV A,DIR;
0328 B41403          563            CJNE A,#00010100B,SNAGF;
032B 020368          564            LJMP RIGHTDOWN;
                     565     ;SNAGE: MOV A,DIR;
                     566     ;       CJNE A,#00010010B,SNAGF;
                     567     ;       LJMP RIGHTLEFT;
032E E53E            568     SNAGF: MOV A,DIR;
0330 B4113F          569            CJNE A,#00010001B,SNAGEND;
0333 02036D          570            LJMP RIGHTRIGHT;
                     571     
0336 153B            572     UPUP: DEC HEADY;
                     573           ;DEC TAILY;
0338 020372          574           LJMP SNAGEND;
033B 153A            575     UPLEFT:DEC HEADX;
033D 020372          576           LJMP SNAGEND;
0340 053A            577     UPRIGHT:INC HEADX
0342 020372          578           LJMP SNAGEND;
                     579     
                     580     
0345 053B            581     DOWNDOWN:INC HEADY
0347 020372          582           LJMP SNAGEND;
034A 153A            583     DOWNLEFT:DEC HEADX
034C 020372          584           LJMP SNAGEND;
034F 053A            585     DOWNRIGHT:INC HEADX;
0351 020372          586           LJMP SNAGEND;
A51 MACRO ASSEMBLER  EX3_9                                                                06/23/2007 17:15:17 PAGE    10

                     587     
                     588     
0354 153A            589     LEFTLEFT:  DEC HEADX
0356 020372          590           LJMP SNAGEND;
0359 153B            591     LEFTUP:    DEC HEADY
035B 020372          592           LJMP SNAGEND;
035E 053B            593     LEFTDOWN:  INC HEADY
0360 020372          594           LJMP SNAGEND;
                     595     
                     596     
0363 153B            597     RIGHTUP:  DEC HEADY
0365 020372          598           LJMP SNAGEND;
0368 053B            599     RIGHTDOWN: INC HEADY
036A 020372          600           LJMP SNAGEND;
036D 053A            601     RIGHTRIGHT: INC HEADX
036F 020372          602           LJMP SNAGEND;
                     603     
0372                 604     SNAGEND:
                     605     
0372 853A38          606           MOV PX,HEADX;    IF THE SNAG ENCOUNTER THE WALL 
0375 853B39          607           MOV PY,HEADY;
0378 1201EE          608           LCALL READXY;
037B 200053          609           JB ERR,SNAGEND1;
                     610     
                     611                           ;NORMLY PROGRAMMING 
037E 853A38          612           MOV PX,HEADX;    TO ADD THE HEADER
0381 853B39          613           MOV PY,HEADY;
0384 12015E          614           LCALL DISPXY;
                     615                          ; TO REFINE THE SNAG BODY;
0387 053F            616           INC HEADXA;
0389 A83F            617           MOV R0,HEADXA;
038B A638            618           MOV @R0,PX;
                     619     
038D 0540            620           INC HEADYA;
038F A840            621           MOV R0,HEADYA;
0391 A639            622           MOV @R0,PY;
                     623                              ;   IF THE SNAG ENCOUNTER THE SPOT
0393 120297          624           LCALL TOSPOT;
0396 20013E          625           JB ENSPOT,SNAGEND5;
                     626                            ; TO REDUCE THE TAIL
0399 853C38          627           MOV PX,TAILX;
039C 853D39          628           MOV PY,TAILY;
039F 1201A6          629           LCALL UNDISPXY;
                     630     
03A2 0542            631           INC TAILXA;
03A4 A842            632           MOV R0,TAILXA;
03A6 863C            633           MOV TAILX,@R0;
                     634     
03A8 0543            635           INC TAILYA;
03AA A843            636           MOV R0,TAILYA;
03AC 863D            637           MOV TAILY,@R0;
                     638                             ; TO MOVE ALL THE NUMBER FROM TAILXA---HEADXA
                     639                             ;                         TO (TAILXA-1) AND (HEADXA-1)
03AE A842            640           MOV R0,TAILXA;
03B0 AA41            641           MOV R2,SNAGLNG;
                     642     
03B2                 643     SNAGEND3:
03B2 E8              644           MOV A,R0;
03B3 F9              645           MOV R1,A;
                     646     
03B4 19              647           DEC R1;
                     648     
03B5 E6              649           MOV A,@R0;
03B6 F7              650           MOV @R1,A;
                     651     
03B7 08              652           INC R0;
A51 MACRO ASSEMBLER  EX3_9                                                                06/23/2007 17:15:17 PAGE    11

03B8 DAF8            653           DJNZ R2,SNAGEND3;
03BA 1542            654           DEC TAILXA;
03BC 153F            655           DEC HEADXA;
                     656                               ; TO MOVE THE DATA FROM HEADY TO TAILY;
03BE A843            657           MOV R0,TAILYA;
03C0 AA41            658           MOV R2,SNAGLNG
03C2                 659     SNAGEND4:
03C2 E8              660           MOV A,R0;
03C3 F9              661           MOV R1,A;
                     662     
03C4 19              663           DEC R1;
                     664     
03C5 E6              665           MOV A,@R0;
03C6 F7              666           MOV @R1,A;
                     667     
03C7 08              668           INC R0;
03C8 DAF8            669           DJNZ R2,SNAGEND4;
03CA 1543            670           DEC TAILYA;
03CC 1540            671           DEC HEADYA;
03CE 0203E1          672           LJMP SNAGEND2;
                     673           
03D1 12027B          674     SNAGEND1: LCALL ERROR;   TO ENCOUNTER THE WALL
03D4 0203E1          675               LJMP SNAGEND2;
03D7                 676     SNAGEND5:
                     677            
03D7 0541            678           INC SNAGLNG;
03D9 C201            679           CLR ENSPOT; 
03DB 300203          680           JNB ALL,SNAGEND2;
03DE 1202BA          681           LCALL ALLSPOT;
                     682                         
03E1                 683     SNAGEND2:
03E1 22              684            RET;
                     685     ;---------------KEY SUB-------------------
                     686     ;;;;;;;;;KEYBOARD;;;;;;;;;;;;;;;;;;;
                     687     ; KEYBOARD PART
                     688     ; 2005/8/14
                     689     ; ROW 1 2 3 4
                     690     ; COL 5 6 7 8
                     691     ;     9 0 A B
                     692     ;     C D E F
                     693     ; R0 REPRESENT KEYVALUE=ROW*4+COL
                     694     ;;;;;;;;;;;;;;;;;;;;;;;;;;;
03E2                 695      KEYBOARD:
03E2 7800            696            MOV R0,#00H;
03E4 75A00F          697      ROW:  MOV KEYIN,#0FH;
03E7 30A00B          698      ROW00:JNB KEYIN.0,ROW0;
03EA 30A111          699      ROW01:JNB KEYIN.1,ROW1;
03ED 30A217          700      ROW02:JNB KEYIN.2,ROW2;
03F0 30A31D          701      ROW03:JNB KEYIN.3,ROW3;
                     702            ;JMP ROW00;
03F3 806E            703            JMP KEYBOARDEND;
                     704     
03F5 B1D8            705      ROW0: CALL DELAY;
03F7 20A0F0          706            JB KEYIN.0,ROW01;
03FA 7800            707            MOV R0,#00H;
03FC 801B            708            JMP COL;
03FE B1D8            709      ROW1: CALL DELAY;
0400 20A1EA          710            JB KEYIN.1,ROW02;
0403 7801            711            MOV R0,#01H;
0405 8012            712            JMP COL;
0407 B1D8            713      ROW2: CALL DELAY;
0409 20A2E4          714            JB KEYIN.2,ROW03;
040C 7803            715            MOV R0,#03H;
040E 8009            716            JMP COL;
0410 B1D8            717      ROW3: CALL DELAY;
0412 20A3D2          718            JB KEYIN.3,ROW00;
A51 MACRO ASSEMBLER  EX3_9                                                                06/23/2007 17:15:17 PAGE    12

0415 7802            719            MOV R0,#02H;
0417 8000            720            JMP COL;
                     721     
0419 75A0F0          722      COL:  MOV KEYIN,#0F0H;
041C 30A40B          723      COL00:JNB KEYIN.4,COL0;
041F 30A513          724      COL01:JNB KEYIN.5,COL1;
0422 30A61B          725      COL02:JNB KEYIN.6,COL2;
0425 30A723          726      COL03:JNB KEYIN.7,COL3;
                     727            ;JMP COL00;
0428 8039            728            JMP KEYBOARDEND;
                     729     
042A B1D8            730      COL0: CALL DELAY;
042C 20A4F0          731            JB KEYIN.4,COL01;
042F 7400            732            MOV A,#00H;
0431 48              733            ORL A,R0;
0432 F8              734            MOV R0,A;
0433 8021            735            JMP KEY;
0435 B1D8            736      COL1: CALL DELAY;
0437 20A5E8          737            JB KEYIN.5,COL02;
043A 7410            738            MOV A,#10H;
043C 48              739            ORL A,R0;
043D F8              740            MOV R0,A;
043E 8016            741            JMP KEY;
0440 B1D8            742      COL2: CALL DELAY;
0442 20A6E0          743            JB KEYIN.6,COL03;
0445 7420            744            MOV A,#20H;
0447 48              745            ORL A,R0;
0448 F8              746            MOV R0,A;
0449 800B            747            JMP KEY;
044B B1D8            748      COL3: CALL DELAY;
044D 20A7CC          749            JB KEYIN.7,COL00;
0450 7430            750            MOV A,#30H;
0452 48              751            ORL A,R0;
0453 F8              752            MOV R0,A;
0454 8000            753            JMP KEY;
                     754     
0456 E8              755      KEY:  MOV A,R0;R0 H BIT COL WEIGH 4 ,R0 L BIT ROW WEIGHT 1;
0457 C4              756            SWAP A;   00010001
0458 540F            757            ANL A,#0FH;  0000 0001
045A 23              758            RL A;
045B 23              759            RL A;        0000 0100
045C 28              760            ADD A,R0;    0001 0101
045D 540F            761            ANL A,#0FH;  0000 0101

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -