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

📄 外部中断.lis

📁 ICC mega8例子
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0068                   .dbline 77
 0068           ;  PORTB=~num[(unsigned char )(digi%10)];//显示个位
 0068 2AE0              ldi R18,10
 006A 30E0              ldi R19,0
 006C 0A2D              mov R16,R10
 006E 1127              clr R17
 0070 00D0              rcall mod16s
 0072 E02F              mov R30,R16
 0074 FF27              clr R31
 0076 80E0              ldi R24,<_num
 0078 90E0              ldi R25,>_num
 007A E80F              add R30,R24
 007C F91F              adc R31,R25
 007E 2490              lpm R2,Z
 0080 2094              com R2
 0082 28BA              out 0x18,R2
 0084                   .dbline 78
 0084           ;  PORTC=(0x1<<0);//开个位的显示
 0084 81E0              ldi R24,1
 0086 85BB              out 0x15,R24
 0088                   .dbline 79
 0088           ;  delay_us(200);
 0088 08EC              ldi R16,200
 008A 10E0              ldi R17,0
 008C C9DF              rcall _delay_us
 008E                   .dbline 80
 008E           ;  PORTC=0x0;//关显示
 008E 2224              clr R2
 0090 25BA              out 0x15,R2
 0092                   .dbline -2
 0092           L7:
 0092                   .dbline 0 ; func end
 0092 A990              ld R10,y+
 0094 0895              ret
 0096                   .dbsym l i 1 c
 0096                   .dbsym r digi 10 c
 0096                   .dbend
 0096                   .dbfunc e int_init _int_init fV
                        .even
 0096           _int_init::
 0096                   .dbline -1
 0096                   .dbline 90
 0096           ; }
 0096           ; 
 0096           ; /************************************
 0096           ; 用    途:打开外部中断
 0096           ; 介    绍:
 0096           ; 入口参数:
 0096           ; 出口参数:
 0096           ; *************************************/
 0096           ; void int_init()
 0096           ; {
 0096                   .dbline 91
 0096           ;  CLI();
 0096 F894              cli
 0098                   .dbline 92
 0098           ;  PORTD|=(1<<PD2)|(1<<PD3);
 0098 82B3              in R24,0x12
 009A 8C60              ori R24,12
 009C 82BB              out 0x12,R24
 009E                   .dbline 93
 009E           ;  MCUCR|=(1<<ISC11)|(1<<ISC01);//3-0,外部中断定1,0的控制方式
 009E 85B7              in R24,0x35
 00A0 8A60              ori R24,10
 00A2 85BF              out 0x35,R24
 00A4                   .dbline 95
 00A4           ;  //MCUCR=3-2,0是低电平中断,1是下(降沿)和上(升沿)中断,2是下中断,3是上中断
 00A4           ;  GICR|=(1<<INT0)|(1<<INT1);//7,6外部中断1,0使能
 00A4 8BB7              in R24,0x3b
 00A6 806C              ori R24,192
 00A8 8BBF              out 0x3b,R24
 00AA                   .dbline 96
 00AA           ;  SEI();
 00AA 7894              sei
 00AC                   .dbline -2
 00AC           L8:
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbend
                        .area vector(rom, abs)
                        .org 2
 0002 57C0              rjmp _init_0
                        .area text(rom, con, rel)
 00AE                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\mega8_C语言常用程序\ICCAVR_mega8_外部中断\外部中断.c
 00AE                   .dbfunc e init_0 _init_0 fV
                        .even
 00AE           _init_0::
 00AE 8A93              st -y,R24
 00B0 8FB7              in R24,0x3f
 00B2 8A93              st -y,R24
 00B4                   .dbline -1
 00B4                   .dbline 107
 00B4           ; }
 00B4           ; 
 00B4           ; /************************************
 00B4           ; 用    途:中断0服务子程序
 00B4           ; 介    绍:
 00B4           ; 入口参数:
 00B4           ; 出口参数:
 00B4           ; *************************************/
 00B4           ; #pragma interrupt_handler init_0:2
 00B4           ; void init_0()
 00B4           ; {
 00B4                   .dbline 108
 00B4           ;  i--;
 00B4 80910000          lds R24,_i
 00B8 8150              subi R24,1
 00BA 80930000          sts _i,R24
 00BE                   .dbline 109
 00BE           ;  if (i==0)i=99;
 00BE 8823              tst R24
 00C0 19F4              brne L10
 00C2           X1:
 00C2                   .dbline 109
 00C2 83E6              ldi R24,99
 00C4 80930000          sts _i,R24
 00C8           L10:
 00C8                   .dbline -2
 00C8           L9:
 00C8                   .dbline 0 ; func end
 00C8 8991              ld R24,y+
 00CA 8FBF              out 0x3f,R24
 00CC 8991              ld R24,y+
 00CE 1895              reti
 00D0                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 68C0              rjmp _init_1
                        .area text(rom, con, rel)
 00D0                   .dbfile E:\xiaozhiyong2009\设计资料\项目设计\mega8_C语言常用程序\ICCAVR_mega8_外部中断\外部中断.c
 00D0                   .dbfunc e init_1 _init_1 fV
                        .even
 00D0           _init_1::
 00D0 2A92              st -y,R2
 00D2 8A93              st -y,R24
 00D4 9A93              st -y,R25
 00D6 2FB6              in R2,0x3f
 00D8 2A92              st -y,R2
 00DA                   .dbline -1
 00DA                   .dbline 120
 00DA           ; }
 00DA           ; 
 00DA           ; /************************************
 00DA           ; 用    途:中断1服务子程序
 00DA           ; 介    绍:
 00DA           ; 入口参数:
 00DA           ; 出口参数:
 00DA           ; *************************************/
 00DA           ; #pragma interrupt_handler init_1:3
 00DA           ; void init_1()
 00DA           ; {
 00DA                   .dbline 121
 00DA           ;  i++;
 00DA 80910000          lds R24,_i
 00DE 8F5F              subi R24,255    ; addi 1
 00E0 80930000          sts _i,R24
 00E4                   .dbline 122
 00E4           ;  if (i==100)i=0;
 00E4 8436              cpi R24,100
 00E6 19F4              brne L13
 00E8           X2:
 00E8                   .dbline 122
 00E8 2224              clr R2
 00EA 20920000          sts _i,R2
 00EE           L13:
 00EE                   .dbline -2
 00EE           L12:
 00EE                   .dbline 0 ; func end
 00EE 2990              ld R2,y+
 00F0 2FBE              out 0x3f,R2
 00F2 9991              ld R25,y+
 00F4 8991              ld R24,y+
 00F6 2990              ld R2,y+
 00F8 1895              reti
 00FA                   .dbend
 00FA                   .dbfunc e main _main fV
                        .even
 00FA           _main::
 00FA                   .dbline -1
 00FA                   .dbline 126
 00FA           ; }
 00FA           ; 
 00FA           ; void main()
 00FA           ; {
 00FA                   .dbline 127
 00FA           ;  port_init();
 00FA 82DF              rcall _port_init
 00FC                   .dbline 128
 00FC           ;  init_devices();
 00FC 89DF              rcall _init_devices
 00FE                   .dbline 130
 00FE           ;  
 00FE           ;  int_init();//中断初始化
 00FE CBDF              rcall _int_init
 0100 03C0              rjmp L17
 0102           L16:
 0102                   .dbline 132
 0102           ;  while(1)
 0102           ;  {
 0102                   .dbline 133
 0102           ;   show_2_digit(i);
 0102 00910000          lds R16,_i
 0106 94DF              rcall _show_2_digit
 0108                   .dbline 134
 0108           ;  }
 0108           L17:
 0108                   .dbline 131
 0108 FCCF              rjmp L16
 010A           X3:
 010A                   .dbline -2
 010A           L15:
 010A                   .dbline 0 ; func end
 010A 0895              ret
 010C                   .dbend
 010C           ; }
 010C           ; 

⌨️ 快捷键说明

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