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

📄 keydis_drv.lis

📁 《深入浅出AVR单片机——从ATmega48/88/168开始》的实例程序源代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 014E           X3:
 014E                   .dbline 187
 014E           ;                         break;
 014E           L31:
 014E                   .dbline 191
 014E           ;                     }
 014E           ;                     
 014E           ;                     case 0xFD :
 014E           ;                     {
 014E                   .dbline 192
 014E           ;                         KeyStatu = Key_Press;
 014E 2224              clr R2
 0150 20920100          sts L10,R2
 0154                   .dbline 193
 0154           ;                         return Key_7;
 0154 07E0              ldi R16,7
 0156 22C0              rjmp L9
 0158           X4:
 0158                   .dbline 194
 0158           ;                         break;
 0158           L32:
 0158                   .dbline 198
 0158           ;                     }
 0158           ;                     
 0158           ;                     case 0xFB :
 0158           ;                     {
 0158                   .dbline 199
 0158           ;                         KeyStatu = Key_Press;
 0158 2224              clr R2
 015A 20920100          sts L10,R2
 015E                   .dbline 200
 015E           ;                         return Key_6;
 015E 06E0              ldi R16,6
 0160 1DC0              rjmp L9
 0162           X5:
 0162                   .dbline 201
 0162           ;                         break;
 0162           L33:
 0162                   .dbline 205
 0162           ;                     }
 0162           ;                     
 0162           ;                     case 0xF7 :
 0162           ;                     {
 0162                   .dbline 206
 0162           ;                         KeyStatu = Key_Press;
 0162 2224              clr R2
 0164 20920100          sts L10,R2
 0168                   .dbline 207
 0168           ;                         return Key_5;
 0168 05E0              ldi R16,5
 016A 18C0              rjmp L9
 016C           X6:
 016C                   .dbline 208
 016C           ;                         break;
 016C           L34:
 016C                   .dbline 212
 016C           ;                     }
 016C           ;                     
 016C           ;                     case 0xEF :
 016C           ;                     {
 016C                   .dbline 213
 016C           ;                         KeyStatu = Key_Press;
 016C 2224              clr R2
 016E 20920100          sts L10,R2
 0172                   .dbline 214
 0172           ;                         return Key_4;
 0172 04E0              ldi R16,4
 0174 13C0              rjmp L9
 0176           X7:
 0176                   .dbline 215
 0176           ;                         break;
 0176           L35:
 0176                   .dbline 219
 0176           ;                     }
 0176           ;                     
 0176           ;                     case 0xDF :
 0176           ;                     {
 0176                   .dbline 220
 0176           ;                         KeyStatu = Key_Press;
 0176 2224              clr R2
 0178 20920100          sts L10,R2
 017C                   .dbline 221
 017C           ;                         return Key_3;
 017C 03E0              ldi R16,3
 017E 0EC0              rjmp L9
 0180           X8:
 0180                   .dbline 222
 0180           ;                         break;
 0180           L36:
 0180                   .dbline 226
 0180           ;                     }
 0180           ;                     
 0180           ;                     case 0xBF :
 0180           ;                     {
 0180                   .dbline 227
 0180           ;                         KeyStatu = Key_Press;
 0180 2224              clr R2
 0182 20920100          sts L10,R2
 0186                   .dbline 228
 0186           ;                         return Key_2;
 0186 02E0              ldi R16,2
 0188 09C0              rjmp L9
 018A           X9:
 018A                   .dbline 229
 018A           ;                         break;
 018A           L37:
 018A                   .dbline 233
 018A           ;                     }
 018A           ;                     
 018A           ;                     case 0x7F :
 018A           ;                     {
 018A                   .dbline 234
 018A           ;                         KeyStatu = Key_Press;
 018A 2224              clr R2
 018C 20920100          sts L10,R2
 0190                   .dbline 235
 0190           ;                         return Key_1;
 0190 01E0              ldi R16,1
 0192 04C0              rjmp L9
 0194           X10:
 0194                   .dbline 236
 0194           ;                         break;
 0194           L27:
 0194                   .dbline 239
 0194           ;                     }
 0194           ;                 }
 0194           ;                 KeyStatu = Key_Press;           //读到的端口状态无法解析
 0194 2224              clr R2
 0196 20920100          sts L10,R2
 019A                   .dbline 240
 019A           ;             }                               //End Of "if (KeyPin == 0)"
 019A                   .dbline 241
 019A           ;             break;
 019A           L13:
 019A           L14:
 019A                   .dbline 244
 019A           ;         }                                   //End Of " case Key_Release :"
 019A           ;     }                                       //End Of "switch (KeyStatu)"
 019A           ;     return Key_Null;
 019A 0027              clr R16
 019C                   .dbline -2
 019C           L9:
 019C                   .dbline 0 ; func end
 019C 0895              ret
 019E                   .dbend
 019E                   .dbfunc e Port_refresh _Port_refresh fV
 019E           ;              i -> R16
                        .even
 019E           _Port_refresh::
 019E                   .dbline -1
 019E                   .dbline 254
 019E           ; }
 019E           ; 
 019E           ; /***********************************************************
 019E           ; *   函数说明:端口通讯程序                                 *
 019E           ; *   输入:    无                                           *
 019E           ; *   输出:    无                                           *
 019E           ; *   调用函数:                                             *
 019E           ; ***********************************************************/
 019E           ; void Port_refresh (void)
 019E           ; {
 019E                   .dbline 257
 019E           ;     unsigned char i;
 019E           ; 
 019E           ;     SS_Low;                         //模拟#SS的下跳沿
 019E 2A98              cbi 0x5,2
 01A0                   .dbline 259
 01A0           ; 
 01A0           ;     for (i=0; i<ExtPortNum; i++)
 01A0 0027              clr R16
 01A2 14C0              rjmp L46
 01A4           L43:
 01A4                   .dbline 260
 01A4           ;     {
 01A4                   .dbline 261
 01A4           ;         SPDR = PortBuffer[i];       //刷新虚拟端口的一个字节
 01A4 80E0              ldi R24,<_PortBuffer
 01A6 90E0              ldi R25,>_PortBuffer
 01A8 E02F              mov R30,R16
 01AA FF27              clr R31
 01AC E80F              add R30,R24
 01AE F91F              adc R31,R25
 01B0 2080              ldd R2,z+0
 01B2 2EBC              out 0x2e,R2
 01B4           L47:
 01B4                   .dbline 262
 01B4           L48:
 01B4                   .dbline 262
 01B4 2DB4              in R2,0x2d
 01B6 27FE              sbrs R2,7
 01B8 FDCF              rjmp L47
 01BA                   .dbline 263
 01BA 80E0              ldi R24,<_PortBuffer
 01BC 90E0              ldi R25,>_PortBuffer
 01BE E02F              mov R30,R16
 01C0 FF27              clr R31
 01C2 E80F              add R30,R24
 01C4 F91F              adc R31,R25
 01C6 2EB4              in R2,0x2e
 01C8 2082              std z+0,R2
 01CA                   .dbline 264
 01CA           L44:
 01CA                   .dbline 259
 01CA 0395              inc R16
 01CC           L46:
 01CC                   .dbline 259
 01CC 0330              cpi R16,3
 01CE 50F3              brlo L43
 01D0                   .dbline 266
 01D0           ;         while(!(SPSR&(1<<SPIF)));   //等待通讯完成
 01D0           ;         PortBuffer[i] = SPDR;       //读回的数据返写回端口缓冲区
 01D0           ;     }
 01D0           ; 
 01D0           ;     SS_High;                        //模拟#SS的上跳沿
 01D0 2A9A              sbi 0x5,2
 01D2                   .dbline -2
 01D2           L42:
 01D2                   .dbline 0 ; func end
 01D2 0895              ret
 01D4                   .dbsym r i 16 c
 01D4                   .dbend
                        .area bss(ram, con, rel)
 0001                   .dbfile D:\设计项目\深入浅出AVR\光盘文件\实例程序源代码\实例15_键盘显示模块\实例15_键盘显示模块-拨号装置\KeyDis_Drv.c
 0001           _KeyBuffer::
 0001                   .blkb 1
 0002                   .dbsym e KeyBuffer _KeyBuffer c
 0002           _LEDDisBuffer::
 0002                   .blkb 8
 000A                   .dbsym e LEDDisBuffer _LEDDisBuffer A[8:8]c
 000A           _PortBuffer::
 000A                   .blkb 3
 000D                   .dbsym e PortBuffer _PortBuffer A[3:3]c

⌨️ 快捷键说明

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