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

📄 task.lis

📁 AVR单片机C语言程序设计实例精粹
💻 LIS
字号:
                        .module Task.c
                        .area lit(rom, con, rel)
 0000           _LcdWindowFunc::
 0000 00                .byte 0
 0001 0800              .word PL_LCD_Window0_Process
 0003 01                .byte 1
 0004 0600              .word PL_LCD_Window1_Process
 0006 02                .byte 2
 0007 0400              .word PL_LCD_Window2_Process
 0009 03                .byte 3
 000A 0200              .word PL_LCD_Window3_Process
 000C 04                .byte 4
 000D 0000              .word PL_LCD_Window4_Process
 000F                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
 000F                   .dbsym e LcdWindowFunc _LcdWindowFunc A[15:5]kX
                        .area data(ram, con, rel)
 0000                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
 0000           _bWindowIndex::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
 0001                   .dbsym e bWindowIndex _bWindowIndex c
 0001           _bWindowIndexPre::
 0001                   .blkb 1
                        .area idata
 0001 FF                .byte 255
                        .area data(ram, con, rel)
 0002                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
 0002                   .dbsym e bWindowIndexPre _bWindowIndexPre c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
 0000                   .dbfunc e LCD_Task_Init _LCD_Task_Init fV
                        .even
 0000           _LCD_Task_Init::
 0000                   .dbline -1
 0000                   .dbline 41
 0000           ; //***************************************************************
 0000           ; // File Name : Task.c
 0000           ; // Author    : Steaven
 0000           ; // Created   : 2008-06-09
 0000           ; // Modified  : 
 0000           ; // Revision  : V0.0
 0000           ; //***************************************************************
 0000           ; 
 0000           ; #include "app.h"
 0000           ; 
 0000           ; //constant definition
 0000           ; #define cLcdWindowMax 5       //Max of Display Page
 0000           ; 
 0000           ; //LCD Display Window List
 0000           ; const struct lcdwindowfunc      
 0000           ; {
 0000           ;       INT8U bLcdWindowIndex;
 0000           ;       void (*WinExe)();
 0000           ; }LcdWindowFunc[cLcdWindowMax]=    
 0000           ; {
 0000           ;       0,LCD_Window0_Process,
 0000           ;       1,LCD_Window1_Process,
 0000           ;       2,LCD_Window2_Process,
 0000           ;       3,LCD_Window3_Process,
 0000           ;       4,LCD_Window4_Process,
 0000           ; };
 0000           ; 
 0000           ; //globla variables
 0000           ; INT16U wLCD_Event;            //Event for LCD Task
 0000           ; INT16U wGEN_Event;            //Event for GEN Task
 0000           ; INT8U bWindowIndex = 0;       //Current Window Index
 0000           ; INT8U bWindowIndexPre = 0xFF; //Last Window Index
 0000           ; 
 0000           ; //***************************************************************
 0000           ; // Function    : LCD_Task_Init
 0000           ; // Input       : none
 0000           ; // Output      : none
 0000           ; // Description : LCD Task Initialization
 0000           ; //***************************************************************
 0000           ; void LCD_Task_Init(void)
 0000           ; {
 0000                   .dbline 43
 0000           ;       //LCD Display Initialization
 0000           ;       LCD_Init();
 0000 0E940000          xcall _LCD_Init
 0004                   .dbline 45
 0004           ;       //Get Database Length
 0004           ;       wDataBaseLength = Initial_DataBaseLength();
 0004 0E940000          xcall _Initial_DataBaseLength
 0008 10930100          sts _wDataBaseLength+1,R17
 000C 00930000          sts _wDataBaseLength,R16
 0010                   .dbline -2
 0010                   .dbline 46
 0010           ; }
 0010           L1:
 0010                   .dbline 0 ; func end
 0010 0895              ret
 0012                   .dbend
 0012                   .dbfunc e GEN_Task_Init _GEN_Task_Init fV
                        .even
 0012           _GEN_Task_Init::
 0012                   .dbline -1
 0012                   .dbline 55
 0012           ; 
 0012           ; //***************************************************************
 0012           ; // Function    : GEN_Task_Init
 0012           ; // Input       : none
 0012           ; // Output      : none
 0012           ; // Description : GEN Task Initialization
 0012           ; //***************************************************************
 0012           ; void GEN_Task_Init(void)
 0012           ; {
 0012                   .dbline 57
 0012           ;       //Set Initial Time
 0012           ;       sInit_Calendar();
 0012                   .dbline -2
 0012                   .dbline 58
 0012           ; }
 0012           L2:
 0012                   .dbline 0 ; func end
 0012 0C940000          xjmp _sInit_Calendar
 0016                   .dbend
 0016                   .dbfunc e LCD_Task _LCD_Task fV
                        .even
 0016           _LCD_Task::
 0016                   .dbline -1
 0016                   .dbline 67
 0016           ; 
 0016           ; //***************************************************************
 0016           ; // Function    : LCD_Task
 0016           ; // Input       : none
 0016           ; // Output      : none
 0016           ; // Description : LCD Task Process
 0016           ; //***************************************************************
 0016           ; void LCD_Task(void)
 0016           ; {
 0016                   .dbline 68
 0016           ;       LcdWindowFunc[bWindowIndex].WinExe();
 0016 20900000          lds R2,_bWindowIndex
 001A 83E0              ldi R24,3
 001C 829D              mul R24,R2
 001E F001              movw R30,R0
 0020 80E0              ldi R24,<_LcdWindowFunc+1
 0022 90E0              ldi R25,>_LcdWindowFunc+1
 0024 E80F              add R30,R24
 0026 F91F              adc R31,R25
 0028 0590              lpm R0,Z+
 002A 1490              lpm R1,Z
 002C F001              movw R30,R0
 002E 0E940000          xcall xicall
 0032                   .dbline -2
 0032                   .dbline 69
 0032           ; }
 0032           L3:
 0032                   .dbline 0 ; func end
 0032 0895              ret
 0034                   .dbend
                        .area data(ram, con, rel)
 0002                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
 0002           L6:
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data(ram, con, rel)
 0003                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
                        .area text(rom, con, rel)
 0034                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
 0034                   .dbfunc e GEN_Task _GEN_Task fV
 0034                   .dbsym s bCount0 L6 c
                        .even
 0034           _GEN_Task::
 0034                   .dbline -1
 0034                   .dbline 78
 0034           ; 
 0034           ; //***************************************************************
 0034           ; // Function    : GEN_Task
 0034           ; // Input       : none
 0034           ; // Output      : none
 0034           ; // Description : GEN Task Process
 0034           ; //***************************************************************
 0034           ; void GEN_Task(void)
 0034           ; {
 0034 2AC0              xjmp L8
 0036           L7:
 0036                   .dbline 81
 0036           ;       static INT8U bCount0 = 0;
 0036           ;       while(1)   
 0036           ;       {
 0036                   .dbline 82
 0036           ;               if(OS_Task_Switch(cPrioGEN) == true) 
 0036 01E0              ldi R16,1
 0038 0E940000          xcall _OS_Task_Switch
 003C 0130              cpi R16,1
 003E E0E0              ldi R30,0
 0040 1E07              cpc R17,R30
 0042 09F4              brne L10
 0044                   .dbline 83
 0044           ;               {
 0044                   .dbline 84
 0044           ;                       return;                            
 0044 23C0              xjmp L5
 0046           L10:
 0046                   .dbline 86
 0046           ;               }
 0046           ;               wGEN_Event = OS_Event_Pend(cPrioGEN);
 0046 01E0              ldi R16,1
 0048 0E940000          xcall _OS_Event_Pend
 004C 10930100          sts _wGEN_Event+1,R17
 0050 00930000          sts _wGEN_Event,R16
 0054                   .dbline 87
 0054           ;               if(wGEN_Event == 0)                    
 0054 0030              cpi R16,0
 0056 0107              cpc R16,R17
 0058 09F4              brne L12
 005A           X0:
 005A                   .dbline 88
 005A           ;               {
 005A                   .dbline 89
 005A           ;                       return;                          
 005A 18C0              xjmp L5
 005C           L12:
 005C                   .dbline 91
 005C           ;               }
 005C           ;               if(wGEN_Event & (1 << eGENTimer))
 005C 20900000          lds R2,_wGEN_Event
 0060 30900100          lds R3,_wGEN_Event+1
 0064 20FE              sbrs R2,0
 0066 11C0              rjmp L14
 0068                   .dbline 92
 0068           ;               {
 0068                   .dbline 94
 0068           ;                       //Key Detection
 0068           ;                       Key_Detection(); 
 0068 0E940000          xcall _Key_Detection
 006C                   .dbline 96
 006C           ;                       //Calendar Update
 006C           ;                       if(bCount0++ >= 50)
 006C 20900200          lds R2,L6
 0070 3324              clr R3
 0072 822D              mov R24,R2
 0074 8F5F              subi R24,255    ; addi 1
 0076 80930200          sts L6,R24
 007A 822D              mov R24,R2
 007C 8233              cpi R24,50
 007E 28F0              brlo L16
 0080                   .dbline 97
 0080           ;                       {
 0080                   .dbline 98
 0080           ;                               bCount0 = 0;
 0080 2224              clr R2
 0082 20920200          sts L6,R2
 0086                   .dbline 99
 0086           ;                               Calendar_Update();
 0086 0E940000          xcall _Calendar_Update
 008A                   .dbline 100
 008A           ;                       }     
 008A           L16:
 008A                   .dbline 101
 008A           ;               }
 008A           L14:
 008A                   .dbline 102
 008A           L8:
 008A                   .dbline 80
 008A D5CF              xjmp L7
 008C           X1:
 008C                   .dbline -2
 008C                   .dbline 103
 008C           ;       }
 008C           ; }
 008C           L5:
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbend
 008E                   .dbfunc e Task_Init _Task_Init fV
                        .even
 008E           _Task_Init::
 008E                   .dbline -1
 008E                   .dbline 112
 008E           ; 
 008E           ; //******************************************************************************
 008E           ; // Function    : Task_Init
 008E           ; // Input       : none
 008E           ; // Output      : none
 008E           ; // Description : Standard function format,put all tasks Initialization here
 008E           ; //******************************************************************************
 008E           ; void Task_Init(void)
 008E           ; {
 008E                   .dbline 113
 008E           ;       LCD_Task_Init();
 008E B8DF              xcall _LCD_Task_Init
 0090                   .dbline 114
 0090           ;       GEN_Task_Init();
 0090                   .dbline -2
 0090                   .dbline 115
 0090           ; }
 0090           L18:
 0090                   .dbline 0 ; func end
 0090 C0CF              xjmp _GEN_Task_Init
 0092                   .dbend
 0092                   .dbfunc e Task_Start _Task_Start fV
                        .even
 0092           _Task_Start::
 0092                   .dbline -1
 0092                   .dbline 124
 0092           ; 
 0092           ; //******************************************************************************
 0092           ; // Function    : Task_Start
 0092           ; // Input       : none
 0092           ; // Output      : none
 0092           ; // Description : Standard function format,put all tasks into while(1)
 0092           ; //******************************************************************************
 0092           ; void Task_Start(void)
 0092           ; {
 0092 02C0              xjmp L21
 0094           L20:
 0094                   .dbline 126
 0094                   .dbline 127
 0094 C0DF              xcall _LCD_Task
 0096                   .dbline 128
 0096 CEDF              xcall _GEN_Task
 0098                   .dbline 129
 0098           L21:
 0098                   .dbline 125
 0098 FDCF              xjmp L20
 009A           X2:
 009A                   .dbline -2
 009A                   .dbline 130
 009A           ;       while(1)
 009A           ;       {
 009A           ;           LCD_Task();
 009A           ;           GEN_Task();
 009A           ;       }
 009A           ; }
 009A           L19:
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\LCD菜单系统设计\Task.c
 0000           _wGEN_Event::
 0000                   .blkb 2
 0002                   .dbsym e wGEN_Event _wGEN_Event i
 0002           _wLCD_Event::
 0002                   .blkb 2
 0004                   .dbsym e wLCD_Event _wLCD_Event i
                        .area func_lit
 0000 0000      PL_LCD_Window4_Process: .word `_LCD_Window4_Process
 0002 0000      PL_LCD_Window3_Process: .word `_LCD_Window3_Process
 0004 0000      PL_LCD_Window2_Process: .word `_LCD_Window2_Process
 0006 0000      PL_LCD_Window1_Process: .word `_LCD_Window1_Process
 0008 0000      PL_LCD_Window0_Process: .word `_LCD_Window0_Process

⌨️ 快捷键说明

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