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

📄 key_new.lis

📁 meg64实现LED,一个跑马灯程序,内容包括一部分初始化程序代码.
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module key_new.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\AVR最新\HaiFeng\key可用\key_new\ICCAVR\key_new.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              t -> R16,R17
                        .even
 0000           _delay::
 0000                   .dbline -1
 0000                   .dbline 4
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; void delay(unsigned int t) //延时函数
 0000           ; {
 0000           L2:
 0000                   .dbline 5
 0000           ;               while(t--);
 0000           L3:
 0000                   .dbline 5
 0000 1801              movw R2,R16
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006 2220              tst R2
 0008 D9F7              brne L2
 000A 3320              tst R3
 000C C9F7              brne L2
 000E           X0:
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbsym r t 16 i
 0010                   .dbend
                        .area lit(rom, con, rel)
 0000           L6:
 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 7971              .byte 'y,'q
                        .area text(rom, con, rel)
 0010                   .dbfile F:\AVR最新\HaiFeng\key可用\key_new\ICCAVR\key_new.c
 0010                   .dbfunc e main _main fV
 0010           ;          table -> y+0
 0010           ;            key -> R20
                        .even
 0010           _main::
 0010 6097              sbiw R28,16
 0012                   .dbline -1
 0012                   .dbline 9
 0012           ; }
 0012           ; 
 0012           ; void main()
 0012           ; {
 0012                   .dbline 10
 0012           ;       unsigned char table[]={0x3f,0x06,0x5b,0x4f,//定义显示数据
 0012 80E0              ldi R24,<L6
 0014 90E0              ldi R25,>L6
 0016 FE01              movw R30,R28
 0018 00E1              ldi R16,16
 001A 10E0              ldi R17,0
 001C FA93              st -y,R31
 001E EA93              st -y,R30
 0020 9A93              st -y,R25
 0022 8A93              st -y,R24
 0024 0E940000          xcall asgncblk
 0028                   .dbline 15
 0028           ;                              0x66,0x6d,0x7d,0x07,
 0028           ;                              0x7f,0x6f,0x77,0x7c,
 0028           ;                              0x39,0x5e,0x79,0x71};
 0028           ;       unsigned char key; //定义键值函数
 0028           ;       DDRB=0xf0;  //设置高四位为输出,低四位为输入
 0028 80EF              ldi R24,240
 002A 87BB              out 0x17,R24
 002C                   .dbline 16
 002C           ;       PORTB|=0x0f;//打开低四位,关闭高四位,初始化A端口
 002C 88B3              in R24,0x18
 002E 8F60              ori R24,15
 0030 88BB              out 0x18,R24
 0032                   .dbline 17
 0032           ;       DDRD=0xff;
 0032 8FEF              ldi R24,255
 0034 81BB              out 0x11,R24
 0036                   .dbline 18
 0036           ;       PORTD=0x00;
 0036 2224              clr R2
 0038 22BA              out 0x12,R2
 003A 96C0              xjmp L8
 003C           L7:
 003C                   .dbline 20
 003C           ;       while(1) 
 003C           ;       {
 003C           L10:
 003C                   .dbline 22
 003C           ;               do
 003C           ;               {
 003C                   .dbline 23
 003C           ;                               delay(16000); //延时去抖
 003C 00E8              ldi R16,16000
 003E 1EE3              ldi R17,62
 0040 DFDF              xcall _delay
 0042                   .dbline 24
 0042           ;                               PORTB=0xef;  //第一次高位输出1110
 0042 8FEE              ldi R24,239
 0044 88BB              out 0x18,R24
 0046                   .dbline 25
 0046           ;                               delay(1600);    //读数延时
 0046 00E4              ldi R16,1600
 0048 16E0              ldi R17,6
 004A DADF              xcall _delay
 004C                   .dbline 26
 004C           ;                               switch((PINB&0x0f))//按键识别 (0,1,2,3)
 004C 66B3              in R22,0x16
 004E 7727              clr R23
 0050 6F70              andi R22,15
 0052 7070              andi R23,0
 0054 6730              cpi R22,7
 0056 E0E0              ldi R30,0
 0058 7E07              cpc R23,R30
 005A 99F0              breq L19
 005C           X1:
 005C 6B30              cpi R22,11
 005E E0E0              ldi R30,0
 0060 7E07              cpc R23,R30
 0062 69F0              breq L18
 0064           X2:
 0064 6D30              cpi R22,13
 0066 E0E0              ldi R30,0
 0068 7E07              cpc R23,R30
 006A 39F0              breq L17
 006C           X3:
 006C 6E30              cpi R22,14
 006E E0E0              ldi R30,0
 0070 7E07              cpc R23,R30
 0072 09F0              breq L16
 0074           X4:
 0074 07C0              xjmp L13
 0076           L16:
 0076                   .dbline 28
 0076           ;                               {
 0076           ;                                               case 0x0e:key=0;break;
 0076 4427              clr R20
 0078                   .dbline 28
 0078 05C0              xjmp L14
 007A           L17:
 007A                   .dbline 29
 007A           ;                                               case 0x0d:key=1;break;
 007A 41E0              ldi R20,1
 007C                   .dbline 29
 007C 03C0              xjmp L14
 007E           L18:
 007E                   .dbline 30
 007E           ;                                               case 0x0b:key=2;break;
 007E 42E0              ldi R20,2
 0080                   .dbline 30
 0080 01C0              xjmp L14
 0082           L19:
 0082                   .dbline 31
 0082           ;                                               case 0x07:key=3;break;
 0082 43E0              ldi R20,3
 0084                   .dbline 31
 0084           L13:
 0084           L14:
 0084                   .dbline 33
 0084           ;                               }
 0084           ;                               PORTB=0xdf;  //第二次高位输出1101
 0084 8FED              ldi R24,223
 0086 88BB              out 0x18,R24
 0088                   .dbline 34
 0088           ;                               delay(1600);
 0088 00E4              ldi R16,1600
 008A 16E0              ldi R17,6
 008C B9DF              xcall _delay
 008E                   .dbline 35
 008E           ;                               switch((PINB&0x0f))//按键识别 (4,5,6,7)
 008E 66B3              in R22,0x16
 0090 7727              clr R23
 0092 6F70              andi R22,15
 0094 7070              andi R23,0
 0096 6730              cpi R22,7
 0098 E0E0              ldi R30,0
 009A 7E07              cpc R23,R30
 009C 99F0              breq L26
 009E           X5:
 009E 6B30              cpi R22,11
 00A0 E0E0              ldi R30,0
 00A2 7E07              cpc R23,R30
 00A4 69F0              breq L25
 00A6           X6:
 00A6 6D30              cpi R22,13
 00A8 E0E0              ldi R30,0
 00AA 7E07              cpc R23,R30
 00AC 39F0              breq L24
 00AE           X7:
 00AE 6E30              cpi R22,14
 00B0 E0E0              ldi R30,0

⌨️ 快捷键说明

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