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

📄 misc.lis

📁 AVR单片机C语言程序设计实例精粹
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01AE                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
 01AE                   .dbfunc e swGet_Key3 _swGet_Key3 fi
 01AE                   .dbsym s wKeyStatus L52 i
                        .even
 01AE           _swGet_Key3::
 01AE                   .dbline -1
 01AE                   .dbline 174
 01AE           ; }
 01AE           ; 
 01AE           ; //******************************************************************************
 01AE           ; // Function    : swGet_Key3
 01AE           ; // Input       : none
 01AE           ; // Output      : true - Key3 active; false - Key3 - passitive
 01AE           ; // Description : Key3 Detection,rising edge active
 01AE           ; //******************************************************************************
 01AE           ; INT16U swGet_Key3(void)
 01AE           ; {
 01AE                   .dbline 176
 01AE           ;       static INT16U wKeyStatus = 1;
 01AE           ;       if(wKeyStatus == 1)
 01AE 80910800          lds R24,L52
 01B2 90910900          lds R25,L52+1
 01B6 8130              cpi R24,1
 01B8 E0E0              ldi R30,0
 01BA 9E07              cpc R25,R30
 01BC 49F4              brne L53
 01BE                   .dbline 177
 01BE           ;       {
 01BE                   .dbline 178
 01BE           ;               if((PINB & (1 << cKey3)) == 0) //Key Pressed
 01BE B299              sbic 0x16,2
 01C0 1AC0              rjmp L54
 01C2                   .dbline 179
 01C2           ;               {
 01C2                   .dbline 180
 01C2           ;                       wKeyStatus = 0;
 01C2 2224              clr R2
 01C4 3324              clr R3
 01C6 30920900          sts L52+1,R3
 01CA 20920800          sts L52,R2
 01CE                   .dbline 181
 01CE           ;               }
 01CE                   .dbline 182
 01CE           ;       }
 01CE 13C0              xjmp L54
 01D0           L53:
 01D0                   .dbline 183
 01D0           ;       else if(wKeyStatus == 0)
 01D0 20900800          lds R2,L52
 01D4 30900900          lds R3,L52+1
 01D8 2220              tst R2
 01DA 69F4              brne L57
 01DC 3320              tst R3
 01DE 59F4              brne L57
 01E0           X5:
 01E0                   .dbline 184
 01E0           ;       {
 01E0                   .dbline 185
 01E0           ;               if(PINB & (1 << cKey3))       //Key Released
 01E0 B29B              sbis 0x16,2
 01E2 09C0              rjmp L59
 01E4                   .dbline 186
 01E4           ;               {
 01E4                   .dbline 187
 01E4           ;                       wKeyStatus = 1;
 01E4 81E0              ldi R24,1
 01E6 90E0              ldi R25,0
 01E8 90930900          sts L52+1,R25
 01EC 80930800          sts L52,R24
 01F0                   .dbline 188
 01F0           ;                       return(true);
 01F0 01E0              ldi R16,1
 01F2 10E0              ldi R17,0
 01F4 02C0              xjmp L51
 01F6           L59:
 01F6                   .dbline 190
 01F6           ;               }
 01F6           ;       }
 01F6           L57:
 01F6           L54:
 01F6                   .dbline 191
 01F6           ;       return(false);
 01F6 0027              clr R16
 01F8 1127              clr R17
 01FA                   .dbline -2
 01FA           L51:
 01FA                   .dbline 0 ; func end
 01FA 0895              ret
 01FC                   .dbend
                        .area data(ram, con, rel)
 000A                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
 000A           L62:
 000A                   .blkb 2
                        .area idata
 000A 0100              .word 1
                        .area data(ram, con, rel)
 000C                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
                        .area text(rom, con, rel)
 01FC                   .dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任务模拟系统设计\misc.c
 01FC                   .dbfunc e swGet_Key4 _swGet_Key4 fi
 01FC                   .dbsym s wKeyStatus L62 i
                        .even
 01FC           _swGet_Key4::
 01FC                   .dbline -1
 01FC                   .dbline 201
 01FC           ; }
 01FC           ; 
 01FC           ; //******************************************************************************
 01FC           ; // Function    : swGet_Key4
 01FC           ; // Input       : none
 01FC           ; // Output      : true - Key4 active; false - Key4 - passitive
 01FC           ; // Description : Key4 Detection,rising edge active
 01FC           ; //******************************************************************************
 01FC           ; INT16U swGet_Key4(void)
 01FC           ; {
 01FC                   .dbline 203
 01FC           ;       static INT16U wKeyStatus = 1;
 01FC           ;       if(wKeyStatus == 1)
 01FC 80910A00          lds R24,L62
 0200 90910B00          lds R25,L62+1
 0204 8130              cpi R24,1
 0206 E0E0              ldi R30,0
 0208 9E07              cpc R25,R30
 020A 49F4              brne L63
 020C                   .dbline 204
 020C           ;       {
 020C                   .dbline 205
 020C           ;               if((PINB & (1 << cKey4)) == 0) //Key Pressed
 020C B399              sbic 0x16,3
 020E 1AC0              rjmp L64
 0210                   .dbline 206
 0210           ;               {
 0210                   .dbline 207
 0210           ;                       wKeyStatus = 0;
 0210 2224              clr R2
 0212 3324              clr R3
 0214 30920B00          sts L62+1,R3
 0218 20920A00          sts L62,R2
 021C                   .dbline 208
 021C           ;               }
 021C                   .dbline 209
 021C           ;       }
 021C 13C0              xjmp L64
 021E           L63:
 021E                   .dbline 210
 021E           ;       else if(wKeyStatus == 0)
 021E 20900A00          lds R2,L62
 0222 30900B00          lds R3,L62+1
 0226 2220              tst R2
 0228 69F4              brne L67
 022A 3320              tst R3
 022C 59F4              brne L67
 022E           X6:
 022E                   .dbline 211
 022E           ;       {
 022E                   .dbline 212
 022E           ;               if(PINB & (1 << cKey4))       //Key Released
 022E B39B              sbis 0x16,3
 0230 09C0              rjmp L69
 0232                   .dbline 213
 0232           ;               {
 0232                   .dbline 214
 0232           ;                       wKeyStatus = 1;
 0232 81E0              ldi R24,1
 0234 90E0              ldi R25,0
 0236 90930B00          sts L62+1,R25
 023A 80930A00          sts L62,R24
 023E                   .dbline 215
 023E           ;                       return(true);
 023E 01E0              ldi R16,1
 0240 10E0              ldi R17,0
 0242 02C0              xjmp L61
 0244           L69:
 0244                   .dbline 217
 0244           ;               }
 0244           ;       }
 0244           L67:
 0244           L64:
 0244                   .dbline 218
 0244           ;       return(false);
 0244 0027              clr R16
 0246 1127              clr R17
 0248                   .dbline -2
 0248           L61:
 0248                   .dbline 0 ; func end
 0248 0895              ret
 024A                   .dbend
 024A                   .dbfunc e Key_Detection _Key_Detection fV
                        .even
 024A           _Key_Detection::
 024A                   .dbline -1
 024A                   .dbline 228
 024A           ; }
 024A           ; 
 024A           ; //******************************************************************************
 024A           ; // Function    : Key_Detection
 024A           ; // Input       : none
 024A           ; // Output      : none
 024A           ; // Description : Keys Detection.if active,send Key Event to task
 024A           ; //******************************************************************************
 024A           ; void Key_Detection(void)
 024A           ; {
 024A                   .dbline 229
 024A           ;       if(swGet_Key1() == true)
 024A 63DF              xcall _swGet_Key1
 024C 0130              cpi R16,1
 024E E0E0              ldi R30,0
 0250 1E07              cpc R17,R30
 0252 29F4              brne L72
 0254                   .dbline 230
 0254           ;       {
 0254                   .dbline 231
 0254           ;               OS_Event_Post(cPrioTask1,eTask1_Key);
 0254 21E0              ldi R18,1
 0256 30E0              ldi R19,0
 0258 0027              clr R16
 025A 0E940000          xcall _OS_Event_Post
 025E                   .dbline 232
 025E           ;       }
 025E           L72:
 025E                   .dbline 233
 025E           ;       if(swGet_Key2() == true)
 025E 80DF              xcall _swGet_Key2
 0260 0130              cpi R16,1
 0262 E0E0              ldi R30,0
 0264 1E07              cpc R17,R30
 0266 29F4              brne L74
 0268                   .dbline 234
 0268           ;       {
 0268                   .dbline 235
 0268           ;               OS_Event_Post(cPrioTask2,eTask2_Key);
 0268 21E0              ldi R18,1
 026A 30E0              ldi R19,0
 026C 01E0              ldi R16,1
 026E 0E940000          xcall _OS_Event_Post
 0272                   .dbline 236
 0272           ;       }
 0272           L74:
 0272                   .dbline 237
 0272           ;       if(swGet_Key3() == true)
 0272 9DDF              xcall _swGet_Key3
 0274 0130              cpi R16,1
 0276 E0E0              ldi R30,0
 0278 1E07              cpc R17,R30
 027A 29F4              brne L76
 027C                   .dbline 238
 027C           ;       {
 027C                   .dbline 239
 027C           ;               OS_Event_Post(cPrioTask3,eTask3_Key);
 027C 21E0              ldi R18,1
 027E 30E0              ldi R19,0
 0280 02E0              ldi R16,2
 0282 0E940000          xcall _OS_Event_Post
 0286                   .dbline 240
 0286           ;       }
 0286           L76:
 0286                   .dbline 241
 0286 BADF              xcall _swGet_Key4
 0288 0130              cpi R16,1
 028A E0E0              ldi R30,0
 028C 1E07              cpc R17,R30
 028E 29F4              brne L78
 0290                   .dbline 242
 0290                   .dbline 243
 0290 21E0              ldi R18,1
 0292 30E0              ldi R19,0
 0294 03E0              ldi R16,3
 0296 0E940000          xcall _OS_Event_Post
 029A                   .dbline 244
 029A           L78:
 029A                   .dbline -2
 029A                   .dbline 245
 029A           ;       if(swGet_Key4() == true)
 029A           ;       {
 029A           ;               OS_Event_Post(cPrioTask4,eTask4_Key);
 029A           ;       }
 029A           ; }
 029A           L71:
 029A                   .dbline 0 ; func end
 029A 0895              ret
 029C                   .dbend

⌨️ 快捷键说明

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