📄 int0test.lis
字号:
.module INT0test.c
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile J:\AVRpractice\BOOK\INT0test\INT0test.c
000A .dbsym e Table _Table A[10:10]c
000A _Data::
000A .blkb 2
.area idata
000A 0007 .byte 0,7
.area data(ram, con, rel)
000C .dbfile J:\AVRpractice\BOOK\INT0test\INT0test.c
000C .blkb 2
.area idata
000C 0208 .byte 2,8
.area data(ram, con, rel)
000E .dbfile J:\AVRpractice\BOOK\INT0test\INT0test.c
000E .dbsym e Data _Data A[4:4]c
000E _Data1::
000E .blkb 2
.area idata
000E 0101 .byte 1,1
.area data(ram, con, rel)
0010 .dbfile J:\AVRpractice\BOOK\INT0test\INT0test.c
0010 .blkb 2
.area idata
0010 0101 .byte 1,1
.area data(ram, con, rel)
0012 .dbfile J:\AVRpractice\BOOK\INT0test\INT0test.c
0012 .dbsym e Data1 _Data1 A[4:4]c
.area text(rom, con, rel)
0000 .dbfile J:\AVRpractice\BOOK\INT0test\INT0test.c
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20
0000 ; i -> R16,R17
.even
0000 _DelayMs::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 10
0002 ; #include<io8535v.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ;
0002 ;
0002 ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0002 ; uchar Data[4]={0,7,2,8};
0002 ; uchar Data1[4]={1,1,1,1};
0002 ; void DelayMs(uint i) //0.25ms
0002 ; {uchar j;
0002 .dbline 11
0002 ; for(;i!=0;i--)
0002 07C0 rjmp L5
0004 L2:
0004 .dbline 12
0004 .dbline 12
0004 4AEF ldi R20,250
0006 01C0 rjmp L9
0008 L6:
0008 .dbline 12
0008 .dbline 12
0008 .dbline 12
0008 L7:
0008 .dbline 12
0008 4A95 dec R20
000A L9:
000A .dbline 12
000A 4423 tst R20
000C E9F7 brne L6
000E .dbline 12
000E L3:
000E .dbline 11
000E 0150 subi R16,1
0010 1040 sbci R17,0
0012 L5:
0012 .dbline 11
0012 0030 cpi R16,0
0014 0107 cpc R16,R17
0016 B1F7 brne L2
0018 X0:
0018 .dbline -2
0018 .dbline 13
0018 ; {for(j=250;j!=0;j--) {;}}
0018 ; }
0018 L1:
0018 00D0 rcall pop_gset1
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym r j 20 c
001C .dbsym r i 16 i
001C .dbend
001C .dbfunc e Display _Display fV
001C ; sel -> R20
001C ; i -> R22
001C ; p -> R10,R11
.even
001C _Display::
001C 00D0 rcall push_gset3
001E A02E mov R10,R16
0020 B12E mov R11,R17
0022 .dbline -1
0022 .dbline 16
0022 ;
0022 ; void Display(uchar *p) //间隔5ms显示
0022 ; {uchar i,sel=0x01;
0022 .dbline 16
0022 41E0 ldi R20,1
0024 .dbline 17
0024 ; for(i=0;i<4;i++)
0024 6627 clr R22
0026 17C0 rjmp L14
0028 L11:
0028 .dbline 18
0028 .dbline 18
0028 4BBB out 0x1b,R20
002A .dbline 19
002A E62F mov R30,R22
002C FF27 clr R31
002E EA0D add R30,R10
0030 FB1D adc R31,R11
0032 E081 ldd R30,z+0
0034 FF27 clr R31
0036 80E0 ldi R24,<_Table
0038 90E0 ldi R25,>_Table
003A E80F add R30,R24
003C F91F adc R31,R25
003E 2080 ldd R2,z+0
0040 3324 clr R3
0042 8FEF ldi R24,255
0044 90E0 ldi R25,0
0046 8219 sub R24,R2
0048 9309 sbc R25,R3
004A 85BB out 0x15,R24
004C .dbline 20
004C 04E1 ldi R16,20
004E 10E0 ldi R17,0
0050 D7DF rcall _DelayMs
0052 .dbline 21
0052 440F lsl R20
0054 .dbline 22
0054 L12:
0054 .dbline 17
0054 6395 inc R22
0056 L14:
0056 .dbline 17
0056 6430 cpi R22,4
0058 38F3 brlo L11
005A .dbline -2
005A .dbline 23
005A ; {PORTA=sel;
005A ; PORTC=0xff-Table[p[i]];
005A ; DelayMs(20);
005A ; sel=sel<<1;
005A ; }
005A ; }
005A L10:
005A 00D0 rcall pop_gset3
005C .dbline 0 ; func end
005C 0895 ret
005E .dbsym r sel 20 c
005E .dbsym r i 22 c
005E .dbsym r p 10 pc
005E .dbend
005E .dbfunc e main _main fV
005E ; i -> <dead>
.even
005E _main::
005E .dbline -1
005E .dbline 26
005E ;
005E ; void main(void)
005E ; {uint i;
005E .dbline 27
005E ; DDRA=0xff; //设置A口为不带上拉输入;
005E 8FEF ldi R24,255
0060 8ABB out 0x1a,R24
0062 .dbline 28
0062 ; PORTA=0xff;
0062 8BBB out 0x1b,R24
0064 .dbline 29
0064 ; DDRC=0xff; //设置C口为推挽1输出;
0064 84BB out 0x14,R24
0066 .dbline 30
0066 ; PORTC=0xff;
0066 85BB out 0x15,R24
0068 .dbline 31
0068 ; DDRD=0xff; //设置D口为上拉输入
0068 81BB out 0x11,R24
006A .dbline 32
006A ; PORTD=0xff;
006A 82BB out 0x12,R24
006C .dbline 33
006C ; PORTA=0xff;
006C 8BBB out 0x1b,R24
006E .dbline 34
006E ; PORTC=0x00;
006E 2224 clr R2
0070 25BA out 0x15,R2
0072 .dbline 36
0072 ; //DelayMs(10000);
0072 ; MCUCR=0x00;//下降沿
0072 25BE out 0x35,R2
0074 .dbline 37
0074 ; GIMSK=0x40;//int0
0074 80E4 ldi R24,64
0076 8BBF out 0x3b,R24
0078 .dbline 38
0078 ; GIFR=0xff;
0078 8FEF ldi R24,255
007A 8ABF out 0x3a,R24
007C .dbline 39
007C ; SREG=SREG|0x80;
007C 7894 bset 7
007E 03C0 rjmp L17
0080 L16:
0080 .dbline 40
0080 .dbline 40
0080 00E0 ldi R16,<_Data1
0082 10E0 ldi R17,>_Data1
0084 CBDF rcall _Display
0086 .dbline 40
0086 L17:
0086 .dbline 40
0086 FCCF rjmp L16
0088 X1:
0088 .dbline -2
0088 .dbline 44
0088 ; while(1){Display(Data1);}
0088 ; /*{if((GIFR&0x40)==0x40) {GIFR=0xff;Display(Data);}
0088 ; else
0088 ; }*/
0088 ; }
0088 L15:
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym l i 1 i
008A .dbend
.area vector(rom, abs)
.org 2
0002 45C0 rjmp _int0
.area text(rom, con, rel)
008A .dbfile J:\AVRpractice\BOOK\INT0test\INT0test.c
008A .dbfunc e int0 _int0 fV
.even
008A _int0::
008A 00D0 rcall push_lset
008C .dbline -1
008C .dbline 47
008C ; #pragma interrupt_handler int0:2
008C ; void int0(void)
008C ; {Display(Data);}
008C .dbline 47
008C 00E0 ldi R16,<_Data
008E 10E0 ldi R17,>_Data
0090 C5DF rcall _Display
0092 .dbline -2
0092 .dbline 47
0092 L19:
0092 00D0 rcall pop_lset
0094 .dbline 0 ; func end
0094 1895 reti
0096 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -