?? lesson5.lis
字號:
.module lesson5.c
.area code(ram, con, rel)
.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 .dbfile I:\AVR視頻教程\視頻教程\lesson5\chengxu\lesson5\lesson5.c
0022 .dbsym e table _table A[34:17]I
.area text(rom, con, rel)
0000 .dbfile I:\AVR視頻教程\視頻教程\lesson5\chengxu\lesson5\lesson5.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 00D0 rcall push_gset2
0002 .dbline -1
0002 .dbline 9
0002 ; #include <iom16v.h>
0002 ; #include <macros.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ; #pragma data:code
0002 ; const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0002 ; 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};
0002 ; void delay(uint ms)
0002 ; {
0002 .dbline 11
0002 ; uint i,j;
0002 ; for(i=0;i<ms;i++)
0002 4427 clr R20
0004 5527 clr R21
0006 0BC0 rjmp L5
0008 L2:
0008 .dbline 12
0008 ; {
0008 .dbline 13
0008 6627 clr R22
000A 7727 clr R23
000C 02C0 rjmp L9
000E L6:
000E .dbline 13
000E L7:
000E .dbline 13
000E 6F5F subi R22,255 ; offset = 1
0010 7F4F sbci R23,255
0012 L9:
0012 .dbline 13
0012 6537 cpi R22,117
0014 E4E0 ldi R30,4
0016 7E07 cpc R23,R30
0018 D0F3 brlo L6
001A .dbline 14
001A L3:
001A .dbline 11
001A 4F5F subi R20,255 ; offset = 1
001C 5F4F sbci R21,255
001E L5:
001E .dbline 11
001E 4017 cp R20,R16
0020 5107 cpc R21,R17
0022 90F3 brlo L2
0024 .dbline -2
0024 .dbline 15
0024 ; for(j=0;j<1141;j++);
0024 ; }
0024 ; }
0024 L1:
0024 00D0 rcall pop_gset2
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbsym r i 20 i
0028 .dbsym r j 22 i
0028 .dbsym r ms 16 i
0028 .dbend
0028 .dbfunc e show _show fV
0028 ; k -> R20
0028 ; j -> R22
.even
0028 _show::
0028 00D0 rcall push_gset2
002A 422F mov R20,R18
002C 602F mov R22,R16
002E .dbline -1
002E .dbline 17
002E ; void show(uchar j,uchar k)
002E ; {
002E .dbline 18
002E ; PORTA|=BIT(3);
002E DB9A sbi 0x1b,3
0030 .dbline 19
0030 ; PORTB=table[j];
0030 80E0 ldi R24,<_table
0032 90E0 ldi R25,>_table
0034 062F mov R16,R22
0036 1127 clr R17
0038 000F lsl R16
003A 111F rol R17
003C 080F add R16,R24
003E 191F adc R17,R25
0040 00D0 rcall lpm16
0042 08BB out 0x18,R16
0044 .dbline 20
0044 ; PORTA&=~BIT(3);
0044 DB98 cbi 0x1b,3
0046 .dbline 22
0046 ;
0046 ; PORTB=0XFF;
0046 8FEF ldi R24,255
0048 88BB out 0x18,R24
004A .dbline 23
004A ; PORTB&=~BIT(k);
004A 01E0 ldi R16,1
004C 142F mov R17,R20
004E 00D0 rcall lsl8
0050 202E mov R2,R16
0052 2094 com R2
0054 38B2 in R3,0x18
0056 3220 and R3,R2
0058 38BA out 0x18,R3
005A .dbline 24
005A ; PORTA|=BIT(4);
005A DC9A sbi 0x1b,4
005C .dbline 25
005C ; PORTA&=~BIT(4);
005C DC98 cbi 0x1b,4
005E .dbline 26
005E ; delay(1);
005E 01E0 ldi R16,1
0060 10E0 ldi R17,0
0062 CEDF rcall _delay
0064 .dbline -2
0064 .dbline 27
0064 ; }
0064 L10:
0064 00D0 rcall pop_gset2
0066 .dbline 0 ; func end
0066 0895 ret
0068 .dbsym r k 20 c
0068 .dbsym r j 22 c
0068 .dbend
0068 .dbfunc e key_press _key_press fc
0068 ; j -> R16
.even
0068 _key_press::
0068 .dbline -1
0068 .dbline 30
0068 ;
0068 ; uchar key_press()
0068 ; {
0068 .dbline 32
0068 ; uchar j;
0068 ; DDRD|=0X0F;
0068 81B3 in R24,0x11
006A 8F60 ori R24,15
006C 81BB out 0x11,R24
006E .dbline 33
006E ; PORTD|=0X0F;
006E 82B3 in R24,0x12
0070 8F60 ori R24,15
0072 82BB out 0x12,R24
0074 .dbline 35
0074 ;
0074 ; DDRD&=0XF0;
0074 81B3 in R24,0x11
0076 807F andi R24,240
0078 81BB out 0x11,R24
007A .dbline 37
007A ;
007A ; j=PIND;
007A 00B3 in R16,0x10
007C .dbline 38
007C ; j=j&0X0F;//00001111
007C 0F70 andi R16,15
007E .dbline 39
007E ; if(j==0X0F)
007E 0F30 cpi R16,15
0080 11F4 brne L12
0082 .dbline 40
0082 ; {
0082 .dbline 41
0082 ; return 0;
0082 0027 clr R16
0084 01C0 rjmp L11
0086 L12:
0086 .dbline 44
0086 ; }
0086 ; else
0086 ; {
0086 .dbline 45
0086 ; return 1;
0086 01E0 ldi R16,1
0088 .dbline -2
0088 L11:
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym r j 16 c
008A .dbend
008A .dbfunc e key_scan _key_scan fc
008A ; key -> R20
.even
008A _key_scan::
008A 00D0 rcall push_gset2
008C .dbline -1
008C .dbline 51
008C ; }
008C ;
008C ; }
008C ;
008C ; uchar key_scan()
008C ; {
008C .dbline 53
008C ; uchar key;
008C ; delay(10);
008C 0AE0 ldi R16,10
008E 10E0 ldi R17,0
0090 B7DF rcall _delay
0092 .dbline 54
0092 ; if(key_press())
0092 EADF rcall _key_press
0094 0023 tst R16
0096 11F1 breq L15
0098 .dbline 55
0098 ; {
0098 .dbline 56
0098 ; key=PIND;
0098 40B3 in R20,0x10
009A .dbline 57
009A ; key&=0X0F;
009A 4F70 andi R20,15
009C .dbline 58
009C ; switch(key)
009C 642F mov R22,R20
009E 7727 clr R23
00A0 6730 cpi R22,7
00A2 E0E0 ldi R30,0
00A4 7E07 cpc R23,R30
00A6 99F0 breq L23
00A8 6B30 cpi R22,11
00AA E0E0 ldi R30,0
00AC 7E07 cpc R23,R30
00AE 69F0 breq L22
00B0 6D30 cpi R22,13
00B2 E0E0 ldi R30,0
00B4 7E07 cpc R23,R30
00B6 39F0 breq L21
00B8 6E30 cpi R22,14
00BA E0E0 ldi R30,0
00BC 7E07 cpc R23,R30
00BE 09F0 breq L20
00C0 08C0 rjmp L17
00C2 X0:
00C2 .dbline 59
00C2 ; {
00C2 L20:
00C2 .dbline 61
00C2 ; case 0X0E:
00C2 ; key=1;
00C2 41E0 ldi R20,1
00C4 .dbline 62
00C4 ; break;
00C4 07C0 rjmp L25
00C6 L21:
00C6 .dbline 64
00C6 ; case 0X0D:
00C6 ; key=2;
00C6 42E0 ldi R20,2
00C8 .dbline 65
00C8 ; break;
00C8 05C0 rjmp L25
00CA L22:
00CA .dbline 67
00CA ; case 0X0B:
00CA ; key=3;
00CA 43E0 ldi R20,3
00CC .dbline 68
00CC ; break;
00CC 03C0 rjmp L25
00CE L23:
00CE .dbline 70
00CE ; case 0X07:
00CE ; key=4;
00CE 44E0 ldi R20,4
00D0 .dbline 71
00D0 ; break;
00D0 01C0 rjmp L25
00D2 L17:
00D2 .dbline 73
00D2 ; default:
00D2 ; key=16;
00D2 40E1 ldi R20,16
00D4 .dbline 74
00D4 ; }
00D4 L24:
00D4 .dbline 75
00D4 L25:
00D4 .dbline 75
00D4 ; while(key_press());
00D4 C9DF rcall _key_press
00D6 0023 tst R16
00D8 E9F7 brne L24
00DA .dbline 76
00DA ; }
00DA 01C0 rjmp L16
00DC L15:
00DC .dbline 78
00DC ; else
00DC ; {
00DC .dbline 79
00DC ; key=16;
00DC 40E1 ldi R20,16
00DE .dbline 80
00DE ; }
00DE L16:
00DE .dbline 81
00DE ; return key;
00DE 042F mov R16,R20
00E0 .dbline -2
00E0 L14:
00E0 00D0 rcall pop_gset2
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbsym r key 20 c
00E4 .dbend
00E4 .dbfunc e main _main fV
00E4 ; l -> R20
00E4 ; i -> R22
.even
00E4 _main::
00E4 .dbline -1
00E4 .dbline 84
00E4 ; }
00E4 ; void main()
00E4 ; {
00E4 .dbline 86
00E4 ; uchar i,l;
00E4 ; DDRA|=0X18;//0001 1000
00E4 8AB3 in R24,0x1a
00E6 8861 ori R24,24
00E8 8ABB out 0x1a,R24
00EA .dbline 87
00EA ; DDRB=0XFF;
00EA 8FEF ldi R24,255
00EC 87BB out 0x17,R24
00EE 08C0 rjmp L29
00F0 L28:
00F0 .dbline 89
00F0 ; while(1)
00F0 ; {
00F0 .dbline 90
00F0 ; i=key_press();
00F0 BBDF rcall _key_press
00F2 602F mov R22,R16
00F4 .dbline 91
00F4 ; if(i)
00F4 0023 tst R16
00F6 21F0 breq L31
00F8 .dbline 92
00F8 ; {
00F8 .dbline 93
00F8 ; l=key_scan();
00F8 C8DF rcall _key_scan
00FA 402F mov R20,R16
00FC .dbline 94
00FC ; show(l,0);
00FC 2227 clr R18
00FE 94DF rcall _show
0100 .dbline 95
0100 ; }
0100 L31:
0100 .dbline 96
0100 L29:
0100 .dbline 88
0100 F7CF rjmp L28
0102 X1:
0102 .dbline -2
0102 .dbline 97
0102 ; }
0102 ; }
0102 L27:
0102 .dbline 0 ; func end
0102 0895 ret
0104 .dbsym r l 20 c
0104 .dbsym r i 22 c
0104 .dbend
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -