📄 ad_key.lis
字号:
.module AD_key.c
.area text(rom, con, rel)
0000 .dbfile ..\..\..\..\..\DOCUME~1\浪仔\桌面\教学实验板\M16_VS1003_test\AD_key.c
.area vector(rom, abs)
.org 56
0038 0C940000 jmp _AD_handler
.area text(rom, con, rel)
0000 .dbfile ..\..\..\..\..\DOCUME~1\浪仔\桌面\教学实验板\M16_VS1003_test\AD_key.c
.area vector(rom, abs)
.org 36
0024 0C94AE00 jmp _TC0_handler
.area text(rom, con, rel)
0000 .dbfile ..\..\..\..\..\DOCUME~1\浪仔\桌面\教学实验板\M16_VS1003_test\AD_key.c
0000 .dbfile C:\DOCUME~1\浪仔\桌面\教学实验板\M16_VS1003_test\AD_key.c
0000 .dbfunc e AD_handler _AD_handler fV
.even
0000 _AD_handler::
0000 2A92 st -y,R2
0002 3A92 st -y,R3
0004 4A92 st -y,R4
0006 5A92 st -y,R5
0008 0A93 st -y,R16
000A 8A93 st -y,R24
000C 9A93 st -y,R25
000E 2FB6 IN R2,63
0010 2A92 st -y,R2
0012 .dbline -1
0012 .dbline 26
0012 ;
0012 ;
0012 ; //---------------------------- AD键盘驱动程序 ----------------------------
0012 ; //
0012 ; //简易AD键盘驱动程序
0012 ; //代码作者:廖华明(师兄)
0012 ; //时间:2009.7.8
0012 ; //
0012 ; //------------------------------------------------------------------------
0012 ;
0012 ; #include "AD_key.h"
0012 ;
0012 ; //---------全局变量定义----------//
0012 ; uint8 AD_data,AD_data1,AD_data2;
0012 ; uint8 tmp;
0012 ; uint8 AD_Flag,AD_time;
0012 ; uint8 key_num;
0012 ;
0012 ;
0012 ; //-------------------------------//
0012 ; //
0012 ; // AD中断处理函数
0012 ; //
0012 ; //-------------------------------//
0012 ; void AD_handler(void)
0012 ; {
0012 .dbline 27
0012 ; AD_data=ADCH;
0012 25B0 in R2,0x5
0014 20920600 sts _AD_data,R2
0018 .dbline 29
0018 ;
0018 ; if(AD_data>=0xF0)
0018 822D mov R24,R2
001A 803F cpi R24,240
001C 30F0 brlo L2
001E X0:
001E .dbline 30
001E ; {
001E .dbline 31
001E ; AD_Flag=0;
001E 2224 clr R2
0020 20920300 sts _AD_Flag,R2
0024 .dbline 32
0024 ; AD_time=0;
0024 20920200 sts _AD_time,R2
0028 .dbline 33
0028 ; }
0028 81C0 xjmp L3
002A L2:
002A .dbline 34
002A ; else if(AD_Flag==0)
002A 20900300 lds R2,_AD_Flag
002E 2220 tst R2
0030 09F0 breq X18
0032 7CC0 xjmp L4
0034 X18:
0034 X1:
0034 .dbline 35
0034 ; {
0034 .dbline 36
0034 ; AD_time++;
0034 80910200 lds R24,_AD_time
0038 8F5F subi R24,255 ; addi 1
003A 80930200 sts _AD_time,R24
003E .dbline 37
003E ; if(AD_time==3)
003E 8330 cpi R24,3
0040 09F0 breq X19
0042 63C0 xjmp L6
0044 X19:
0044 X2:
0044 .dbline 38
0044 ; {
0044 .dbline 39
0044 ; if(AD_data1>AD_data2) tmp = AD_data2;
0044 20900400 lds R2,_AD_data2
0048 3324 clr R3
004A 40900500 lds R4,_AD_data1
004E 5524 clr R5
0050 2414 cp R2,R4
0052 3504 cpc R3,R5
0054 1CF4 brge L8
0056 X3:
0056 .dbline 39
0056 20920100 sts _tmp,R2
005A 04C0 xjmp L9
005C L8:
005C .dbline 40
005C ; else tmp = AD_data1;
005C 20900500 lds R2,_AD_data1
0060 20920100 sts _tmp,R2
0064 L9:
0064 .dbline 41
0064 ; if(tmp>AD_data) tmp = AD_data;
0064 20900600 lds R2,_AD_data
0068 3324 clr R3
006A 40900100 lds R4,_tmp
006E 5524 clr R5
0070 2414 cp R2,R4
0072 3504 cpc R3,R5
0074 14F4 brge L10
0076 X4:
0076 .dbline 41
0076 20920100 sts _tmp,R2
007A L10:
007A .dbline 43
007A ;
007A ; if(tmp<0x0F) key_num = 1;
007A 80910100 lds R24,_tmp
007E 8F30 cpi R24,15
0080 20F4 brsh L12
0082 X5:
0082 .dbline 43
0082 81E0 ldi R24,1
0084 80930000 sts _key_num,R24
0088 3CC0 xjmp L13
008A L12:
008A .dbline 44
008A ; else if(tmp>0x7C&&tmp<0x8F)key_num=2;
008A 20900100 lds R2,_tmp
008E 8CE7 ldi R24,124
0090 8215 cp R24,R2
0092 38F4 brsh L14
0094 X6:
0094 822D mov R24,R2
0096 8F38 cpi R24,143
0098 20F4 brsh L14
009A X7:
009A .dbline 44
009A 82E0 ldi R24,2
009C 80930000 sts _key_num,R24
00A0 30C0 xjmp L15
00A2 L14:
00A2 .dbline 45
00A2 ; else if(tmp>0xBC&&tmp<0xCA)key_num=3;
00A2 20900100 lds R2,_tmp
00A6 8CEB ldi R24,188
00A8 8215 cp R24,R2
00AA 38F4 brsh L16
00AC X8:
00AC 822D mov R24,R2
00AE 8A3C cpi R24,202
00B0 20F4 brsh L16
00B2 X9:
00B2 .dbline 45
00B2 83E0 ldi R24,3
00B4 80930000 sts _key_num,R24
00B8 24C0 xjmp L17
00BA L16:
00BA .dbline 46
00BA ; else if(tmp>0xA8&&tmp<0xBC)key_num=4;
00BA 00910100 lds R16,_tmp
00BE 88EA ldi R24,168
00C0 8017 cp R24,R16
00C2 30F4 brsh L18
00C4 X10:
00C4 0C3B cpi R16,188
00C6 20F4 brsh L18
00C8 X11:
00C8 .dbline 46
00C8 84E0 ldi R24,4
00CA 80930000 sts _key_num,R24
00CE 19C0 xjmp L19
00D0 L18:
00D0 .dbline 47
00D0 ; else if(tmp>0xD2&&tmp<0xDF)key_num=5;
00D0 00910100 lds R16,_tmp
00D4 82ED ldi R24,210
00D6 8017 cp R24,R16
00D8 30F4 brsh L20
00DA X12:
00DA 0F3D cpi R16,223
00DC 20F4 brsh L20
00DE X13:
00DE .dbline 47
00DE 85E0 ldi R24,5
00E0 80930000 sts _key_num,R24
00E4 0EC0 xjmp L21
00E6 L20:
00E6 .dbline 48
00E6 ; else if(tmp>0xC9&&tmp<0xD3)key_num=6;
00E6 00910100 lds R16,_tmp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -