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

📄 boot.ls1

📁 一个完整的51单片机的操作糸统源程序! 内容十分丰富!很有借鉴价值!
💻 LS1
📖 第 1 页 / 共 3 页
字号:
                     166     ; 
                     167     ; /*************2002年12月13日*******************/
                     168     ; 
                     169     ; /************AUTHOR BY WANGSW********************/
                     170     ; 
                     171     ; 
                     172     ; #include "reg52x2.h"   
                     173     ;   
                     174     ; #include "define.h"
                     175     ; 
                     176     ; 
                     177     ; #include "led_key.h"
                     178     ; #include "iic.h"
                     179     ; 
                     180     ; #include "init.h"
                     181     ; #include "lcd.h"
                     182     ; #include "bitmap.h"
                     183     ; #include "uart.h"
                     184     ; #include "timer.h"
                     185     ; #include "rtc.h"
A51 MACRO ASSEMBLER  BOOT                                                                 10/31/2003 02:22:23 PAGE     4

                     186     ; #include "smart_timer.h"
                     187     ; 
                     188     ; #include "boot.h"
                     189     ; 
                     190     ; static byte i = 0;
                     191     ; 
                     192     ; /****************************************************************************************
                             **
                     193     ; *函数名:              main
                     194     ; *参数:                        无
                     195     ; *返回值:              无      
                     196     ; *描述:                        
                     197     ; *编写:                        王绍伟
                     198     ; *版本信息:            V1.0                    2003年8月15日
                     199     ; *****************************************************************************************
                             */
                     200     ; 
                     201     ; main(void)
                     202     
----                 203             RSEG  ?PR?main?BOOT
0000                 204     main:
                     205             USING   0
                     206                             ; SOURCE LINE # 63
                     207     ; {
                     208                             ; SOURCE LINE # 64
                     209     ;       init_process();                                 /*r初始化进程*/
                     210                             ; SOURCE LINE # 65
0000 120000   F      211             LCALL   init_process
                     212     ; 
                     213     ;       lcd_display_graphic(0,0,32,16,FALSE,SEND);
                     214                             ; SOURCE LINE # 67
0003 900000   F      215             MOV     DPTR,#?_lcd_display_graphic?BYTE+03H
0006 7410            216             MOV     A,#010H
0008 F0              217             MOVX    @DPTR,A
0009 C200     F      218             CLR     ?_lcd_display_graphic?BIT
000B E4              219             CLR     A
000C A3              220             INC     DPTR
000D F0              221             MOVX    @DPTR,A
000E 7B20            222             MOV     R3,#020H
0010 FD              223             MOV     R5,A
0011 FF              224             MOV     R7,A
0012 120000   F      225             LCALL   _lcd_display_graphic
                     226     ;       lcd_display_graphic(0,16,32,16,FALSE,RECEIVE);
                     227                             ; SOURCE LINE # 68
0015 900000   F      228             MOV     DPTR,#?_lcd_display_graphic?BYTE+03H
0018 7410            229             MOV     A,#010H
001A F0              230             MOVX    @DPTR,A
001B C200     F      231             CLR     ?_lcd_display_graphic?BIT
001D A3              232             INC     DPTR
001E 7401            233             MOV     A,#01H
0020 F0              234             MOVX    @DPTR,A
0021 7B20            235             MOV     R3,#020H
0023 7D10            236             MOV     R5,#010H
0025 E4              237             CLR     A
0026 FF              238             MOV     R7,A
0027 120000   F      239             LCALL   _lcd_display_graphic
002A                 240     ?C0001:
                     241     ;       /****************************************************/
                     242     ;       while(TRUE)
                     243                             ; SOURCE LINE # 70
                     244     ;       {
                     245                             ; SOURCE LINE # 71
                     246     ;               switch(msg_queue_out())                                         /*r根据消息
                             队列的取值进行处理*/
                     247                             ; SOURCE LINE # 72
002A 120000   F      248             LCALL   msg_queue_out
A51 MACRO ASSEMBLER  BOOT                                                                 10/31/2003 02:22:23 PAGE     5

002D EF              249             MOV     A,R7
002E 24FE            250             ADD     A,#0FEH
0030 604B            251             JZ      ?C0007
0032 14              252             DEC     A
0033 604F            253             JZ      ?C0010
0035 14              254             DEC     A
0036 604A            255             JZ      ?C0008
0038 2403            256             ADD     A,#03H
003A 70EE            257             JNZ     ?C0001
                     258     ;               {
                     259                             ; SOURCE LINE # 73
                     260     ;                       case MSG_KEY:                                           /*r若是按键
                             消息*/
                     261                             ; SOURCE LINE # 74
003C                 262     ?C0004:
                     263     ;                               g_KeyStore = g_MsgReturnValue;
                     264                             ; SOURCE LINE # 75
003C 850000   F      265             MOV     g_KeyStore,g_MsgReturnValue
                     266     ;                               lcd_display_byte(40, 0, TRUE, FALSE, g_MsgReturnValue);
                     267                             ; SOURCE LINE # 76
003F D200     F      268             SETB    ?_lcd_display_byte?BIT
0041 C200     F      269             CLR     ?_lcd_display_byte?BIT+01H
0043 900000   F      270             MOV     DPTR,#?_lcd_display_byte?BYTE+02H
0046 E500     F      271             MOV     A,g_MsgReturnValue
0048 F0              272             MOVX    @DPTR,A
0049 E4              273             CLR     A
004A FD              274             MOV     R5,A
004B 7F28            275             MOV     R7,#028H
004D 120000   F      276             LCALL   _lcd_display_byte
                     277     ;                               DEBUG(printf("wangsw = %d", (word)g_MsgReturnValue));
                     278                             ; SOURCE LINE # 77
0050 300012   F      279             JNB     g_bDebug,?C0005
0053 7BFF            280             MOV     R3,#0FFH
0055 7A00     F      281             MOV     R2,#HIGH (?SC_0)
0057 7900     F      282             MOV     R1,#LOW (?SC_0)
0059 900000   F      283             MOV     DPTR,#?_printf?BYTE+03H
005C E4              284             CLR     A
005D F0              285             MOVX    @DPTR,A
005E A3              286             INC     DPTR
005F E500     F      287             MOV     A,g_MsgReturnValue
0061 F0              288             MOVX    @DPTR,A
0062 120000   F      289             LCALL   _printf
0065                 290     ?C0005:
                     291     ;                               if(g_KeyStore == 8)
                     292                             ; SOURCE LINE # 78
0065 E500     F      293             MOV     A,g_KeyStore
0067 B408C0          294             CJNE    A,#08H,?C0001
                     295     ;                               {
                     296                             ; SOURCE LINE # 79
                     297     ;                                       smart_timer_start(MSG_DATA, 2, 1000, 1);
                     298                             ; SOURCE LINE # 80
006A 900000   F      299             MOV     DPTR,#?_smart_timer_start?BYTE+04H
006D 7401            300             MOV     A,#01H
006F F0              301             MOVX    @DPTR,A
0070 7BE8            302             MOV     R3,#0E8H
0072 7A03            303             MOV     R2,#03H
0074 7D02            304             MOV     R5,#02H
0076 7F04            305             MOV     R7,#04H
0078 120000   F      306             LCALL   _smart_timer_start
                     307     ;                               }
                     308                             ; SOURCE LINE # 81
                     309     ;                               break;
                     310                             ; SOURCE LINE # 82
007B 80AD            311             SJMP    ?C0001
                     312     ;                       case MSG_UART:                                          /*r若是串口
                             通信消息,则进行串口通信处理*/
A51 MACRO ASSEMBLER  BOOT                                                                 10/31/2003 02:22:23 PAGE     6

                     313                             ; SOURCE LINE # 83
007D                 314     ?C0007:
                     315     ;                               uart_process();
                     316                             ; SOURCE LINE # 84
007D 120000   F      317             LCALL   uart_process
                     318     ;                               break;
                     319                             ; SOURCE LINE # 85
0080 80A8            320             SJMP    ?C0001
                     321     ;                       case MSG_DATA:
                     322                             ; SOURCE LINE # 86
0082                 323     ?C0008:
                     324     ;                               switch(g_MsgReturnValue)
                     325                             ; SOURCE LINE # 87
0082 80A6            326             SJMP    ?C0001
                     327     ;                                       
                     328     ;                               lcd_display_byte(40, 48, TRUE, FALSE, g_MsgReturnValue);
                     329                             ; SOURCE LINE # 89
                     330     ;                               break;
                     331                             ; SOURCE LINE # 90
                     332     ;                       case MSG_RTC:
                     333                             ; SOURCE LINE # 91
0084                 334     ?C0010:
                     335     ;                               #ifdef SOFT_RTC
                     336     ;                               rtc_soft_process(g_MsgReturnValue);
                     337                             ; SOURCE LINE # 93

⌨️ 快捷键说明

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