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

📄 int0.lst

📁 protues_atmeg8学习之:中断篇源代码
💻 LST
字号:
__start:
__text_start:
    0018 E5CF      LDI	R28,0x5F
    0019 E0D4      LDI	R29,4
    001A BFCD      OUT	0x3D,R28
    001B BFDE      OUT	0x3E,R29
    001C 51C0      SUBI	R28,0x10
    001D 40D0      SBCI	R29,0
    001E EA0A      LDI	R16,0xAA
    001F 8308      STD	Y+0,R16
    0020 2400      CLR	R0
    0021 E6E0      LDI	R30,0x60
    0022 E0F0      LDI	R31,0
    0023 E010      LDI	R17,0
    0024 36E1      CPI	R30,0x61
    0025 07F1      CPC	R31,R17
    0026 F011      BEQ	0x0029
    0027 9201      ST	R0,Z+
    0028 CFFB      RJMP	0x0024
    0029 8300      STD	Z+0,R16
    002A E3E0      LDI	R30,0x30
    002B E0F0      LDI	R31,0
    002C E6A0      LDI	R26,0x60
    002D E0B0      LDI	R27,0
    002E E010      LDI	R17,0
    002F 33E0      CPI	R30,0x30
    0030 07F1      CPC	R31,R17
    0031 F021      BEQ	0x0036
    0032 95C8      LPM
    0033 9631      ADIW	R30,1
    0034 920D      ST	R0,X+
    0035 CFF9      RJMP	0x002F
    0036 D02E      RCALL	_main
_exit:
    0037 CFFF      RJMP	_exit
FILE: F:\Learn\AVR\Pro_Mega8\中断\Int0\Delay.h
(0001) //延时1MS
(0002) void delay_1ms(void)
(0003) { 
(0004)     unsigned int i;
(0005)     for(i=1;i<(unsigned int)(1144-2);i++)
_delay_1ms:
  i                    --> R16
    0038 E001      LDI	R16,1
    0039 E010      LDI	R17,0
    003A C002      RJMP	0x003D
    003B 5F0F      SUBI	R16,0xFF
    003C 4F1F      SBCI	R17,0xFF
    003D 3706      CPI	R16,0x76
    003E E0E4      LDI	R30,4
    003F 071E      CPC	R17,R30
    0040 F3D0      BCS	0x003B
(0006)         ;
(0007) }
    0041 9508      RET
_delay_ms:
  i                    --> R20
  n                    --> R22
    0042 D0A2      RCALL	push_gset2
    0043 01B8      MOVW	R22,R16
(0008) 
(0009) //延时nMS
(0010) void delay_ms(unsigned int n)
(0011) {
(0012)     unsigned int i=0;
    0044 2744      CLR	R20
    0045 2755      CLR	R21
    0046 C003      RJMP	0x004A
(0013)     while(i<n)
(0014)     {
(0015) 	    delay_1ms();
    0047 DFF0      RCALL	_delay_1ms
(0016)         i++;
    0048 5F4F      SUBI	R20,0xFF
    0049 4F5F      SBCI	R21,0xFF
    004A 1746      CP	R20,R22
    004B 0757      CPC	R21,R23
    004C F3D0      BCS	0x0047
(0017)     }
(0018) } 
    004D D07E      RCALL	pop_gset2
    004E 9508      RET
_int_fun:
    004F 922A      ST	R2,-Y
    0050 938A      ST	R24,-Y
    0051 939A      ST	R25,-Y
    0052 B62F      IN	R2,0x3F
    0053 922A      ST	R2,-Y
FILE: F:\Learn\AVR\Pro_Mega8\中断\Int0\Int0.C
(0001) /******************************************/
(0002) //文件名:Int0.c
(0003) //功能: 外部中断的应用
(0004) //作者:  young
(0005) //时间: 2006.10.1
(0006) //目标MCU:ATmega8   
(0007) //晶振:  8MHZ
(0008) /******************************************/
(0009) #include <iom8v.h>
(0010) #include <macros.h>
(0011) #include "Delay.h"
(0012) 
(0013) unsigned char CountNum;   //全局变量,用来计数
(0014) 
(0015) #pragma interrupt_handler int_fun:2
(0016) #pragma interrupt_handler int_fun:3
(0017) void int_fun(void)
(0018) {
(0019)     if(++CountNum>=100)
    0054 91800060  LDS	R24,_CountNum
    0056 5F8F      SUBI	R24,0xFF
    0057 2E28      MOV	R2,R24
    0058 92200060  STS	_CountNum,R2
    005A 3684      CPI	R24,0x64
    005B F018      BCS	0x005F
(0020) 	    CountNum=0;		
    005C 2422      CLR	R2
    005D 92200060  STS	_CountNum,R2
(0021) }
    005F 9029      LD	R2,Y+
    0060 BE2F      OUT	0x3F,R2
    0061 9199      LD	R25,Y+
    0062 9189      LD	R24,Y+
    0063 9029      LD	R2,Y+
    0064 9518      RETI
_main:
  temp2                --> Y+1
  num                  --> Y+0
  temp                 --> R20
    0065 972A      SBIW	R28,0xA
(0022) 
(0023) //主函数,依次显示数字0~9
(0024) void main()
(0025) {
(0026) 	unsigned char temp,temp2;
(0027) 	unsigned char num[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 
    0066 E286      LDI	R24,0x26
    0067 E090      LDI	R25,0
    0068 01FE      MOVW	R30,R28
    0069 E00A      LDI	R16,0xA
    006A E010      LDI	R17,0
    006B 93FA      ST	R31,-Y
    006C 93EA      ST	R30,-Y
    006D 939A      ST	R25,-Y
    006E 938A      ST	R24,-Y
    006F D078      RCALL	asgncblk
(0028) 	                       0x6D, 0x7D, 0x07, 0x7F, 0x6F};
(0029) 	//初始化端口
(0030) 	DDRB=0xFF;	  //设置B口为输出模式
    0070 EF8F      LDI	R24,0xFF
    0071 BB87      OUT	0x17,R24
(0031) 	PORTB=0xFF;	  //置高电平
    0072 BB88      OUT	0x18,R24
(0032) 	DDRC=0x03;
    0073 E083      LDI	R24,3
    0074 BB84      OUT	0x14,R24
(0033) 	PORTC=0xFF;
    0075 EF8F      LDI	R24,0xFF
    0076 BB85      OUT	0x15,R24
(0034) 	DDRD=0xFF;
    0077 BB81      OUT	0x11,R24
(0035) 	PORTD=0xFF;   
    0078 BB82      OUT	0x12,R24
(0036)     	
(0037) 	MCUCR=0x02;   //INT0下降沿触发,INT1低电平有效
    0079 E082      LDI	R24,2
    007A BF85      OUT	0x35,R24
(0038) 	GICR|=0xC0;   //打开INT0,INT1中断
    007B B78B      IN	R24,0x3B
    007C 6C80      ORI	R24,0xC0
    007D BF8B      OUT	0x3B,R24
(0039)     GIFR=0xC0;    //清除INT0、INT1中断标志位
    007E EC80      LDI	R24,0xC0
    007F BF8A      OUT	0x3A,R24
(0040) 	
(0041) 	CountNum=0;   //初始化全局变量
    0080 2422      CLR	R2
    0081 92200060  STS	_CountNum,R2
(0042) 	SEI();        //打开全局中断
    0083 9478      BSET	7
    0084 C02C      RJMP	0x00B1
(0043) 	while (1)
(0044) 	{
(0045) 	    CLI(); 
    0085 94F8      BCLR	7
(0046)         temp=CountNum/10;
    0086 E01A      LDI	R17,0xA
    0087 91000060  LDS	R16,_CountNum
    0089 D02C      RCALL	div8u
    008A 2F40      MOV	R20,R16
(0047) 		PORTC&=~(1);			
    008B 98A8      CBI	0x15,0
(0048) 		PORTB=num[temp];
    008C 01CE      MOVW	R24,R28
    008D 2FE4      MOV	R30,R20
    008E 27FF      CLR	R31
    008F 0FE8      ADD	R30,R24
    0090 1FF9      ADC	R31,R25
    0091 8020      LDD	R2,Z+0
    0092 BA28      OUT	0x18,R2
(0049) 		delay_ms(1);
    0093 E001      LDI	R16,1
    0094 E010      LDI	R17,0
    0095 DFAC      RCALL	_delay_ms
(0050) 		PORTC|=0xFF;
    0096 B385      IN	R24,0x15
    0097 6F8F      ORI	R24,0xFF
    0098 BB85      OUT	0x15,R24
(0051) 		temp=CountNum%10;
    0099 E01A      LDI	R17,0xA
    009A 91000060  LDS	R16,_CountNum
    009C D017      RCALL	mod8u
    009D 2F40      MOV	R20,R16
(0052) 		SEI();
    009E 9478      BSET	7
(0053) 		PORTC&=~(2);		
    009F 98A9      CBI	0x15,1
(0054) 		PORTB=num[temp];			
    00A0 01CE      MOVW	R24,R28
    00A1 2FE4      MOV	R30,R20
    00A2 27FF      CLR	R31
    00A3 0FE8      ADD	R30,R24
    00A4 1FF9      ADC	R31,R25
    00A5 8020      LDD	R2,Z+0
    00A6 BA28      OUT	0x18,R2
(0055) 		delay_ms(1);
    00A7 E001      LDI	R16,1
    00A8 E010      LDI	R17,0
    00A9 DF98      RCALL	_delay_ms
(0056) 		PORTC|=0xFF; 
    00AA B385      IN	R24,0x15
    00AB 6F8F      ORI	R24,0xFF
    00AC BB85      OUT	0x15,R24
(0057) 		SEI();
    00AD 9478      BSET	7
(0058) 		delay_ms(1);   	
    00AE E001      LDI	R16,1
    00AF E010      LDI	R17,0
    00B0 DF91      RCALL	_delay_ms
    00B1 CFD3      RJMP	0x0085
(0059)      }
(0060) }
FILE: <library>
    00B2 962A      ADIW	R28,0xA
    00B3 9508      RET
mod8u:
    00B4 9468      BSET	6
    00B5 C001      RJMP	xdiv8u
div8u:
    00B6 94E8      BCLR	6
xdiv8u:
    00B7 932A      ST	R18,-Y
    00B8 92FA      ST	R15,-Y
    00B9 92EA      ST	R14,-Y
    00BA 24FF      CLR	R15
    00BB 24EE      CLR	R14
    00BC E120      LDI	R18,0x10
    00BD 0F00      LSL	R16
    00BE 1CFF      ROL	R15
    00BF 1CEE      ROL	R14
    00C0 16E1      CP	R14,R17
    00C1 F010      BCS	0x00C4
    00C2 1AE1      SUB	R14,R17
    00C3 9503      INC	R16
    00C4 952A      DEC	R18
    00C5 F7B9      BNE	0x00BD
    00C6 F40E      BRTC	0x00C8
    00C7 2D0E      MOV	R16,R14
    00C8 90E9      LD	R14,Y+
    00C9 90F9      LD	R15,Y+
    00CA 9129      LD	R18,Y+
    00CB 9508      RET
pop_gset2:
    00CC E0E2      LDI	R30,2
    00CD C004      RJMP	pop
push_gset1:
    00CE 935A      ST	R21,-Y
    00CF 934A      ST	R20,-Y
    00D0 9508      RET
pop_gset1:
    00D1 E0E1      LDI	R30,1
pop:
    00D2 9149      LD	R20,Y+
    00D3 9159      LD	R21,Y+
    00D4 FDE0      SBRC	R30,0
    00D5 9508      RET
    00D6 9169      LD	R22,Y+
    00D7 9179      LD	R23,Y+
    00D8 FDE1      SBRC	R30,1
    00D9 9508      RET
    00DA 90A9      LD	R10,Y+
    00DB 90B9      LD	R11,Y+
    00DC FDE2      SBRC	R30,2
    00DD 9508      RET
    00DE 90C9      LD	R12,Y+
    00DF 90D9      LD	R13,Y+
    00E0 FDE3      SBRC	R30,3
    00E1 9508      RET
    00E2 90E9      LD	R14,Y+
    00E3 90F9      LD	R15,Y+
    00E4 9508      RET
push_gset2:
    00E5 937A      ST	R23,-Y
    00E6 936A      ST	R22,-Y
    00E7 CFE6      RJMP	push_gset1
asgncblk:
    00E8 93AA      ST	R26,-Y
    00E9 93BA      ST	R27,-Y
    00EA 93EA      ST	R30,-Y
    00EB 93FA      ST	R31,-Y
    00EC 920A      ST	R0,-Y
    00ED 81AF      LDD	R26,Y+7
    00EE 85B8      LDD	R27,Y+8
    00EF 81ED      LDD	R30,Y+5
    00F0 81FE      LDD	R31,Y+6
    00F1 3000      CPI	R16,0
    00F2 0701      CPC	R16,R17
    00F3 F031      BEQ	0x00FA
    00F4 95C8      LPM
    00F5 920D      ST	R0,X+
    00F6 9631      ADIW	R30,1
    00F7 5001      SUBI	R16,1
    00F8 4010      SBCI	R17,0
    00F9 CFF7      RJMP	0x00F1
    00FA 9009      LD	R0,Y+
    00FB 91F9      LD	R31,Y+
    00FC 91E9      LD	R30,Y+
    00FD 91B9      LD	R27,Y+
    00FE 91A9      LD	R26,Y+
    00FF 9624      ADIW	R28,4
    0100 9508      RET

⌨️ 快捷键说明

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