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

📄 int_2.lst

📁 16个单片机c语言实验程序
💻 LST
字号:
__text_start:
__start:
      73 EFCF      LDI	R28,0xFF
      74 E2D1      LDI	R29,0x21
      75 BFCD      OUT	0x3D,R28
      76 BFDE      OUT	0x3E,R29
      77 51CE      SUBI	R28,0x1E
      78 40D0      SBCI	R29,0
      79 EA0A      LDI	R16,0xAA
      7A 8308      STD	Y+0,R16
      7B 2400      CLR	R0
      7C E0E1      LDI	R30,1
      7D E0F2      LDI	R31,2
      7E E012      LDI	R17,2
      7F 30E1      CPI	R30,1
      80 07F1      CPC	R31,R17
      81 F011      BEQ	0x0084
      82 9201      ST	R0,Z+
      83 CFFB      RJMP	0x007F
      84 8300      STD	Z+0,R16
      85 EEE4      LDI	R30,0xE4
      86 E0F0      LDI	R31,0
      87 E0A0      LDI	R26,0
      88 E0B2      LDI	R27,2
      89 E010      LDI	R17,0
      8A E000      LDI	R16,0
      8B BF0B      OUT	0x3B,R16
      8C 3EE5      CPI	R30,0xE5
      8D 07F1      CPC	R31,R17
      8E F021      BEQ	0x0093
      8F 95C8      LPM
      90 9631      ADIW	R30,1
      91 920D      ST	R0,X+
      92 CFF9      RJMP	0x008C
      93 940E 00F2 CALL	_main
_exit:
      95 CFFF      RJMP	_exit
FILE: D:\16实验程序\外部中断\int_2.c
(0001) //外部中断程序
(0002) //使用外部中断INT2
(0003) //按键9,0,a,b输入,led显示
(0004) #include <iom16v.h>  
(0005) #pragma interrupt_handler ext_int2_isr:19 
(0006)  //指定外部中断函数
(0007) #define uint unsigned int 
(0008) #define uchar unsigned char 
(0009) 
(0010) 
(0011) s_ms(uint ms)
(0012) {
(0013) for(;ms>1;ms--);
_s_ms:
  ms                   --> R16
      96 C002      RJMP	0x0099
      97 5001      SUBI	R16,1
      98 4010      SBCI	R17,0
      99 E081      LDI	R24,1
      9A E090      LDI	R25,0
      9B 1780      CP	R24,R16
      9C 0791      CPC	R25,R17
      9D F3C8      BCS	0x0097
      9E 9508      RET
_ext_int2_isr:
  aa                   --> R20
      9F 920A      ST	R0,-Y
      A0 921A      ST	R1,-Y
      A1 922A      ST	R2,-Y
      A2 923A      ST	R3,-Y
      A3 924A      ST	R4,-Y
      A4 925A      ST	R5,-Y
      A5 926A      ST	R6,-Y
      A6 927A      ST	R7,-Y
      A7 928A      ST	R8,-Y
      A8 929A      ST	R9,-Y
      A9 930A      ST	R16,-Y
      AA 931A      ST	R17,-Y
      AB 932A      ST	R18,-Y
      AC 933A      ST	R19,-Y
      AD 938A      ST	R24,-Y
      AE 939A      ST	R25,-Y
      AF 93AA      ST	R26,-Y
      B0 93BA      ST	R27,-Y
      B1 93EA      ST	R30,-Y
      B2 93FA      ST	R31,-Y
      B3 B60F      IN	R0,0x3F
      B4 920A      ST	R0,-Y
      B5 940E 00FF CALL	push_xgsetF000
(0014) }
(0015) 
(0016) unsigned char i=1;
(0017) // External Interrupt 0 service routine
(0018) void ext_int2_isr(void)
(0019) {
(0020)   uchar aa=1;
      B7 E041      LDI	R20,1
(0021)   PORTD=~i++;
      B8 9020 0200 LDS	R2,i
      BA 2433      CLR	R3
      BB 2D82      MOV	R24,R2
      BC 5F8F      SUBI	R24,0xFF
      BD 9380 0200 STS	i,R24
      BF 9420      COM	R2
      C0 BA22      OUT	0x12,R2
      C1 C015      RJMP	0x00D7
(0022)   while(aa)       //判断端口是否恢复高电平,有延时抗干扰
(0023)   {
(0024)   aa=!(PINB&(1<<2));
      C2 99B2      SBIC	0x16,2
      C3 C003      RJMP	0x00C7
      C4 E061      LDI	R22,1
      C5 E070      LDI	R23,0
      C6 C002      RJMP	0x00C9
      C7 2766      CLR	R22
      C8 2777      CLR	R23
      C9 2F46      MOV	R20,R22
(0025)   if(aa==0)
      CA 2366      TST	R22
      CB F459      BNE	0x00D7
(0026)     {
(0027) 	s_ms(15000);
      CC E908      LDI	R16,0x98
      CD E31A      LDI	R17,0x3A
      CE DFC7      RCALL	_s_ms
(0028) 	aa=!(PINB&(1<<2));
      CF 99B2      SBIC	0x16,2
      D0 C003      RJMP	0x00D4
      D1 E061      LDI	R22,1
      D2 E070      LDI	R23,0
      D3 C002      RJMP	0x00D6
      D4 2766      CLR	R22
      D5 2777      CLR	R23
      D6 2F46      MOV	R20,R22
      D7 2344      TST	R20
      D8 F749      BNE	0x00C2
      D9 940E 0104 CALL	pop_xgsetF000
      DB 9009      LD	R0,Y+
      DC BE0F      OUT	0x3F,R0
      DD 91F9      LD	R31,Y+
      DE 91E9      LD	R30,Y+
      DF 91B9      LD	R27,Y+
      E0 91A9      LD	R26,Y+
      E1 9199      LD	R25,Y+
      E2 9189      LD	R24,Y+
      E3 9139      LD	R19,Y+
      E4 9129      LD	R18,Y+
      E5 9119      LD	R17,Y+
      E6 9109      LD	R16,Y+
      E7 9099      LD	R9,Y+
      E8 9089      LD	R8,Y+
      E9 9079      LD	R7,Y+
      EA 9069      LD	R6,Y+
      EB 9059      LD	R5,Y+
      EC 9049      LD	R4,Y+
      ED 9039      LD	R3,Y+
      EE 9029      LD	R2,Y+
      EF 9019      LD	R1,Y+
      F0 9009      LD	R0,Y+
      F1 9518      RETI
(0029) 	}
(0030)   }
(0031) }
(0032) 
(0033) 
(0034) void main(void)
(0035) {
(0036) DDRD=0xff;
_main:
      F2 EF8F      LDI	R24,0xFF
      F3 BB81      OUT	0x11,R24
(0037) PORTD=0XFF;
      F4 BB82      OUT	0x12,R24
(0038) DDRB=0xf0;
      F5 EF80      LDI	R24,0xF0
      F6 BB87      OUT	0x17,R24
(0039) PORTB=0x0f;
      F7 E08F      LDI	R24,0xF
      F8 BB88      OUT	0x18,R24
(0040) 
(0041) SREG=0x80;    //开全局中断
      F9 E880      LDI	R24,0x80
      FA BF8F      OUT	0x3F,R24
(0042) 
(0043) GICR=0x20;   //开外部中断int_2,对应按键K9,K0,KA,KB
      FB E280      LDI	R24,0x20
      FC BF8B      OUT	0x3B,R24
(0044) while (1);
FILE: <library>
      FD CFFF      RJMP	0x00FD
      FE 9508      RET
push_xgsetF000:
      FF 937A      ST	R23,-Y
     100 936A      ST	R22,-Y
     101 935A      ST	R21,-Y
     102 934A      ST	R20,-Y
     103 9508      RET
pop_xgsetF000:
     104 9149      LD	R20,Y+
     105 9159      LD	R21,Y+
     106 9169      LD	R22,Y+
     107 9179      LD	R23,Y+
     108 9508      RET

⌨️ 快捷键说明

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