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

📄 int0.lis

📁 protues_atmeg8学习之:中断篇源代码
💻 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 + -