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

📄 sw_int.ls1

📁 基本STC4052写的一个小的OS, 完成了任务调度功能,及堆栈空间切换, 及中断处理
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     737                             ; SOURCE LINE # 200
0044                 738     ?C0019:
                     739     ;       if (gOsIntLevel)
                     740                             ; SOURCE LINE # 201
0044 E500     F      741             MOV     A,gOsIntLevel
0046 6002            742             JZ      ?C0020
                     743     ;               gOsIntLevel--;  
                     744                             ; SOURCE LINE # 202
0048 1500     F      745             DEC     gOsIntLevel
004A                 746     ?C0020:
                     747     ; #pragma asm
                     748     ;       POPALL
                     749               POPALL
                     765     ;       RETI        
0064 32              766               RETI      
                     767     ; #pragma endasm
                     768     ; }
                     769                             ; SOURCE LINE # 207
0065 22              770             RET     
                     771     ; END OF SysTimer0
                     772     
                     773     ; 
                     774     ; void UartISR (void) //interrupt 4 
                     775     
----                 776             RSEG  ?PR?UartISR?SW_INT
0000                 777     UartISR:
                     778             USING   0
A51 MACRO ASSEMBLER  SW_INT                                                               11/24/2006 11:35:22 PAGE    12

                     779                             ; SOURCE LINE # 209
                     780     ; {
                     781                             ; SOURCE LINE # 210
                     782     ;       U8 tmp;
                     783     ; #pragma asm
                     784     ;       PUSHALL
                     785               PUSHALL
                     802     ; #pragma endasm         
                     803     ;       gOsIntLevel++; 
                     804                             ; SOURCE LINE # 215
001D 0500     F      805             INC     gOsIntLevel
                     806     ;       if (RI)// receive
                     807                             ; SOURCE LINE # 216
001F 309807          808             JNB     RI,?C0022
                     809     ;       {               
                     810                             ; SOURCE LINE # 217
                     811     ;           RI = 0;
                     812                             ; SOURCE LINE # 218
0022 C298            813             CLR     RI
                     814     ;               tmp = SBUF;
                     815                             ; SOURCE LINE # 219
                     816     ;---- Variable 'tmp?441' assigned to Register 'R7' ----
0024 AF99            817             MOV     R7,SBUF
                     818     ; //            SBUF = tmp;
                     819     ; //            while (!TI);
                     820     ; //            TI=0;
                     821     ;               SRL_RevChar(tmp);
                     822                             ; SOURCE LINE # 223
0026 120000   F      823             LCALL   _?SRL_RevChar
                     824     ;       }
                     825                             ; SOURCE LINE # 224
0029                 826     ?C0022:
                     827     ;       OsIntExit();
                     828                             ; SOURCE LINE # 225
0029 120000   F      829             LCALL   _?OsIntExit
                     830     ;       if (gOsIntLevel)
                     831                             ; SOURCE LINE # 226
002C E500     F      832             MOV     A,gOsIntLevel
002E 6002            833             JZ      ?C0023
                     834     ;               gOsIntLevel--;  
                     835                             ; SOURCE LINE # 227
0030 1500     F      836             DEC     gOsIntLevel
0032                 837     ?C0023:
                     838     ; #pragma asm
                     839     ;       POPALL
                     840               POPALL
                     856     ;       RETI
004C 32              857               RETI
                     858     ; #pragma endasm
                     859     ; }
                     860                             ; SOURCE LINE # 232
004D 22              861             RET     
                     862     ; END OF UartISR
                     863     
                     864     ; 
                     865     ; 
                     866     ; void OSTaskSW (void) REENTRANT
                     867     
----                 868             RSEG  ?PR?_?OSTaskSW?SW_INT
0000                 869     _?OSTaskSW:
                     870             USING   0
                     871                             ; SOURCE LINE # 235
                     872     ; {
                     873     ;       EnterCritical();
                     874                             ; SOURCE LINE # 237
0000 C2AF            875             CLR     EA
A51 MACRO ASSEMBLER  SW_INT                                                               11/24/2006 11:35:22 PAGE    13

                     876     ; #pragma asm
                     877     ;       PUSHALL
                     878               PUSHALL
                     895     ; #pragma endasm
                     896     ;       if (gOs.taskNum<2)
                     897                             ; SOURCE LINE # 241
001F E500     F      898             MOV     A,gOs+01EH
0021 C3              899             CLR     C
0022 9402            900             SUBB    A,#02H
0024 401F            901             JC      ?C0026
                     902     ;       {       return;//只有一个任务在运行
                     903                             ; SOURCE LINE # 242
                     904     ;       }
                     905                             ; SOURCE LINE # 243
0026                 906     ?C0025:
                     907     ;       OsTaskSwitch();
                     908                             ; SOURCE LINE # 244
0026 120000   F      909             LCALL   _?OsTaskSwitch
                     910     ; #pragma asm
                     911     ;       POPALL      
                     912               POPALL            
                     928     ; #pragma endasm
                     929     ;       ExitCritical();
                     930                             ; SOURCE LINE # 248
0043 D2AF            931             SETB    EA
                     932     ; }
                     933                             ; SOURCE LINE # 249
0045                 934     ?C0026:
0045 22              935             RET     
                     936     ; END OF _?OSTaskSW
                     937     
                     938     ; 
                     939     ; 
                     940     ; void ISRAdrFun (void)  REENTRANT
                     941     
----                 942             RSEG  ?PR?_?ISRAdrFun?SW_INT
0000                 943     _?ISRAdrFun:
                     944                             ; SOURCE LINE # 252
                     945     ; {
                     946     ; #pragma asm
                     947     ;          NOP                          //3
0000 00              948               NOP                            
                     949     ;          NOP
0001 00              950               NOP
                     951     ;          NOP
0002 00              952               NOP
                     953     ;          NOP                          //6
0003 00              954               NOP                            
                     955     ;          NOP
0004 00              956               NOP
                     957     ;          NOP
0005 00              958               NOP
                     959     ;          NOP
0006 00              960               NOP
                     961     ;          NOP                          //0A
0007 00              962               NOP                            
                     963     ; 
                     964               
                     965     ;          LJMP SysTimer0       //0B
0008 020000   F      966               LJMP SysTimer0         
                     967     ; ;        NOP
                     968               ;        NOP
                     969     ; ;        NOP
                     970               ;        NOP
                     971     ;          NOP
000B 00              972               NOP
A51 MACRO ASSEMBLER  SW_INT                                                               11/24/2006 11:35:22 PAGE    14

                     973     ;          NOP
000C 00              974               NOP
                     975     ; ;;//////////////////////////////////
                     976               ;; 
                     977     ;          NOP                          //10
000D 00              978               NOP                            
                     979     ;          NOP
000E 00              980               NOP
                     981     ;          NOP
000F 00              982               NOP
                     983     ;          NOP
0010 00              984               NOP
                     985     ;          NOP
0011 00              986               NOP
                     987     ;          NOP
0012 00              988               NOP
                     989     ; 
                     990               
                     991     ;          NOP
0013 00              992               NOP
                     993     ;          NOP
0014 00              994               NOP
                     995     ;          NOP
0015 00              996               NOP
                     997     ;          NOP
0016 00              998               NOP
                     999     ;          NOP                          //1A
0017 00             1000               NOP                            
                    1001     ; 
                    1002               
                    1003     ;          NOP                          //1B
0018 00             1004               NOP                            
                    1005     ;          NOP
0019 00             1006               NOP
                    1007     ;          NOP
001A 00             1008               NOP
                    1009     ;          NOP
001B 00             1010               NOP
                    1011     ;          NOP
001C 00             1012               NOP
                    1013     ; ;;//////////////////////////////////
                    1014               ;; 
                    1015     ;          NOP                          //20
001D 00             1016               NOP                            
                    1017     ;          NOP
001E 00             1018               NOP
                    1019     ;          NOP
001F 00             1020               NOP
                    1021     ;          LJMP UartISR         //23
0020 020000   F     1022               LJMP UartISR   
                    1023     ; ;        NOP
                    1024               ;        NOP
                    1025     ; ;        NOP
                    1026               ;        NOP
                    1027     ; 
                    1028               
                    1029     ;          NOP
0023 00             1030               NOP
                    1031     ;          NOP
0024 00             1032               NOP
                    1033     ;          NOP
0025 00             1034               NOP
                    1035     ;          NOP
0026 00             1036               NOP
                    1037     ;          NOP                          //2A
0027 00             1038               NOP                            
A51 MACRO ASSEMBLER  SW_INT                                                               11/24/2006 11:35:22 PAGE    15

                    1039     ; 
                    1040               
                    1041     ;          NOP                          //2B
0028 00             1042               NOP                            
                    1043     ;          NOP
0029 00             1044               NOP
                    1045     ;          NOP

⌨️ 快捷键说明

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