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

📄 keyboard_driver.lis

📁 单片机 mega16L 电池放电器源码
💻 LIS
字号:
                        .module keyboard_Driver.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\keyboard_Driver.c
 0000                   .dbfunc e key _key fi
 0000           ;             pb -> R22
 0000           ;              a -> R20
                        .even
 0000           _key::
 0000 00D0              rcall push_gset2
 0002 402F              mov R20,R16
 0004                   .dbline -1
 0004                   .dbline 7
 0004           ; #include <iom8v.h>
 0004           ; #include <macros.h>
 0004           ; #include "discharge.h"
 0004           ;  unsigned char key_old;
 0004           ;  unsigned char key_time;
 0004           ; unsigned int key(unsigned char a)
 0004           ; {
 0004                   .dbline 8
 0004           ;  unsigned char pb=0;
 0004 6627              clr R22
 0006                   .dbline 9
 0006           ;  if(a==0)
 0006 4423              tst R20
 0008 99F5              brne L2
 000A                   .dbline 10
 000A           ;  {  
 000A                   .dbline 11
 000A           ;     delay_nms(1);
 000A 01E0              ldi R16,1
 000C 10E0              ldi R17,0
 000E 00D0              rcall _delay_nms
 0010                   .dbline 12
 0010           ;     pb=(~PINB)&0x39;
 0010 66B3              in R22,0x16
 0012 6095              com R22
 0014 6973              andi R22,57
 0016                   .dbline 13
 0016           ;       a=(pb>>2)|(pb&0x01); 
 0016 862F              mov R24,R22
 0018 8170              andi R24,1
 001A 462F              mov R20,R22
 001C 4695              lsr R20
 001E 4695              lsr R20
 0020 482B              or R20,R24
 0022                   .dbline 14
 0022           ;       if(a==key_old)
 0022 20900100          lds R2,_key_old
 0026 4215              cp R20,R2
 0028 99F4              brne L4
 002A                   .dbline 15
 002A           ;         {
 002A                   .dbline 16
 002A           ;           key_time++;
 002A 80910000          lds R24,_key_time
 002E 8F5F              subi R24,255    ; addi 1
 0030 80930000          sts _key_time,R24
 0034                   .dbline 17
 0034           ;                if(key_time==20)
 0034 8431              cpi R24,20
 0036 49F4              brne L6
 0038                   .dbline 18
 0038           ;                  {a|=0x10;key_old=a;key_time=0;return a;}
 0038                   .dbline 18
 0038 4061              ori R20,16
 003A                   .dbline 18
 003A 40930100          sts _key_old,R20
 003E                   .dbline 18
 003E 2224              clr R2
 0040 20920000          sts _key_time,R2
 0044                   .dbline 18
 0044 042F              mov R16,R20
 0046 1127              clr R17
 0048 15C0              rjmp L1
 004A           L6:
 004A                   .dbline 20
 004A           ;                else
 004A           ;               return 0;
 004A 0027              clr R16
 004C 1127              clr R17
 004E 12C0              rjmp L1
 0050           L4:
 0050                   .dbline 23
 0050           ;       }
 0050           ;         else 
 0050           ;           {
 0050                   .dbline 24
 0050           ;                 if(a==(key_old&~0x10)){return 0;}
 0050 80910100          lds R24,_key_old
 0054 8F7E              andi R24,239
 0056 4817              cp R20,R24
 0058 19F4              brne L8
 005A                   .dbline 24
 005A                   .dbline 24
 005A 0027              clr R16
 005C 1127              clr R17
 005E 0AC0              rjmp L1
 0060           L8:
 0060                   .dbline 25
 0060           ;                else  key_old=a;key_time=0;return a;
 0060 40930100          sts _key_old,R20
 0064                   .dbline 25
 0064 2224              clr R2
 0066 20920000          sts _key_time,R2
 006A                   .dbline 25
 006A 042F              mov R16,R20
 006C 1127              clr R17
 006E 02C0              rjmp L1
 0070           L2:
 0070                   .dbline 28
 0070           ;               }
 0070           ;  }
 0070           ;  return a;
 0070 042F              mov R16,R20
 0072 1127              clr R17
 0074                   .dbline -2
 0074           L1:
 0074 00D0              rcall pop_gset2
 0076                   .dbline 0 ; func end
 0076 0895              ret
 0078                   .dbsym r pb 22 c
 0078                   .dbsym r a 20 c
 0078                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\keyboard_Driver.c
 0000           _key_time::
 0000                   .blkb 1
 0001                   .dbsym e key_time _key_time c
 0001           _key_old::
 0001                   .blkb 1
 0002                   .dbsym e key_old _key_old c

⌨️ 快捷键说明

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