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

📄 int.lst

📁 学习AVR单片机的基础实验程序 适合初学者学习提高
💻 LST
字号:
__start:
__text_start:
    002A E5CF      LDI	R28,0x5F
    002B E0D4      LDI	R29,4
    002C BFCD      OUT	0x3D,R28
    002D BFDE      OUT	0x3E,R29
    002E 51C0      SUBI	R28,0x10
    002F 40D0      SBCI	R29,0
    0030 EA0A      LDI	R16,0xAA
    0031 8308      STD	Y+0,R16
    0032 2400      CLR	R0
    0033 E6E0      LDI	R30,0x60
    0034 E0F0      LDI	R31,0
    0035 E010      LDI	R17,0
    0036 36E0      CPI	R30,0x60
    0037 07F1      CPC	R31,R17
    0038 F011      BEQ	0x003B
    0039 9201      ST	R0,Z+
    003A CFFB      RJMP	0x0036
    003B 8300      STD	Z+0,R16
    003C E5E4      LDI	R30,0x54
    003D E0F0      LDI	R31,0
    003E E6A0      LDI	R26,0x60
    003F E0B0      LDI	R27,0
    0040 E010      LDI	R17,0
    0041 35E4      CPI	R30,0x54
    0042 07F1      CPC	R31,R17
    0043 F021      BEQ	0x0048
    0044 95C8      LPM
    0045 9631      ADIW	R30,1
    0046 920D      ST	R0,X+
    0047 CFF9      RJMP	0x0041
    0048 940E009C  CALL	_main
_exit:
    004A CFFF      RJMP	_exit
_delay_ms:
  i                    --> R20
  time                 --> R16
    004B 940E00AA  CALL	push_gset1
FILE: D:\AVR\我的程序\外部中断0实验\cfg.h
(0001) /****************************
(0002) *程序名称:功能函数集
(0003) *设    计:萧联珠
(0004) *日    期:2007-11-23
(0005) ********************************/
(0006) #include <iom16v.h>
(0007) 
(0008) /*延时子程序*/
(0009) void delay_ms(int time)
(0010) {
(0011)  int i;
(0012)  for(;time>0;time--)
    004D C00A      RJMP	0x0058
(0013)   for(i=0;i<1000;i++);
    004E 2744      CLR	R20
    004F 2755      CLR	R21
    0050 5F4F      SUBI	R20,0xFF
    0051 4F5F      SBCI	R21,0xFF
    0052 3E48      CPI	R20,0xE8
    0053 E0E3      LDI	R30,3
    0054 075E      CPC	R21,R30
    0055 F3D4      BLT	0x0050
    0056 5001      SUBI	R16,1
    0057 4010      SBCI	R17,0
    0058 2422      CLR	R2
    0059 2433      CLR	R3
    005A 1620      CP	R2,R16
    005B 0631      CPC	R3,R17
    005C F38C      BLT	0x004E
    005D 940E00AD  CALL	pop_gset1
    005F 9508      RET
(0014) }
(0015) 
(0016) /*端口初始化*/
(0017) void port_init() 
(0018) {
(0019)   DDRB=0xFF;       //配置PB口为输出
_port_init:
    0060 EF8F      LDI	R24,0xFF
    0061 BB87      OUT	0x17,R24
(0020)   PORTB=0xFF;      //PB口的初始值为"1"
    0062 BB88      OUT	0x18,R24
(0021)   
(0022)   DDRD&=~(1<<DDD2);
    0063 988A      CBI	0x11,2
(0023)   PORTD|=(1<<PD2);
    0064 9A92      SBI	0x12,2
    0065 9508      RET
_display:
  i                    --> R20
    0066 940E00AA  CALL	push_gset1
(0024) }
(0025) 
(0026) /*流水灯显示*/
(0027) void display()
(0028) {
(0029)  unsigned char i;
(0030)  for(i=0;i<8;i++) //去
    0068 2744      CLR	R20
    0069 C00B      RJMP	0x0075
(0031)  {
(0032)    PORTB=~(1<<i);
    006A E001      LDI	R16,1
    006B 2F14      MOV	R17,R20
    006C 940E00EF  CALL	lsl8
    006E 2E20      MOV	R2,R16
    006F 9420      COM	R2
    0070 BA28      OUT	0x18,R2
(0033)    delay_ms(100);
    0071 E604      LDI	R16,0x64
    0072 E010      LDI	R17,0
    0073 DFD7      RCALL	_delay_ms
    0074 9543      INC	R20
    0075 3048      CPI	R20,0x8
    0076 F398      BCS	0x006A
    0077 940E00AD  CALL	pop_gset1
    0079 9508      RET
(0034)   }
(0035) }
(0036) 
(0037) /*中断初始化*/
(0038) void INT0_init()
(0039) {
(0040)  SREG=0x80;                      /*使能全局中断*/
_INT0_init:
    007A E880      LDI	R24,0x80
    007B BF8F      OUT	0x3F,R24
(0041)  MCUCR&=~((1<<ISC01)|(1<<ISC00));  /*低电平触发中断*/
    007C B785      IN	R24,0x35
    007D 7F8C      ANDI	R24,0xFC
    007E BF85      OUT	0x35,R24
(0042)  GICR=(1<<INT0);                 /*使能外部中断0请求*/
    007F E480      LDI	R24,0x40
    0080 BF8B      OUT	0x3B,R24
    0081 9508      RET
_int0:
  i                    --> R20
    0082 940E00C1  CALL	push_lset
    0084 940E00AA  CALL	push_gset1
(0043)  }
(0044) 
(0045) /*中断服务程序*/ 
(0046) #pragma interrupt_handler int0:2 
(0047) void int0()
(0048) {
(0049)   unsigned char i;
(0050)   for(i=8;i>0;i--)  //回
    0086 E048      LDI	R20,0x8
    0087 C00C      RJMP	0x0094
(0051)   {
(0052)     PORTB=~(1<<i-1);
    0088 2F14      MOV	R17,R20
    0089 5011      SUBI	R17,1
    008A E001      LDI	R16,1
    008B 940E00EF  CALL	lsl8
    008D 2E20      MOV	R2,R16
    008E 9420      COM	R2
    008F BA28      OUT	0x18,R2
(0053)     delay_ms(100);
    0090 E604      LDI	R16,0x64
    0091 E010      LDI	R17,0
    0092 DFB8      RCALL	_delay_ms
    0093 954A      DEC	R20
    0094 2422      CLR	R2
    0095 1624      CP	R2,R20
    0096 F388      BCS	0x0088
    0097 940E00AD  CALL	pop_gset1
    0099 940E00D8  CALL	pop_lset
    009B 9518      RETI
FILE: D:\AVR\我的程序\外部中断0实验\main.c
(0001) /***********************************
(0002) *实验目的:熟悉外部中断编程
(0003) *设    计:萧联珠
(0004) *日    期:2007-11-23
(0005) ************************************/
(0006) #include <iom16v.h>
(0007) #include "cfg.h"
(0008) 
(0009) void main()
(0010) {
(0011)   port_init();
_main:
    009C DFC3      RCALL	_port_init
(0012)   INT0_init();   /*外部中断初始化*/
    009D DFDC      RCALL	_INT0_init
    009E C001      RJMP	0x00A0
(0013)   
(0014)   while(1)
(0015)   {
(0016)    display();
FILE: <library>
    009F DFC6      RCALL	_display
    00A0 CFFE      RJMP	0x009F
    00A1 9508      RET
push_gset5:
    00A2 92FA      ST	R15,-Y
    00A3 92EA      ST	R14,-Y
push_gset4:
    00A4 92DA      ST	R13,-Y
    00A5 92CA      ST	R12,-Y
push_gset3:
    00A6 92BA      ST	R11,-Y
    00A7 92AA      ST	R10,-Y
push_gset2:
    00A8 937A      ST	R23,-Y
    00A9 936A      ST	R22,-Y
push_gset1:
    00AA 935A      ST	R21,-Y
    00AB 934A      ST	R20,-Y
    00AC 9508      RET
pop_gset1:
    00AD E0E1      LDI	R30,1
pop:
    00AE 9149      LD	R20,Y+
    00AF 9159      LD	R21,Y+
    00B0 FDE0      SBRC	R30,0
    00B1 9508      RET
    00B2 9169      LD	R22,Y+
    00B3 9179      LD	R23,Y+
    00B4 FDE1      SBRC	R30,1
    00B5 9508      RET
    00B6 90A9      LD	R10,Y+
    00B7 90B9      LD	R11,Y+
    00B8 FDE2      SBRC	R30,2
    00B9 9508      RET
    00BA 90C9      LD	R12,Y+
    00BB 90D9      LD	R13,Y+
    00BC FDE3      SBRC	R30,3
    00BD 9508      RET
    00BE 90E9      LD	R14,Y+
    00BF 90F9      LD	R15,Y+
    00C0 9508      RET
push_lset:
    00C1 93FA      ST	R31,-Y
    00C2 93EA      ST	R30,-Y
    00C3 93BA      ST	R27,-Y
    00C4 93AA      ST	R26,-Y
    00C5 939A      ST	R25,-Y
    00C6 938A      ST	R24,-Y
    00C7 933A      ST	R19,-Y
    00C8 932A      ST	R18,-Y
    00C9 931A      ST	R17,-Y
    00CA 930A      ST	R16,-Y
    00CB 929A      ST	R9,-Y
    00CC 928A      ST	R8,-Y
    00CD 927A      ST	R7,-Y
    00CE 926A      ST	R6,-Y
    00CF 925A      ST	R5,-Y
    00D0 924A      ST	R4,-Y
    00D1 923A      ST	R3,-Y
    00D2 922A      ST	R2,-Y
    00D3 921A      ST	R1,-Y
    00D4 920A      ST	R0,-Y
    00D5 B60F      IN	R0,0x3F
    00D6 920A      ST	R0,-Y
    00D7 9508      RET
pop_lset:
    00D8 9009      LD	R0,Y+
    00D9 BE0F      OUT	0x3F,R0
    00DA 9009      LD	R0,Y+
    00DB 9019      LD	R1,Y+
    00DC 9029      LD	R2,Y+
    00DD 9039      LD	R3,Y+
    00DE 9049      LD	R4,Y+
    00DF 9059      LD	R5,Y+
    00E0 9069      LD	R6,Y+
    00E1 9079      LD	R7,Y+
    00E2 9089      LD	R8,Y+
    00E3 9099      LD	R9,Y+
    00E4 9109      LD	R16,Y+
    00E5 9119      LD	R17,Y+
    00E6 9129      LD	R18,Y+
    00E7 9139      LD	R19,Y+
    00E8 9189      LD	R24,Y+
    00E9 9199      LD	R25,Y+
    00EA 91A9      LD	R26,Y+
    00EB 91B9      LD	R27,Y+
    00EC 91E9      LD	R30,Y+
    00ED 91F9      LD	R31,Y+
    00EE 9508      RET
lsl8:
    00EF 2311      TST	R17
    00F0 F019      BEQ	0x00F4
    00F1 0F00      LSL	R16
    00F2 951A      DEC	R17
    00F3 CFFB      RJMP	lsl8
    00F4 9508      RET

⌨️ 快捷键说明

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