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

📄 key.lis

📁 键盘扫描及其LCD显示输出,有源程序与仿真文件,都测试通过.
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module key.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\AVR练习\key_lcd\key.c
                        .area lit(rom, con, rel)
 0000           _table::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A 777C              .byte 'w,124
 000C 395E              .byte 57,94
 000E 4F47              .byte 'O,'G
 0010                   .dbsym e table _table A[16:16]kc
 0010           _table1::
 0010 3F06              .byte 63,6
 0012 5B4F              .byte 91,'O
 0014 666D              .byte 'f,'m
 0016 7D07              .byte 125,7
 0018 7F6F              .byte 127,'o
 001A                   .dbsym e table1 _table1 A[10:10]kc
                        .area text(rom, con, rel)
 0000                   .dbfile F:\AVR练习\key_lcd\key.c
 0000                   .dbfunc e key_read _key_read fc
 0000           ;              i -> R16
                        .even
 0000           _key_read::
 0000                   .dbline -1
 0000                   .dbline 21
 0000           ; 
 0000           ; #include <macros.h>
 0000           ; #include "includes.h"
 0000           ; //#pragma interrupt_handler icp_time1:6
 0000           ; //#define BIT(x) (1<<(x))
 0000           ; #define uchar unsigned char
 0000           ; #define uint unsigned int
 0000           ; const unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
 0000           ;   0x77,0x7c,0x39,0x5e,79,71};//七段译码字形表
 0000           ; const uchar table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
 0000           ; uchar ledbuff[6];//显示缓冲区
 0000           ; uchar led[6];
 0000           ; uint oldcount;
 0000           ; uint newcount;
 0000           ; /*
 0000           ; 键盘扫描函数
 0000           ;  读取当前键盘的状态
 0000           ;  有按键按下返回相应按键值
 0000           ;  无按键按下返回"0x00"
 0000           ; */
 0000           ; uchar key_read(){
 0000                   .dbline 23
 0000           ;  uchar i;
 0000           ;  DDRA = 0x00;/*获取列地址*/
 0000 2224              clr R2
 0002 2ABA              out 0x1a,R2
 0004                   .dbline 24
 0004           ;  PORTA = 0x0F;
 0004 8FE0              ldi R24,15
 0006 8BBB              out 0x1b,R24
 0008                   .dbline 25
 0008           ;  DDRA = 0xF0;
 0008 80EF              ldi R24,240
 000A 8ABB              out 0x1a,R24
 000C                   .dbline 26
 000C           ;  i = PINA;
 000C 09B3              in R16,0x19
 000E                   .dbline 27
 000E           ;  DDRA = 0x00;/*获取行地址*/
 000E 2ABA              out 0x1a,R2
 0010                   .dbline 28
 0010           ;  PORTA = 0xF0;
 0010 8BBB              out 0x1b,R24
 0012                   .dbline 29
 0012           ;  DDRA = 0x0F;
 0012 8FE0              ldi R24,15
 0014 8ABB              out 0x1a,R24
 0016                   .dbline 30
 0016           ;  i&=PINA;
 0016 29B2              in R2,0x19
 0018 0221              and R16,R2
 001A                   .dbline 32
 001A           ;  
 001A           ;  DDRA = 0x00;/*输出复位*/
 001A 2224              clr R2
 001C 2ABA              out 0x1a,R2
 001E                   .dbline 33
 001E           ;  PORTA = 0xFF;
 001E 8FEF              ldi R24,255
 0020 8BBB              out 0x1b,R24
 0022                   .dbline 35
 0022           ;  
 0022           ;  switch (i) {/*将按键码转换成键值*/
 0022 1127              clr R17
 0024 0132              cpi R16,33
 0026 E0E0              ldi R30,0
 0028 1E07              cpc R17,R30
 002A 09F4              brne X1
 002C 5FC0              rjmp L13
 002E           X1:
 002E 0232              cpi R16,34
 0030 E0E0              ldi R30,0
 0032 1E07              cpc R17,R30
 0034 09F4              brne X2
 0036 5CC0              rjmp L14
 0038           X2:
 0038 0432              cpi R16,36
 003A E0E0              ldi R30,0
 003C 1E07              cpc R17,R30
 003E 09F4              brne X3
 0040 59C0              rjmp L15
 0042           X3:
 0042 0832              cpi R16,40
 0044 E0E0              ldi R30,0
 0046 1E07              cpc R17,R30
 0048 09F4              brne X4
 004A 56C0              rjmp L16
 004C           X4:
 004C 88E2              ldi R24,40
 004E 90E0              ldi R25,0
 0050 8017              cp R24,R16
 0052 9107              cpc R25,R17
 0054 ACF0              brlt L22
 0056           L21:
 0056 0131              cpi R16,17
 0058 E0E0              ldi R30,0
 005A 1E07              cpc R17,R30
 005C 09F4              brne X5
 005E 4EC0              rjmp L17
 0060           X5:
 0060 0231              cpi R16,18
 0062 E0E0              ldi R30,0
 0064 1E07              cpc R17,R30
 0066 09F4              brne X6
 0068 4BC0              rjmp L18
 006A           X6:
 006A 0431              cpi R16,20
 006C E0E0              ldi R30,0
 006E 1E07              cpc R17,R30
 0070 09F4              brne X7
 0072 48C0              rjmp L19
 0074           X7:
 0074 0831              cpi R16,24
 0076 E0E0              ldi R30,0
 0078 1E07              cpc R17,R30
 007A 09F4              brne X8
 007C 45C0              rjmp L20
 007E           X8:
 007E 46C0              rjmp L2
 0080           L22:
 0080 0134              cpi R16,65
 0082 E0E0              ldi R30,0
 0084 1E07              cpc R17,R30
 0086 51F1              breq L9
 0088 0234              cpi R16,66
 008A E0E0              ldi R30,0
 008C 1E07              cpc R17,R30
 008E 41F1              breq L10
 0090 0434              cpi R16,68
 0092 E0E0              ldi R30,0
 0094 1E07              cpc R17,R30
 0096 31F1              breq L11
 0098 0834              cpi R16,72
 009A E0E0              ldi R30,0
 009C 1E07              cpc R17,R30
 009E 21F1              breq L12
 00A0 0134              cpi R16,65
 00A2 E0E0              ldi R30,0
 00A4 1E07              cpc R17,R30
 00A6 0CF4              brge X9
 00A8 31C0              rjmp L2
 00AA           X9:
 00AA           L23:
 00AA 0138              cpi R16,129
 00AC E0E0              ldi R30,0
 00AE 1E07              cpc R17,R30
 00B0 69F0              breq L5
 00B2 0238              cpi R16,130
 00B4 E0E0              ldi R30,0
 00B6 1E07              cpc R17,R30
 00B8 59F0              breq L6
 00BA 0438              cpi R16,132
 00BC E0E0              ldi R30,0
 00BE 1E07              cpc R17,R30
 00C0 49F0              breq L7
 00C2 0838              cpi R16,136
 00C4 E0E0              ldi R30,0
 00C6 1E07              cpc R17,R30
 00C8 39F0              breq L8
 00CA 20C0              rjmp L2
 00CC           X0:
 00CC                   .dbline 35
 00CC           L5:
 00CC                   .dbline 36
 00CC           ;   case  0x81: return 0x00;
 00CC 0027              clr R16
 00CE 1FC0              rjmp L1
 00D0           L6:
 00D0                   .dbline 37
 00D0           ;   case  0x82: return 'a';
 00D0 01E6              ldi R16,97
 00D2 1DC0              rjmp L1
 00D4           L7:
 00D4                   .dbline 38
 00D4           ;   case  0x84: return 'b';
 00D4 02E6              ldi R16,98
 00D6 1BC0              rjmp L1
 00D8           L8:
 00D8                   .dbline 39
 00D8           ;   case  0x88: return 'c';
 00D8 03E6              ldi R16,99
 00DA 19C0              rjmp L1
 00DC           L9:
 00DC                   .dbline 40
 00DC           ;   case  0x41: return '1';
 00DC 01E3              ldi R16,49
 00DE 17C0              rjmp L1
 00E0           L10:
 00E0                   .dbline 41
 00E0           ;   case  0x42: return 0x02;
 00E0 02E0              ldi R16,2
 00E2 15C0              rjmp L1
 00E4           L11:
 00E4                   .dbline 42
 00E4           ;   case  0x44: return 0x03;
 00E4 03E0              ldi R16,3
 00E6 13C0              rjmp L1
 00E8           L12:
 00E8                   .dbline 43
 00E8           ;   case  0x48: return 'd';
 00E8 04E6              ldi R16,100
 00EA 11C0              rjmp L1
 00EC           L13:
 00EC                   .dbline 44
 00EC           ;   case  0x21: return 0x04;
 00EC 04E0              ldi R16,4
 00EE 0FC0              rjmp L1
 00F0           L14:
 00F0                   .dbline 45
 00F0           ;   case  0x22: return 0x05;
 00F0 05E0              ldi R16,5
 00F2 0DC0              rjmp L1
 00F4           L15:
 00F4                   .dbline 46
 00F4           ;   case  0x24: return 0x06;
 00F4 06E0              ldi R16,6
 00F6 0BC0              rjmp L1
 00F8           L16:
 00F8                   .dbline 47
 00F8           ;   case  0x28: return 'e';
 00F8 05E6              ldi R16,101
 00FA 09C0              rjmp L1
 00FC           L17:
 00FC                   .dbline 48
 00FC           ;   case  0x11: return 0x07;
 00FC 07E0              ldi R16,7
 00FE 07C0              rjmp L1
 0100           L18:
 0100                   .dbline 49
 0100           ;   case  0x12: return 0x08;
 0100 08E0              ldi R16,8
 0102 05C0              rjmp L1
 0104           L19:
 0104                   .dbline 50
 0104           ;   case  0x14: return 0x09;
 0104 09E0              ldi R16,9
 0106 03C0              rjmp L1
 0108           L20:
 0108                   .dbline 51
 0108           ;   case  0x18: return 'f';
 0108 06E6              ldi R16,102
 010A 01C0              rjmp L1
 010C           L2:
 010C                   .dbline 52
 010C           ;   default : return 0x00;
 010C 0027              clr R16
 010E                   .dbline -2
 010E           L1:
 010E                   .dbline 0 ; func end
 010E 0895              ret
 0110                   .dbsym r i 16 c
 0110                   .dbend
 0110                   .dbfunc e delay_ms _delay_ms fV
 0110           ;              i -> R16,R17
                        .even
 0110           _delay_ms::
 0110                   .dbline -1
 0110                   .dbline 60
 0110           ; }
 0110           ; }
 0110           ; 
 0110           ; /*****************************************
 0110           ;                 延时1MS
 0110           ; ******************************************/
 0110           ; void delay_ms()
 0110           ; {uint i;
 0110                   .dbline 61
 0110           ;   for(i+0;i<1142;i++)
 0110 02C0              rjmp L28
 0112           L25:
 0112                   .dbline 62
 0112           L26:
 0112                   .dbline 61
 0112 0F5F              subi R16,255  ; offset = 1
 0114 1F4F              sbci R17,255
 0116           L28:
 0116                   .dbline 61
 0116 0637              cpi R16,118
 0118 E4E0              ldi R30,4
 011A 1E07              cpc R17,R30
 011C D0F3              brlo L25
 011E                   .dbline -2
 011E           L24:
 011E                   .dbline 0 ; func end
 011E 0895              ret
 0120                   .dbsym r i 16 i
 0120                   .dbend
 0120                   .dbfunc e delay _delay fV
 0120           ;              i -> R20
 0120           ;              t -> R16,R17
                        .even
 0120           _delay::
 0120 00D0              rcall push_gset1
 0122                   .dbline -1
 0122                   .dbline 65
 0122           ;   ;
 0122           ;   }
 0122           ; void delay(uint t)
 0122           ; {uchar i;
 0122                   .dbline 66
 0122           ;   for(i=0;i<t;i++)
 0122 4427              clr R20
 0124 01C0              rjmp L33
 0126           L30:
 0126                   .dbline 67
 0126           L31:
 0126                   .dbline 66
 0126 4395              inc R20
 0128           L33:
 0128                   .dbline 66
 0128 242E              mov R2,R20
 012A 3324              clr R3
 012C 2016              cp R2,R16
 012E 3106              cpc R3,R17
 0130 D0F3              brlo L30
 0132                   .dbline -2
 0132           L29:
 0132 00D0              rcall pop_gset1
 0134                   .dbline 0 ; func end
 0134 0895              ret
 0136                   .dbsym r i 20 c
 0136                   .dbsym r t 16 i
 0136                   .dbend
 0136                   .dbfunc e init _init fV
                        .even
 0136           _init::
 0136                   .dbline -1
 0136                   .dbline 74
 0136           ;   ;
 0136           ; }
 0136           ; 
 0136           ; /****************************************
 0136           ;                 mcu初始化
 0136           ; *****************************************/
 0136           ; void init()
 0136           ; { //DDRA=0x00;
 0136                   .dbline 75

⌨️ 快捷键说明

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