📄 int0test.lst
字号:
__start:
__text_start:
001A E5CF LDI R28,0x5F
001B E0D2 LDI R29,2
001C BFCD OUT 0x3D,R28
001D BFDE OUT 0x3E,R29
001E 51C0 SUBI R28,0x10
001F 40D0 SBCI R29,0
0020 EA0A LDI R16,0xAA
0021 8308 STD Y+0,R16
0022 2400 CLR R0
0023 E7E2 LDI R30,0x72
0024 E0F0 LDI R31,0
0025 E010 LDI R17,0
0026 37E2 CPI R30,0x72
0027 07F1 CPC R31,R17
0028 F011 BEQ 0x002B
0029 9201 ST R0,Z+
002A CFFB RJMP 0x0026
002B 8300 STD Z+0,R16
002C E2E2 LDI R30,0x22
002D E0F0 LDI R31,0
002E E6A0 LDI R26,0x60
002F E0B0 LDI R27,0
0030 E010 LDI R17,0
0031 33E4 CPI R30,0x34
0032 07F1 CPC R31,R17
0033 F021 BEQ 0x0038
0034 95C8 LPM
0035 9631 ADIW R30,1
0036 920D ST R0,X+
0037 CFF9 RJMP 0x0031
0038 D030 RCALL _main
_exit:
0039 CFFF RJMP _exit
_DelayMs:
j --> R20
i --> R16
003A D04C RCALL push_gset1
FILE: J:\AVRpractice\BOOK\INT0test\INT0test.c
(0001) #include<io8535v.h>
(0002) #define uchar unsigned char
(0003) #define uint unsigned int
(0004)
(0005)
(0006) uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
(0007) uchar Data[4]={0,7,2,8};
(0008) uchar Data1[4]={1,1,1,1};
(0009) void DelayMs(uint i) //0.25ms
(0010) {uchar j;
(0011) for(;i!=0;i--)
003B C007 RJMP 0x0043
(0012) {for(j=250;j!=0;j--) {;}}
003C EF4A LDI R20,0xFA
003D C001 RJMP 0x003F
003E 954A DEC R20
003F 2344 TST R20
0040 F7E9 BNE 0x003E
0041 5001 SUBI R16,1
0042 4010 SBCI R17,0
0043 3000 CPI R16,0
0044 0701 CPC R16,R17
0045 F7B1 BNE 0x003C
(0013) }
0046 D043 RCALL pop_gset1
0047 9508 RET
_Display:
sel --> R20
i --> R22
p --> R10
0048 D058 RCALL push_gset3
0049 2EA0 MOV R10,R16
004A 2EB1 MOV R11,R17
(0014)
(0015) void Display(uchar *p) //间隔5ms显示
(0016) {uchar i,sel=0x01;
004B E041 LDI R20,1
(0017) for(i=0;i<4;i++)
004C 2766 CLR R22
004D C017 RJMP 0x0065
(0018) {PORTA=sel;
004E BB4B OUT 0x1B,R20
(0019) PORTC=0xff-Table[p[i]];
004F 2FE6 MOV R30,R22
0050 27FF CLR R31
0051 0DEA ADD R30,R10
0052 1DFB ADC R31,R11
0053 81E0 LDD R30,Z+0
0054 27FF CLR R31
0055 E680 LDI R24,0x60
0056 E090 LDI R25,0
0057 0FE8 ADD R30,R24
0058 1FF9 ADC R31,R25
0059 8020 LDD R2,Z+0
005A 2433 CLR R3
005B EF8F LDI R24,0xFF
005C E090 LDI R25,0
005D 1982 SUB R24,R2
005E 0993 SBC R25,R3
005F BB85 OUT 0x15,R24
(0020) DelayMs(20);
0060 E104 LDI R16,0x14
0061 E010 LDI R17,0
0062 DFD7 RCALL _DelayMs
(0021) sel=sel<<1;
0063 0F44 LSL R20
0064 9563 INC R22
0065 3064 CPI R22,4
0066 F338 BCS 0x004E
(0022) }
(0023) }
0067 D01D RCALL pop_gset3
0068 9508 RET
(0024)
(0025) void main(void)
(0026) {uint i;
(0027) DDRA=0xff; //设置A口为不带上拉输入;
_main:
i --> Y+1
0069 EF8F LDI R24,0xFF
006A BB8A OUT 0x1A,R24
(0028) PORTA=0xff;
006B BB8B OUT 0x1B,R24
(0029) DDRC=0xff; //设置C口为推挽1输出;
006C BB84 OUT 0x14,R24
(0030) PORTC=0xff;
006D BB85 OUT 0x15,R24
(0031) DDRD=0xff; //设置D口为上拉输入
006E BB81 OUT 0x11,R24
(0032) PORTD=0xff;
006F BB82 OUT 0x12,R24
(0033) PORTA=0xff;
0070 BB8B OUT 0x1B,R24
(0034) PORTC=0x00;
0071 2422 CLR R2
0072 BA25 OUT 0x15,R2
(0035) //DelayMs(10000);
(0036) MCUCR=0x00;//下降沿
0073 BE25 OUT 0x35,R2
(0037) GIMSK=0x40;//int0
0074 E480 LDI R24,0x40
0075 BF8B OUT 0x3B,R24
(0038) GIFR=0xff;
0076 EF8F LDI R24,0xFF
0077 BF8A OUT 0x3A,R24
(0039) SREG=SREG|0x80;
0078 9478 BSET 7
0079 C003 RJMP 0x007D
(0040) while(1){Display(Data1);}
007A E60E LDI R16,0x6E
007B E010 LDI R17,0
007C DFCB RCALL _Display
007D CFFC RJMP 0x007A
(0041) /*{if((GIFR&0x40)==0x40) {GIFR=0xff;Display(Data);}
(0042) else
(0043) }*/
(0044) }
007E 9508 RET
_int0:
007F D024 RCALL push_lset
(0045) #pragma interrupt_handler int0:2
(0046) void int0(void)
(0047) {Display(Data);}
FILE: <library>
0080 E60A LDI R16,0x6A
0081 E010 LDI R17,0
0082 DFC5 RCALL _Display
0083 D037 RCALL pop_lset
0084 9518 RETI
pop_gset3:
0085 E0E4 LDI R30,4
0086 C004 RJMP pop
push_gset1:
0087 935A ST R21,-Y
0088 934A ST R20,-Y
0089 9508 RET
pop_gset1:
008A E0E1 LDI R30,1
pop:
008B 9149 LD R20,Y+
008C 9159 LD R21,Y+
008D FDE0 SBRC R30,0
008E 9508 RET
008F 9169 LD R22,Y+
0090 9179 LD R23,Y+
0091 FDE1 SBRC R30,1
0092 9508 RET
0093 90A9 LD R10,Y+
0094 90B9 LD R11,Y+
0095 FDE2 SBRC R30,2
0096 9508 RET
0097 90C9 LD R12,Y+
0098 90D9 LD R13,Y+
0099 FDE3 SBRC R30,3
009A 9508 RET
009B 90E9 LD R14,Y+
009C 90F9 LD R15,Y+
009D 9508 RET
push_gset2:
009E 937A ST R23,-Y
009F 936A ST R22,-Y
00A0 CFE6 RJMP push_gset1
push_gset3:
00A1 92BA ST R11,-Y
00A2 92AA ST R10,-Y
00A3 CFFA RJMP push_gset2
push_lset:
00A4 93FA ST R31,-Y
00A5 93EA ST R30,-Y
00A6 93BA ST R27,-Y
00A7 93AA ST R26,-Y
00A8 939A ST R25,-Y
00A9 938A ST R24,-Y
00AA 933A ST R19,-Y
00AB 932A ST R18,-Y
00AC 931A ST R17,-Y
00AD 930A ST R16,-Y
00AE 929A ST R9,-Y
00AF 928A ST R8,-Y
00B0 927A ST R7,-Y
00B1 926A ST R6,-Y
00B2 925A ST R5,-Y
00B3 924A ST R4,-Y
00B4 923A ST R3,-Y
00B5 922A ST R2,-Y
00B6 921A ST R1,-Y
00B7 920A ST R0,-Y
00B8 B60F IN R0,0x3F
00B9 920A ST R0,-Y
00BA 9508 RET
pop_lset:
00BB 9009 LD R0,Y+
00BC BE0F OUT 0x3F,R0
00BD 9009 LD R0,Y+
00BE 9019 LD R1,Y+
00BF 9029 LD R2,Y+
00C0 9039 LD R3,Y+
00C1 9049 LD R4,Y+
00C2 9059 LD R5,Y+
00C3 9069 LD R6,Y+
00C4 9079 LD R7,Y+
00C5 9089 LD R8,Y+
00C6 9099 LD R9,Y+
00C7 9109 LD R16,Y+
00C8 9119 LD R17,Y+
00C9 9129 LD R18,Y+
00CA 9139 LD R19,Y+
00CB 9189 LD R24,Y+
00CC 9199 LD R25,Y+
00CD 91A9 LD R26,Y+
00CE 91B9 LD R27,Y+
00CF 91E9 LD R30,Y+
00D0 91F9 LD R31,Y+
00D1 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -