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

📄 键盘.lis

📁 本文为4*4键盘扫描程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -