📄 mykey.lis
字号:
.module mykey.c
.area text(rom, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\mykey\mykey.c
.area code(ram, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\mykey\mykey.c
.area lit(rom, con, rel)
0000 _table::
0000 3F00 .word 63
0002 0600 .word 6
0004 5B00 .word 91
0006 4F00 .word 79
0008 6600 .word 102
000A 6D00 .word 109
000C 7D00 .word 125
000E 0700 .word 7
0010 7F00 .word 127
0012 6F00 .word 111
0014 7700 .word 119
0016 7C00 .word 124
0018 3900 .word 57
001A 5E00 .word 94
001C 7900 .word 121
001E 7100 .word 113
0020 0000 .word 0
0022 .dbsym e table _table A[34:17]kI
.area text(rom, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\mykey\mykey.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_xgsetF000
0004 .dbline -1
0004 .dbline 9
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; #pragma data:code
0004 ; const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0004 ; 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};
0004 ; void delay(uint ms)
0004 ; {
0004 .dbline 11
0004 ; uint i,j;
0004 ; for(i=0;i<ms;i++)
0004 4427 clr R20
0006 5527 clr R21
0008 0BC0 xjmp L5
000A L2:
000A .dbline 12
000A ; {
000A .dbline 13
000A ; for(j=0;j<1141;j++);
000A 6627 clr R22
000C 7727 clr R23
000E 02C0 xjmp L9
0010 L6:
0010 .dbline 13
0010 L7:
0010 .dbline 13
0010 6F5F subi R22,255 ; offset = 1
0012 7F4F sbci R23,255
0014 L9:
0014 .dbline 13
0014 6537 cpi R22,117
0016 E4E0 ldi R30,4
0018 7E07 cpc R23,R30
001A D0F3 brlo L6
001C X0:
001C .dbline 14
001C ; }
001C L3:
001C .dbline 11
001C 4F5F subi R20,255 ; offset = 1
001E 5F4F sbci R21,255
0020 L5:
0020 .dbline 11
0020 4017 cp R20,R16
0022 5107 cpc R21,R17
0024 90F3 brlo L2
0026 X1:
0026 .dbline -2
0026 L1:
0026 .dbline 0 ; func end
0026 0C940000 xjmp pop_xgsetF000
002A .dbsym r i 20 i
002A .dbsym r j 22 i
002A .dbsym r ms 16 i
002A .dbend
002A .dbfunc e show _show fV
002A ; k -> R22
002A ; j -> R20
.even
002A _show::
002A 4A93 st -y,R20
002C 6A93 st -y,R22
002E 622F mov R22,R18
0030 402F mov R20,R16
0032 .dbline -1
0032 .dbline 17
0032 ; }
0032 ; void show(uchar j,uchar k)
0032 ; {
0032 .dbline 18
0032 ; PORTA|=BIT(3);
0032 DB9A sbi 0x1b,3
0034 .dbline 19
0034 ; PORTB=table[j];
0034 80E0 ldi R24,<_table
0036 90E0 ldi R25,>_table
0038 E42F mov R30,R20
003A FF27 clr R31
003C EE0F lsl R30
003E FF1F rol R31
0040 E80F add R30,R24
0042 F91F adc R31,R25
0044 2590 lpm R2,Z+
0046 3490 lpm R3,Z
0048 28BA out 0x18,R2
004A .dbline 20
004A ; PORTA&=~BIT(3);
004A DB98 cbi 0x1b,3
004C .dbline 21
004C ; PORTB=0XFF;
004C 8FEF ldi R24,255
004E 88BB out 0x18,R24
0050 .dbline 22
0050 ; PORTA|=BIT(4);
0050 DC9A sbi 0x1b,4
0052 .dbline 23
0052 ; if(j==1)
0052 4130 cpi R20,1
0054 99F4 brne L11
0056 X2:
0056 .dbline 24
0056 ; for(k=5;k>0;k--)
0056 65E0 ldi R22,5
0058 0DC0 xjmp L16
005A L13:
005A .dbline 25
005A ; {
005A .dbline 27
005A ;
005A ; PORTB&=~BIT(k);
005A 01E0 ldi R16,1
005C 162F mov R17,R22
005E 0E940000 xcall lsl8
0062 202E mov R2,R16
0064 2094 com R2
0066 38B2 in R3,0x18
0068 3220 and R3,R2
006A 38BA out 0x18,R3
006C .dbline 28
006C ; delay(300);
006C 0CE2 ldi R16,300
006E 11E0 ldi R17,1
0070 C7DF xcall _delay
0072 .dbline 29
0072 ; }
0072 L14:
0072 .dbline 24
0072 6A95 dec R22
0074 L16:
0074 .dbline 24
0074 80E0 ldi R24,0
0076 8617 cp R24,R22
0078 80F3 brlo L13
007A X3:
007A 2CC0 xjmp L12
007C L11:
007C .dbline 30
007C ; else if(j==2)
007C 4230 cpi R20,2
007E 91F4 brne L17
0080 X4:
0080 .dbline 31
0080 ; for(k=1;k<6;k++)
0080 61E0 ldi R22,1
0082 0DC0 xjmp L22
0084 L19:
0084 .dbline 32
0084 ; {
0084 .dbline 34
0084 ;
0084 ; PORTB&=~BIT(k);
0084 01E0 ldi R16,1
0086 162F mov R17,R22
0088 0E940000 xcall lsl8
008C 202E mov R2,R16
008E 2094 com R2
0090 38B2 in R3,0x18
0092 3220 and R3,R2
0094 38BA out 0x18,R3
0096 .dbline 35
0096 ; delay(300);
0096 0CE2 ldi R16,300
0098 11E0 ldi R17,1
009A B2DF xcall _delay
009C .dbline 36
009C ; }
009C L20:
009C .dbline 31
009C 6395 inc R22
009E L22:
009E .dbline 31
009E 6630 cpi R22,6
00A0 88F3 brlo L19
00A2 X5:
00A2 18C0 xjmp L18
00A4 L17:
00A4 .dbline 37
00A4 ; else if(j==3)
00A4 4330 cpi R20,3
00A6 B1F4 brne L23
00A8 X6:
00A8 .dbline 38
00A8 ; for(k=1;k<6;k++)
00A8 61E0 ldi R22,1
00AA 12C0 xjmp L28
00AC L25:
00AC .dbline 39
00AC ; {
00AC .dbline 41
00AC ;
00AC ; PORTB&=~BIT(j);
00AC 01E0 ldi R16,1
00AE 142F mov R17,R20
00B0 0E940000 xcall lsl8
00B4 202E mov R2,R16
00B6 2094 com R2
00B8 38B2 in R3,0x18
00BA 3220 and R3,R2
00BC 38BA out 0x18,R3
00BE .dbline 42
00BE ; delay(300);
00BE 0CE2 ldi R16,300
00C0 11E0 ldi R17,1
00C2 9EDF xcall _delay
00C4 .dbline 43
00C4 ; PORTB=0xff;
00C4 8FEF ldi R24,255
00C6 88BB out 0x18,R24
00C8 .dbline 44
00C8 ; delay(200);
00C8 08EC ldi R16,200
00CA 10E0 ldi R17,0
00CC 99DF xcall _delay
00CE .dbline 45
00CE ; }
00CE L26:
00CE .dbline 38
00CE 6395 inc R22
00D0 L28:
00D0 .dbline 38
00D0 6630 cpi R22,6
00D2 60F3 brlo L25
00D4 X7:
00D4 L23:
00D4 L18:
00D4 L12:
00D4 .dbline 47
00D4 ;
00D4 ; PORTB=0XFF;
00D4 8FEF ldi R24,255
00D6 88BB out 0x18,R24
00D8 .dbline 48
00D8 ; PORTB=~BIT(j);
00D8 01E0 ldi R16,1
00DA 142F mov R17,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -