⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int4.lis

📁 这个程序是用atmega128芯片实现外部中断的一个例子
💻 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 + -