📄 int0.lis
字号:
.module Int0.C
.area text(rom, con, rel)
0000 .dbfile F:\Learn\AVR\Pro_Mega8\中断\Int0/Delay.h
0000 .dbfunc e delay_1ms _delay_1ms fV
0000 ; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 3
0000 ; /******************************************/
0000 ; //文件名:Int0.c
0000 ; //功能: 外部中断的应用
0000 .dbline 5
0000 ; //作者: young
0000 ; //时间: 2006.10.1
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 02C0 rjmp L5
0006 L2:
0006 .dbline 6
0006 L3:
0006 .dbline 5
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 5
000A 0637 cpi R16,118
000C E4E0 ldi R30,4
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline -2
0012 .dbline 7
0012 ; //目标MCU:ATmega8
0012 ; //晶振: 8MHZ
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbend
0014 .dbfunc e delay_ms _delay_ms fV
0014 ; i -> R20,R21
0014 ; n -> R22,R23
.even
0014 _delay_ms::
0014 00D0 rcall push_gset2
0016 B801 movw R22,R16
0018 .dbline -1
0018 .dbline 11
0018 ; /******************************************/
0018 ; #include <iom8v.h>
0018 ; #include <macros.h>
0018 ; #include "Delay.h"
0018 .dbline 12
0018 ;
0018 4427 clr R20
001A 5527 clr R21
001C 03C0 rjmp L8
001E L7:
001E .dbline 14
001E .dbline 15
001E F0DF rcall _delay_1ms
0020 .dbline 16
0020 4F5F subi R20,255 ; offset = 1
0022 5F4F sbci R21,255
0024 .dbline 17
0024 L8:
0024 .dbline 13
0024 ; unsigned char CountNum; //全局变量,用来计数
0024 4617 cp R20,R22
0026 5707 cpc R21,R23
0028 D0F3 brlo L7
002A .dbline -2
002A .dbline 18
002A ;
002A ; #pragma interrupt_handler int_fun:2
002A ; #pragma interrupt_handler int_fun:3
002A ; void int_fun(void)
002A ; {
002A L6:
002A 00D0 rcall pop_gset2
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r i 20 i
002E .dbsym r n 22 i
002E .dbend
.area vector(rom, abs)
.org 2
0002 17C0 rjmp _int_fun
.area text(rom, con, rel)
002E .dbfile F:\Learn\AVR\Pro_Mega8\中断\Int0/Delay.h
.area vector(rom, abs)
.org 4
0004 17C0 rjmp _int_fun
.area text(rom, con, rel)
002E .dbfile F:\Learn\AVR\Pro_Mega8\中断\Int0/Delay.h
002E .dbfile F:\Learn\AVR\Pro_Mega8\中断\Int0\Int0.C
002E .dbfunc e int_fun _int_fun fV
.even
002E _int_fun::
002E 2A92 st -y,R2
0030 8A93 st -y,R24
0032 9A93 st -y,R25
0034 2FB6 in R2,0x3f
0036 2A92 st -y,R2
0038 .dbline -1
0038 .dbline 18
0038 .dbline 19
0038 80910000 lds R24,_CountNum
003C 8F5F subi R24,255 ; addi 1
003E 282E mov R2,R24
0040 20920000 sts _CountNum,R2
0044 8436 cpi R24,100
0046 18F0 brlo L11
0048 .dbline 20
0048 2224 clr R2
004A 20920000 sts _CountNum,R2
004E L11:
004E .dbline -2
004E .dbline 21
004E ; if(++CountNum>=100)
004E ; CountNum=0;
004E ; }
004E L10:
004E 2990 ld R2,y+
0050 2FBE out 0x3f,R2
0052 9991 ld R25,y+
0054 8991 ld R24,y+
0056 2990 ld R2,y+
0058 .dbline 0 ; func end
0058 1895 reti
005A .dbend
.area lit(rom, con, rel)
0000 L14:
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 666D .byte 'f,'m
0006 7D07 .byte 125,7
0008 7F6F .byte 127,'o
.area text(rom, con, rel)
005A .dbfile F:\Learn\AVR\Pro_Mega8\中断\Int0\Int0.C
005A .dbfunc e main _main fV
005A ; temp2 -> <dead>
005A ; num -> y+0
005A ; temp -> R20
.even
005A _main::
005A 2A97 sbiw R28,10
005C .dbline -1
005C .dbline 25
005C ;
005C ; //主函数,依次显示数字0~9
005C ; void main()
005C ; {
005C .dbline 27
005C ; unsigned char temp,temp2;
005C ; unsigned char num[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66,
005C 80E0 ldi R24,<L14
005E 90E0 ldi R25,>L14
0060 FE01 movw R30,R28
0062 0AE0 ldi R16,10
0064 10E0 ldi R17,0
0066 FA93 st -y,R31
0068 EA93 st -y,R30
006A 9A93 st -y,R25
006C 8A93 st -y,R24
006E 00D0 rcall asgncblk
0070 .dbline 30
0070 ; 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
0070 ; //初始化端口
0070 ; DDRB=0xFF; //设置B口为输出模式
0070 8FEF ldi R24,255
0072 87BB out 0x17,R24
0074 .dbline 31
0074 ; PORTB=0xFF; //置高电平
0074 88BB out 0x18,R24
0076 .dbline 32
0076 ; DDRC=0x03;
0076 83E0 ldi R24,3
0078 84BB out 0x14,R24
007A .dbline 33
007A ; PORTC=0xFF;
007A 8FEF ldi R24,255
007C 85BB out 0x15,R24
007E .dbline 34
007E ; DDRD=0xFF;
007E 81BB out 0x11,R24
0080 .dbline 35
0080 ; PORTD=0xFF;
0080 82BB out 0x12,R24
0082 .dbline 37
0082 ;
0082 ; MCUCR=0x02; //INT0下降沿触发,INT1低电平有效
0082 82E0 ldi R24,2
0084 85BF out 0x35,R24
0086 .dbline 38
0086 ; GICR|=0xC0; //打开INT0,INT1中断
0086 8BB7 in R24,0x3b
0088 806C ori R24,192
008A 8BBF out 0x3b,R24
008C .dbline 39
008C ; GIFR=0xC0; //清除INT0、INT1中断标志位
008C 80EC ldi R24,192
008E 8ABF out 0x3a,R24
0090 .dbline 41
0090 ;
0090 ; CountNum=0; //初始化全局变量
0090 2224 clr R2
0092 20920000 sts _CountNum,R2
0096 .dbline 42
0096 ; SEI(); //打开全局中断
0096 7894 sei
0098 2CC0 rjmp L16
009A L15:
009A .dbline 44
009A .dbline 45
009A F894 cli
009C .dbline 46
009C 1AE0 ldi R17,10
009E 00910000 lds R16,_CountNum
00A2 00D0 rcall div8u
00A4 402F mov R20,R16
00A6 .dbline 47
00A6 A898 cbi 0x15,0
00A8 .dbline 48
00A8 CE01 movw R24,R28
00AA E42F mov R30,R20
00AC FF27 clr R31
00AE E80F add R30,R24
00B0 F91F adc R31,R25
00B2 2080 ldd R2,z+0
00B4 28BA out 0x18,R2
00B6 .dbline 49
00B6 01E0 ldi R16,1
00B8 10E0 ldi R17,0
00BA ACDF rcall _delay_ms
00BC .dbline 50
00BC 85B3 in R24,0x15
00BE 8F6F ori R24,255
00C0 85BB out 0x15,R24
00C2 .dbline 51
00C2 1AE0 ldi R17,10
00C4 00910000 lds R16,_CountNum
00C8 00D0 rcall mod8u
00CA 402F mov R20,R16
00CC .dbline 52
00CC 7894 sei
00CE .dbline 53
00CE A998 cbi 0x15,1
00D0 .dbline 54
00D0 CE01 movw R24,R28
00D2 E42F mov R30,R20
00D4 FF27 clr R31
00D6 E80F add R30,R24
00D8 F91F adc R31,R25
00DA 2080 ldd R2,z+0
00DC 28BA out 0x18,R2
00DE .dbline 55
00DE 01E0 ldi R16,1
00E0 10E0 ldi R17,0
00E2 98DF rcall _delay_ms
00E4 .dbline 56
00E4 85B3 in R24,0x15
00E6 8F6F ori R24,255
00E8 85BB out 0x15,R24
00EA .dbline 57
00EA 7894 sei
00EC .dbline 58
00EC 01E0 ldi R16,1
00EE 10E0 ldi R17,0
00F0 91DF rcall _delay_ms
00F2 .dbline 59
00F2 L16:
00F2 .dbline 43
00F2 D3CF rjmp L15
00F4 X0:
00F4 .dbline -2
00F4 .dbline 60
00F4 ; while (1)
00F4 ; {
00F4 ; CLI();
00F4 ; temp=CountNum/10;
00F4 ; PORTC&=~(1);
00F4 ; PORTB=num[temp];
00F4 ; delay_ms(1);
00F4 ; PORTC|=0xFF;
00F4 ; temp=CountNum%10;
00F4 ; SEI();
00F4 ; PORTC&=~(2);
00F4 ; PORTB=num[temp];
00F4 ; delay_ms(1);
00F4 ; PORTC|=0xFF;
00F4 ; SEI();
00F4 ; delay_ms(1);
00F4 ; }
00F4 ; }
00F4 L13:
00F4 2A96 adiw R28,10
00F6 .dbline 0 ; func end
00F6 0895 ret
00F8 .dbsym l temp2 1 c
00F8 .dbsym l num 0 A[10:10]c
00F8 .dbsym r temp 20 c
00F8 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\Learn\AVR\Pro_Mega8\中断\Int0\Int0.C
0000 _CountNum::
0000 .blkb 1
0001 .dbsym e CountNum _CountNum c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -