?? key_new.lis
字號:
.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 + -