📄 keyboard_driver.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 + -