📄 int4.lis
字号:
.module int4.c
.area data(ram, con, rel)
0000 _key::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile F:\AVR学习板\复件实~1\int_4\int4.c
0001 .dbsym e key _key c
.area text(rom, con, rel)
0000 .dbfile F:\AVR学习板\复件实~1\int_4\int4.c
0000 .dbfunc e ext_int0_isr _ext_int0_isr fV
0000 ; aa -> R16
.even
0000 _ext_int0_isr::
0000 .dbline -1
0000 .dbline 7
0000 ; #include<iom128v.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; uchar key=0;
0000 ; void ext_int0_isr(void)
0000 ; {
0000 .dbline 8
0000 ; uchar aa=1;
0000 01E0 ldi R16,1
0002 17C0 xjmp L3
0004 L2:
0004 .dbline 10
0004 ; while(aa) //判断端口是否恢复高电平,有延时抗干扰
0004 ; {
0004 .dbline 11
0004 ; aa=!(PINE&(1<<4));
0004 0C99 sbic 0x1,4
0006 03C0 rjmp L5
0008 21E0 ldi R18,1
000A 30E0 ldi R19,0
000C 02C0 xjmp L6
000E L5:
000E 2227 clr R18
0010 3327 clr R19
0012 L6:
0012 022F mov R16,R18
0014 .dbline 12
0014 ; if(aa==0)
0014 2223 tst R18
0016 69F4 brne L7
0018 .dbline 13
0018 ; {
0018 .dbline 14
0018 ; key+=1;
0018 80910000 lds R24,_key
001C 8F5F subi R24,255 ; addi 1
001E 80930000 sts _key,R24
0022 .dbline 15
0022 ; aa=!(PINE&(1<<4));
0022 0C99 sbic 0x1,4
0024 03C0 rjmp L9
0026 21E0 ldi R18,1
0028 30E0 ldi R19,0
002A 02C0 xjmp L10
002C L9:
002C 2227 clr R18
002E 3327 clr R19
0030 L10:
0030 022F mov R16,R18
0032 .dbline 16
0032 ; }
0032 L7:
0032 .dbline 17
0032 L3:
0032 .dbline 9
0032 0023 tst R16
0034 39F7 brne L2
0036 .dbline -2
0036 .dbline 18
0036 ; }
0036 ; }
0036 L1:
0036 .dbline 0 ; func end
0036 0895 ret
0038 .dbsym r aa 16 c
0038 .dbend
0038 .dbfunc e encoder _encoder fc
0038 ; num -> R20
0038 ; key -> R16
.even
0038 _encoder::
0038 0E940000 xcall push_gset1
003C .dbline -1
003C .dbline 22
003C ;
003C ; //数码管译码函数
003C ; uchar encoder(uchar key)
003C ; {
003C .dbline 24
003C ; uchar num;
003C ; switch(key)
003C 402F mov R20,R16
003E 5527 clr R21
0040 4032 cpi R20,32
0042 E0E0 ldi R30,0
0044 5E07 cpc R21,R30
0046 A9F1 breq L20
0048 80E2 ldi R24,32
004A 90E0 ldi R25,0
004C 8417 cp R24,R20
004E 9507 cpc R25,R21
0050 CCF0 brlt L24
0052 L23:
0052 4130 cpi R20,1
0054 E0E0 ldi R30,0
0056 5E07 cpc R21,R30
0058 11F1 breq L15
005A 4230 cpi R20,2
005C E0E0 ldi R30,0
005E 5E07 cpc R21,R30
0060 01F1 breq L16
0062 4430 cpi R20,4
0064 E0E0 ldi R30,0
0066 5E07 cpc R21,R30
0068 F1F0 breq L17
006A 4830 cpi R20,8
006C E0E0 ldi R30,0
006E 5E07 cpc R21,R30
0070 E1F0 breq L18
0072 4130 cpi R20,1
0074 E0E0 ldi R30,0
0076 5E07 cpc R21,R30
0078 0CF1 brlt L12
007A L25:
007A 4031 cpi R20,16
007C E0E0 ldi R30,0
007E 5E07 cpc R21,R30
0080 B1F0 breq L19
0082 1CC0 xjmp L12
0084 L24:
0084 4034 cpi R20,64
0086 E0E0 ldi R30,0
0088 5E07 cpc R21,R30
008A A9F0 breq L21
008C 4034 cpi R20,64
008E E0E0 ldi R30,0
0090 5E07 cpc R21,R30
0092 A4F0 brlt L12
0094 L26:
0094 4038 cpi R20,128
0096 E0E0 ldi R30,0
0098 5E07 cpc R21,R30
009A 79F0 breq L22
009C 0FC0 xjmp L12
009E X0:
009E .dbline 25
009E ; {
009E L15:
009E .dbline 27
009E ; case 1:
009E ; num=0x79;break;
009E 49E7 ldi R20,121
00A0 .dbline 27
00A0 0DC0 xjmp L13
00A2 L16:
00A2 .dbline 29
00A2 ; case 2:
00A2 ; num=0x24;break;
00A2 44E2 ldi R20,36
00A4 .dbline 29
00A4 0BC0 xjmp L13
00A6 L17:
00A6 .dbline 31
00A6 ; case 4:
00A6 ; num=0x30;break;
00A6 40E3 ldi R20,48
00A8 .dbline 31
00A8 09C0 xjmp L13
00AA L18:
00AA .dbline 33
00AA ; case 8:
00AA ; num=0x19;break;
00AA 49E1 ldi R20,25
00AC .dbline 33
00AC 07C0 xjmp L13
00AE L19:
00AE .dbline 35
00AE ; case 16:
00AE ; num=0x12;break;
00AE 42E1 ldi R20,18
00B0 .dbline 35
00B0 05C0 xjmp L13
00B2 L20:
00B2 .dbline 37
00B2 ; case 32:
00B2 ; num=0x02;break;
00B2 42E0 ldi R20,2
00B4 .dbline 37
00B4 03C0 xjmp L13
00B6 L21:
00B6 .dbline 39
00B6 ; case 64:
00B6 ; num=0x78;break;
00B6 48E7 ldi R20,120
00B8 .dbline 39
00B8 01C0 xjmp L13
00BA L22:
00BA .dbline 41
00BA ; case 128:
00BA ; num=0x00;break;
00BA 4427 clr R20
00BC .dbline 41
00BC L12:
00BC L13:
00BC .dbline 43
00BC ; }
00BC ; return(num);
00BC 042F mov R16,R20
00BE .dbline -2
00BE L11:
00BE 0E940000 xcall pop_gset1
00C2 .dbline 0 ; func end
00C2 0895 ret
00C4 .dbsym r num 20 c
00C4 .dbsym r key 16 c
00C4 .dbend
00C4 .dbfunc e main _main fI
00C4 ; key -> R16
.even
00C4 _main::
00C4 .dbline -1
00C4 .dbline 48
00C4 ; }
00C4 ;
00C4 ; //主函数
00C4 ; main()
00C4 ; {uchar key=0;
00C4 .dbline 48
00C4 0027 clr R16
00C6 .dbline 49
00C6 ; DDRA=0xff;
00C6 8FEF ldi R24,255
00C8 8ABB out 0x1a,R24
00CA .dbline 50
00CA ; DDRE=0x00;
00CA 2224 clr R2
00CC 22B8 out 0x2,R2
00CE .dbline 51
00CE ; PORTE=0xff;
00CE 83B9 out 0x3,R24
00D0 .dbline 52
00D0 ; SREG=0x80; //开全局中断
00D0 80E8 ldi R24,128
00D2 8FBF out 0x3f,R24
00D4 .dbline 53
00D4 ; EIMSK=0x10; //开外部中断int_4,对应按键K5
00D4 80E1 ldi R24,16
00D6 89BF out 0x39,R24
00D8 .dbline 54
00D8 ; EICRB=0xf0;
00D8 80EF ldi R24,240
00DA 8ABF out 0x3a,R24
00DC .dbline 57
00DC ;
00DC ;
00DC ; DDRA=0xff;
00DC 8FEF ldi R24,255
00DE 8ABB out 0x1a,R24
00E0 .dbline 58
00E0 ; PORTA=0xff;
00E0 8BBB out 0x1b,R24
00E2 .dbline 59
00E2 ; DDRC=0xff;
00E2 84BB out 0x14,R24
00E4 .dbline 60
00E4 ; PORTC=0xff;
00E4 85BB out 0x15,R24
00E6 .dbline 61
00E6 ; DDRE=0x00;
00E6 22B8 out 0x2,R2
00E8 .dbline 62
00E8 ; PORTE=0xff;
00E8 83B9 out 0x3,R24
00EA .dbline 63
00EA ; DDRF=0xf8;
00EA 88EF ldi R24,248
00EC 80936100 sts 97,R24
00F0 L28:
00F0 .dbline 64
00F0 L29:
00F0 .dbline 64
00F0 FFCF xjmp L28
00F2 X1:
00F2 .dbline -2
00F2 .dbline 66
00F2 ; while(1);
00F2 ;
00F2 ; }
00F2 L27:
00F2 .dbline 0 ; func end
00F2 0895 ret
00F4 .dbsym r key 16 c
00F4 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -