📄 zdsmjp.lis
字号:
.module zdsmjp.c
.area text(rom, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
.area data(ram, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
0000 _num::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
0001 .dbsym e num _num c
.area vector(rom, abs)
.org 32
0020 0C94E900 jmp _miao
.area data(ram, con, rel)
0001 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.c
.area code(ram, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.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 .dbsym e table _table A[32:16]kI
.area text(rom, con, rel)
0000 .dbfile G:\学习\avr\天祥电子AVR视频教程\chengxu\中断扫描键盘\zdsmjp.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 12
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; uchar num=0;uchar l;
0004 ; #pragma interrupt_handler miao:9
0004 ; #pragma data:code
0004 ; const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0004 ; 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
0004 ;
0004 ; void delay(uint ms)
0004 ; {
0004 .dbline 14
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 15
000A ; {
000A .dbline 16
000A ; for(j=0;j<1141;j++);
000A 6627 clr R22
000C 7727 clr R23
000E 02C0 xjmp L9
0010 L6:
0010 .dbline 16
0010 L7:
0010 .dbline 16
0010 6F5F subi R22,255 ; offset = 1
0012 7F4F sbci R23,255
0014 L9:
0014 .dbline 16
0014 6537 cpi R22,117
0016 E4E0 ldi R30,4
0018 7E07 cpc R23,R30
001A D0F3 brlo L6
001C X0:
001C .dbline 17
001C ; }
001C L3:
001C .dbline 14
001C 4F5F subi R20,255 ; offset = 1
001E 5F4F sbci R21,255
0020 L5:
0020 .dbline 14
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 -> R10
002A ; j -> R12
.even
002A _show::
002A AA92 st -y,R10
002C CA92 st -y,R12
002E A22E mov R10,R18
0030 C02E mov R12,R16
0032 .dbline -1
0032 .dbline 20
0032 ; }
0032 ; void show(uchar j,uchar k)
0032 ; {
0032 .dbline 21
0032 ; PORTA|=BIT(3);
0032 DB9A sbi 0x1b,3
0034 .dbline 22
0034 ; PORTB=table[j];
0034 80E0 ldi R24,<_table
0036 90E0 ldi R25,>_table
0038 EC2D mov R30,R12
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 23
004A ; PORTA&=~BIT(3);
004A DB98 cbi 0x1b,3
004C .dbline 25
004C ;
004C ; PORTB=0XFF;
004C 8FEF ldi R24,255
004E 88BB out 0x18,R24
0050 .dbline 26
0050 ; PORTB&=~BIT(k);
0050 01E0 ldi R16,1
0052 1A2D mov R17,R10
0054 0E940000 xcall lsl8
0058 202E mov R2,R16
005A 2094 com R2
005C 38B2 in R3,0x18
005E 3220 and R3,R2
0060 38BA out 0x18,R3
0062 .dbline 27
0062 ; PORTA|=BIT(4);
0062 DC9A sbi 0x1b,4
0064 .dbline 28
0064 ; PORTA&=~BIT(4);
0064 DC98 cbi 0x1b,4
0066 .dbline 29
0066 ; delay(80);//delay(1);
0066 00E5 ldi R16,80
0068 10E0 ldi R17,0
006A CADF xcall _delay
006C .dbline -2
006C L10:
006C .dbline 0 ; func end
006C C990 ld R12,y+
006E A990 ld R10,y+
0070 0895 ret
0072 .dbsym r k 10 c
0072 .dbsym r j 12 c
0072 .dbend
0072 .dbfunc e key_press _key_press fc
0072 ; i -> R16
.even
0072 _key_press::
0072 .dbline -1
0072 .dbline 32
0072 ; }
0072 ; uchar key_press()
0072 ; {
0072 .dbline 34
0072 ; uchar i;
0072 ; DDRD=0XFF;
0072 8FEF ldi R24,255
0074 81BB out 0x11,R24
0076 .dbline 35
0076 ; PORTD=0XF0;
0076 80EF ldi R24,240
0078 82BB out 0x12,R24
007A .dbline 37
007A ;
007A ; DDRD=0X0F;
007A 8FE0 ldi R24,15
007C 81BB out 0x11,R24
007E .dbline 39
007E ;
007E ; i=PIND;
007E 00B3 in R16,0x10
0080 .dbline 40
0080 ; if(i==0XF0)
0080 003F cpi R16,240
0082 21F4 brne L12
0084 X2:
0084 .dbline 41
0084 ; {
0084 .dbline 42
0084 ; DDRD=0XFF;
0084 8FEF ldi R24,255
0086 81BB out 0x11,R24
0088 .dbline 43
0088 ; return 0;
0088 0027 clr R16
008A 03C0 xjmp L11
008C L12:
008C .dbline 46
008C ; }
008C ; else
008C ; {
008C .dbline 47
008C ; DDRD=0XFF;
008C 8FEF ldi R24,255
008E 81BB out 0x11,R24
0090 .dbline 48
0090 ; return 1;
0090 01E0 ldi R16,1
0092 .dbline -2
0092 L11:
0092 .dbline 0 ; func end
0092 0895 ret
0094 .dbsym r i 16 c
0094 .dbend
0094 .dbfunc e key_scan _key_scan fc
0094 ; j -> R10
0094 ; key -> R20
0094 ; i -> R22
.even
0094 _key_scan::
0094 0E940000 xcall push_xgsetF00C
0098 .dbline -1
0098 .dbline 53
0098 ; }
0098 ; }
0098 ;
0098 ; uchar key_scan()
0098 ; {
0098 .dbline 54
0098 ; uchar key,i=0X7F,j;
0098 6FE7 ldi R22,127
009A .dbline 55
009A ; delay(10);
009A 0AE0 ldi R16,10
009C 10E0 ldi R17,0
009E B0DF xcall _delay
00A0 .dbline 56
00A0 ; if(key_press())
00A0 E8DF xcall _key_press
00A2 0023 tst R16
00A4 09F4 brne X24
00A6 91C0 xjmp L15
00A8 X24:
00A8 X3:
00A8 .dbline 57
00A8 ; {
00A8 L17:
00A8 .dbline 59
00A8 ; do
00A8 ; {
00A8 .dbline 60
00A8 ; i=(i<<1|i>>7);
00A8 262E mov R2,R22
00AA 2694 lsr R2
00AC 2694 lsr R2
00AE 2694 lsr R2
00B0 2694 lsr R2
00B2 2694 lsr R2
00B4 2694 lsr R2
00B6 2694 lsr R2
00B8 362E mov R3,R22
00BA 330C lsl R3
00BC 3228 or R3,R2
00BE 632D mov R22,R3
00C0 .dbline 61
00C0 ; PORTD=i;
00C0 32BA out 0x12,R3
00C2 .dbline 62
00C2 ; DDRD=0X0F;
00C2 8FE0 ldi R24,15
00C4 81BB out 0x11,R24
00C6 .dbline 64
00C6 ;
00C6 ; key=PIND;
00C6 40B3 in R20,0x10
00C8 .dbline 65
00C8 ; j=key&0XF0;
00C8 842F mov R24,R20
00CA 807F andi R24,240
00CC A82E mov R10,R24
00CE .dbline 67
00CE ;
00CE ; }while(j==0XF0);
00CE L18:
00CE .dbline 67
00CE 8A2D mov R24,R10
00D0 803F cpi R24,240
00D2 51F3 breq L17
00D4 X4:
00D4 L20:
00D4 .dbline 69
00D4 ;
00D4 ; while(key_press());
00D4 L21:
00D4 .dbline 69
00D4 CEDF xcall _key_press
00D6 0023 tst R16
00D8 E9F7 brne L20
00DA X5:
00DA .dbline 70
00DA ; switch(key)
00DA 642F mov R22,R20
00DC 7727 clr R23
00DE 673B cpi R22,183
00E0 E0E0 ldi R30,0
00E2 7E07 cpc R23,R30
00E4 09F4 brne X25
00E6 6BC0 xjmp L40
00E8 X25:
00E8 X6:
00E8 6B3B cpi R22,187
00EA E0E0 ldi R30,0
00EC 7E07 cpc R23,R30
00EE 09F4 brne X26
00F0 5EC0 xjmp L36
00F2 X26:
00F2 X7:
00F2 6D3B cpi R22,189
00F4 E0E0 ldi R30,0
00F6 7E07 cpc R23,R30
00F8 09F4 brne X27
00FA 51C0 xjmp L32
00FC X27:
00FC X8:
00FC 6E3B cpi R22,190
00FE E0E0 ldi R30,0
0100 7E07 cpc R23,R30
0102 09F4 brne X28
0104 44C0 xjmp L28
0106 X28:
0106 X9:
0106 8EEB ldi R24,190
0108 90E0 ldi R25,0
010A 8617 cp R24,R22
010C 9707 cpc R25,R23
010E A4F0 brlt L43
0110 X10:
0110 L42:
0110 6737 cpi R22,119
0112 E0E0 ldi R30,0
0114 7E07 cpc R23,R30
0116 09F4 brne X29
0118 54C0 xjmp L41
011A X29:
011A X11:
011A 6B37 cpi R22,123
011C E0E0 ldi R30,0
011E 7E07 cpc R23,R30
0120 09F4 brne X30
0122 47C0 xjmp L37
0124 X30:
0124 X12:
0124 6D37 cpi R22,125
0126 E0E0 ldi R30,0
0128 7E07 cpc R23,R30
012A 09F4 brne X31
012C 3AC0 xjmp L33
012E X31:
012E X13:
012E 6E37 cpi R22,126
0130 E0E0 ldi R30,0
0132 7E07 cpc R23,R30
0134 71F1 breq L29
0136 X14:
0136 47C0 xjmp L23
0138 L43:
0138 673D cpi R22,215
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -