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

📄 int4.lst

📁 这个程序是用atmega128芯片实现外部中断的一个例子
💻 LST
字号:
__start:
__text_start:
    0047 EFCF      LDI	R28,0xFF
    0048 E1D0      LDI	R29,0x10
    0049 BFCD      OUT	0x3D,R28
    004A BFDE      OUT	0x3E,R29
    004B 51CE      SUBI	R28,0x1E
    004C 40D0      SBCI	R29,0
    004D EA0A      LDI	R16,0xAA
    004E 8308      STD	Y+0,R16
    004F 2400      CLR	R0
    0050 E0E1      LDI	R30,1
    0051 E0F1      LDI	R31,1
    0052 E011      LDI	R17,1
    0053 30E1      CPI	R30,1
    0054 07F1      CPC	R31,R17
    0055 F011      BEQ	0x0058
    0056 9201      ST	R0,Z+
    0057 CFFB      RJMP	0x0053
    0058 8300      STD	Z+0,R16
    0059 E8EC      LDI	R30,0x8C
    005A E0F0      LDI	R31,0
    005B E0A0      LDI	R26,0
    005C E0B1      LDI	R27,1
    005D E010      LDI	R17,0
    005E 38ED      CPI	R30,0x8D
    005F 07F1      CPC	R31,R17
    0060 F021      BEQ	0x0065
    0061 95C8      LPM
    0062 9631      ADIW	R30,1
    0063 920D      ST	R0,X+
    0064 CFF9      RJMP	0x005E
    0065 940E00CA  CALL	_main
_exit:
    0067 CFFF      RJMP	_exit
FILE: F:\AVR学习板\复件实~1\int_4\int4.c
(0001) #include<iom128v.h>
(0002) #define uchar unsigned char 
(0003) #define uint unsigned int 
(0004) 
(0005) uchar key=0;
(0006) void ext_int0_isr(void)
(0007) {
(0008)   uchar aa=1;
_ext_int0_isr:
  aa                   --> R16
    0068 E001      LDI	R16,1
    0069 C017      RJMP	0x0081
(0009)   while(aa)       //判断端口是否恢复高电平,有延时抗干扰
(0010)   {
(0011)   aa=!(PINE&(1<<4));
    006A 990C      SBIC	0x01,4
    006B C003      RJMP	0x006F
    006C E021      LDI	R18,1
    006D E030      LDI	R19,0
    006E C002      RJMP	0x0071
    006F 2722      CLR	R18
    0070 2733      CLR	R19
    0071 2F02      MOV	R16,R18
(0012)   if(aa==0)
    0072 2322      TST	R18
    0073 F469      BNE	0x0081
(0013)     {
(0014) 	key+=1;
    0074 91800100  LDS	R24,0x100
    0076 5F8F      SUBI	R24,0xFF
    0077 93800100  STS	0x100,R24
(0015) 	aa=!(PINE&(1<<4));
    0079 990C      SBIC	0x01,4
    007A C003      RJMP	0x007E
    007B E021      LDI	R18,1
    007C E030      LDI	R19,0
    007D C002      RJMP	0x0080
    007E 2722      CLR	R18
    007F 2733      CLR	R19
    0080 2F02      MOV	R16,R18
    0081 2300      TST	R16
    0082 F739      BNE	0x006A
(0016) 	}
(0017)   }
(0018) }
    0083 9508      RET
_encoder:
  num                  --> R20
  key                  --> R16
    0084 940E00E2  CALL	push_gset1
(0019) 
(0020) //数码管译码函数
(0021) uchar encoder(uchar key)
(0022) {
(0023) uchar num;
(0024) switch(key)
    0086 2F40      MOV	R20,R16
    0087 2755      CLR	R21
    0088 3240      CPI	R20,0x20
    0089 E0E0      LDI	R30,0
    008A 075E      CPC	R21,R30
    008B F1A9      BEQ	0x00C1
    008C E280      LDI	R24,0x20
    008D E090      LDI	R25,0
    008E 1784      CP	R24,R20
    008F 0795      CPC	R25,R21
    0090 F0CC      BLT	0x00AA
    0091 3041      CPI	R20,1
    0092 E0E0      LDI	R30,0
    0093 075E      CPC	R21,R30
    0094 F111      BEQ	0x00B7
    0095 3042      CPI	R20,2
    0096 E0E0      LDI	R30,0
    0097 075E      CPC	R21,R30
    0098 F101      BEQ	0x00B9
    0099 3044      CPI	R20,4
    009A E0E0      LDI	R30,0
    009B 075E      CPC	R21,R30
    009C F0F1      BEQ	0x00BB
    009D 3048      CPI	R20,0x8
    009E E0E0      LDI	R30,0
    009F 075E      CPC	R21,R30
    00A0 F0E1      BEQ	0x00BD
    00A1 3041      CPI	R20,1
    00A2 E0E0      LDI	R30,0
    00A3 075E      CPC	R21,R30
    00A4 F10C      BLT	0x00C6
    00A5 3140      CPI	R20,0x10
    00A6 E0E0      LDI	R30,0
    00A7 075E      CPC	R21,R30
    00A8 F0B1      BEQ	0x00BF
    00A9 C01C      RJMP	0x00C6
    00AA 3440      CPI	R20,0x40
    00AB E0E0      LDI	R30,0
    00AC 075E      CPC	R21,R30
    00AD F0A9      BEQ	0x00C3
    00AE 3440      CPI	R20,0x40
    00AF E0E0      LDI	R30,0
    00B0 075E      CPC	R21,R30
    00B1 F0A4      BLT	0x00C6
    00B2 3840      CPI	R20,0x80
    00B3 E0E0      LDI	R30,0
    00B4 075E      CPC	R21,R30
    00B5 F079      BEQ	0x00C5
    00B6 C00F      RJMP	0x00C6
(0025) {
(0026)   case 1:
(0027)   num=0x79;break;
    00B7 E749      LDI	R20,0x79
    00B8 C00D      RJMP	0x00C6
(0028)   case 2:
(0029)   num=0x24;break;
    00B9 E244      LDI	R20,0x24
    00BA C00B      RJMP	0x00C6
(0030)   case 4:
(0031)   num=0x30;break;
    00BB E340      LDI	R20,0x30
    00BC C009      RJMP	0x00C6
(0032)   case 8:
(0033)   num=0x19;break;
    00BD E149      LDI	R20,0x19
    00BE C007      RJMP	0x00C6
(0034)   case 16:
(0035)   num=0x12;break;
    00BF E142      LDI	R20,0x12
    00C0 C005      RJMP	0x00C6
(0036)   case 32:
(0037)   num=0x02;break;
    00C1 E042      LDI	R20,2
    00C2 C003      RJMP	0x00C6
(0038)   case 64:
(0039)   num=0x78;break;
    00C3 E748      LDI	R20,0x78
    00C4 C001      RJMP	0x00C6
(0040)   case 128:
(0041)   num=0x00;break;
    00C5 2744      CLR	R20
(0042) }
(0043)   return(num);
    00C6 2F04      MOV	R16,R20
    00C7 940E00E5  CALL	pop_gset1
    00C9 9508      RET
(0044) }
(0045) 
(0046) //主函数
(0047) main()
(0048) {uchar key=0;
_main:
  key                  --> R16
    00CA 2700      CLR	R16
(0049) DDRA=0xff;
    00CB EF8F      LDI	R24,0xFF
    00CC BB8A      OUT	0x1A,R24
(0050) DDRE=0x00;
    00CD 2422      CLR	R2
    00CE B822      OUT	0x02,R2
(0051) PORTE=0xff;
    00CF B983      OUT	0x03,R24
(0052) SREG=0x80;    //开全局中断
    00D0 E880      LDI	R24,0x80
    00D1 BF8F      OUT	0x3F,R24
(0053) EIMSK=0x10;   //开外部中断int_4,对应按键K5
    00D2 E180      LDI	R24,0x10
    00D3 BF89      OUT	0x39,R24
(0054) EICRB=0xf0;
    00D4 EF80      LDI	R24,0xF0
    00D5 BF8A      OUT	0x3A,R24
(0055) 
(0056) 
(0057) DDRA=0xff;
    00D6 EF8F      LDI	R24,0xFF
    00D7 BB8A      OUT	0x1A,R24
(0058) PORTA=0xff;
    00D8 BB8B      OUT	0x1B,R24
(0059) DDRC=0xff;
    00D9 BB84      OUT	0x14,R24
(0060) PORTC=0xff;
    00DA BB85      OUT	0x15,R24
(0061) DDRE=0x00;
    00DB B822      OUT	0x02,R2
(0062) PORTE=0xff;
    00DC B983      OUT	0x03,R24
(0063) DDRF=0xf8;
    00DD EF88      LDI	R24,0xF8
    00DE 93800061  STS	0x61,R24
(0064) while(1);
    00E0 CFFF      RJMP	0x00E0
(0065) 
(0066) }
FILE: <library>
    00E1 9508      RET
push_gset1:
    00E2 935A      ST	R21,-Y
    00E3 934A      ST	R20,-Y
    00E4 9508      RET
pop_gset1:
    00E5 E0E1      LDI	R30,1
pop:
    00E6 9149      LD	R20,Y+
    00E7 9159      LD	R21,Y+
    00E8 FDE0      SBRC	R30,0
    00E9 9508      RET
    00EA 9169      LD	R22,Y+
    00EB 9179      LD	R23,Y+
    00EC FDE1      SBRC	R30,1
    00ED 9508      RET
    00EE 90A9      LD	R10,Y+
    00EF 90B9      LD	R11,Y+
    00F0 FDE2      SBRC	R30,2
    00F1 9508      RET
    00F2 90C9      LD	R12,Y+
    00F3 90D9      LD	R13,Y+
    00F4 FDE3      SBRC	R30,3
    00F5 9508      RET
    00F6 90E9      LD	R14,Y+
    00F7 90F9      LD	R15,Y+
    00F8 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -