📄 键盘.lis
字号:
.module _键盘.c
.area text(rom, con, rel)
0000 .dbfile D:\学习工具\单片机程序\键盘\键盘.c
.area data(ram, con, rel)
0000 .dbfile D:\学习工具\单片机程序\键盘\键盘.c
0000 _A::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .dbfile D:\学习工具\单片机程序\键盘\键盘.c
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .dbfile D:\学习工具\单片机程序\键盘\键盘.c
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .dbfile D:\学习工具\单片机程序\键盘\键盘.c
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .dbfile D:\学习工具\单片机程序\键盘\键盘.c
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile D:\学习工具\单片机程序\键盘\键盘.c
000A .blkb 2
.area idata
000A 777F .byte 'w,127
.area data(ram, con, rel)
000C .dbfile D:\学习工具\单片机程序\键盘\键盘.c
000C .blkb 2
.area idata
000C 393F .byte 57,63
.area data(ram, con, rel)
000E .dbfile D:\学习工具\单片机程序\键盘\键盘.c
000E .blkb 2
.area idata
000E 7971 .byte 'y,'q
.area data(ram, con, rel)
0010 .dbfile D:\学习工具\单片机程序\键盘\键盘.c
0010 .dbsym e A _A A[16:16]c
.area text(rom, con, rel)
0000 .dbfile D:\学习工具\单片机程序\键盘\键盘.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; x -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_xgsetF000
0004 .dbline -1
0004 .dbline 10
0004 ; //ICC-AVR application builder : 2008-10-16 19:41:41
0004 ; // Target : M16
0004 ; // Crystal: 8.0000Mhz
0004 ;
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; unsigned char A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7f,0x39,0x3f,0x79,0x71};
0004 ;
0004 ; void delay(unsigned int x)
0004 ; {
0004 .dbline 12
0004 ; int i,j;
0004 ; for(i=0;i<x;i++)
0004 4427 clr R20
0006 5527 clr R21
0008 0AC0 xjmp L5
000A L2:
000A .dbline 13
000A ; for(j=0;j<8000;j++)
000A 6627 clr R22
000C 7727 clr R23
000E L6:
000E .dbline 14
000E ; ;
000E L7:
000E .dbline 13
000E 6F5F subi R22,255 ; offset = 1
0010 7F4F sbci R23,255
0012 .dbline 13
0012 6034 cpi R22,64
0014 EFE1 ldi R30,31
0016 7E07 cpc R23,R30
0018 D4F3 brlt L6
001A X0:
001A L3:
001A .dbline 12
001A 4F5F subi R20,255 ; offset = 1
001C 5F4F sbci R21,255
001E L5:
001E .dbline 12
001E 4017 cp R20,R16
0020 5107 cpc R21,R17
0022 98F3 brlo L2
0024 X1:
0024 .dbline -2
0024 L1:
0024 .dbline 0 ; func end
0024 0C940000 xjmp pop_xgsetF000
0028 .dbsym r i 20 I
0028 .dbsym r j 22 I
0028 .dbsym r x 16 i
0028 .dbend
0028 .dbfunc e read_key _read_key fc
0028 ; l -> <dead>
0028 ; k -> <dead>
0028 ; key_value -> R10
0028 ; j -> R22
0028 ; i -> R20
.even
0028 _read_key::
0028 0E940000 xcall push_xgsetF00C
002C 402F mov R20,R16
002E .dbline -1
002E .dbline 18
002E ; }
002E ;
002E ; unsigned char read_key(unsigned char i)
002E ; {
002E .dbline 19
002E ; unsigned char j,k,l,key_value=0;
002E AA24 clr R10
0030 .dbline 20
0030 ; PORTD=0x0F;
0030 8FE0 ldi R24,15
0032 82BB out 0x12,R24
0034 .dbline 22
0034 ; //DDRD=0xF0;
0034 ; if((PIND&0X0f)==0x0f) return 0xff;
0034 80B3 in R24,0x10
0036 8F70 andi R24,15
0038 8F30 cpi R24,15
003A 11F4 brne L11
003C X2:
003C .dbline 22
003C 0FEF ldi R16,255
003E 29C0 xjmp L10
0040 L11:
0040 .dbline 24
0040 ; else
0040 ; {delay(5);
0040 .dbline 24
0040 05E0 ldi R16,5
0042 10E0 ldi R17,0
0044 DDDF xcall _delay
0046 .dbline 25
0046 ; if((PIND&0x0f)==0x0f) return 0xff;
0046 80B3 in R24,0x10
0048 8F70 andi R24,15
004A 8F30 cpi R24,15
004C 11F4 brne L13
004E X3:
004E .dbline 25
004E 0FEF ldi R16,255
0050 20C0 xjmp L10
0052 L13:
0052 .dbline 27
0052 ; else
0052 ; for(i=4;i<8;i++)
0052 44E0 ldi R20,4
0054 1BC0 xjmp L18
0056 L15:
0056 .dbline 28
0056 ; {
0056 .dbline 29
0056 ; PORTD=~(1<<i)| 0x0f;
0056 01E0 ldi R16,1
0058 142F mov R17,R20
005A 0E940000 xcall lsl8
005E 802F mov R24,R16
0060 8095 com R24
0062 8F60 ori R24,15
0064 82BB out 0x12,R24
0066 .dbline 30
0066 ; for(j=0;j<4;j++)
0066 6627 clr R22
0068 0EC0 xjmp L22
006A L19:
006A .dbline 31
006A ; {
006A .dbline 32
006A ; if((PIND&(1<<j))==0)
006A 01E0 ldi R16,1
006C 162F mov R17,R22
006E 0E940000 xcall lsl8
0072 20B2 in R2,0x10
0074 2022 and R2,R16
0076 31F4 brne L23
0078 X4:
0078 .dbline 33
0078 ; key_value=(i-4)*4+j;
0078 842F mov R24,R20
007A 8450 subi R24,4
007C A82E mov R10,R24
007E AA0C lsl R10
0080 AA0C lsl R10
0082 A60E add R10,R22
0084 L23:
0084 .dbline 34
0084 ; }
0084 L20:
0084 .dbline 30
0084 6395 inc R22
0086 L22:
0086 .dbline 30
0086 6430 cpi R22,4
0088 80F3 brlo L19
008A X5:
008A .dbline 35
008A ; }
008A L16:
008A .dbline 27
008A 4395 inc R20
008C L18:
008C .dbline 27
008C 4830 cpi R20,8
008E 18F3 brlo L15
0090 X6:
0090 .dbline 36
0090 ; return key_value;
0090 0A2D mov R16,R10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -