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

📄 中断按键.lis

📁 AVR之ATMega16
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00E6 24BE              out 0x34,R2
 00E8                   .dbline 47
 00E8           ;  GICR  |= 0xC0;//INT0、INT1中断使能
 00E8 8BB7              in R24,0x3b
 00EA 806C              ori R24,192
 00EC 8BBF              out 0x3b,R24
 00EE                   .dbline -2
 00EE           L16:
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbend
                        .area vector(rom, abs)
                        .org 4
 0004 0C947800          jmp _int0_isr
                        .area text(rom, con, rel)
 00F0                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键\中断按键.c
 00F0                   .dbfunc e int0_isr _int0_isr fV
                        .even
 00F0           _int0_isr::
 00F0 8A93              st -y,R24
 00F2 8FB7              in R24,0x3f
 00F4 8A93              st -y,R24
 00F6                   .dbline -1
 00F6                   .dbline 56
 00F6           ; }
 00F6           ; 
 00F6           ; 
 00F6           ; 
 00F6           ; 
 00F6           ; //外中断0服务程序
 00F6           ; #pragma interrupt_handler int0_isr:2
 00F6           ; void int0_isr(void)
 00F6           ; {
 00F6                   .dbline 58
 00F6           ;  //外中断0
 00F6           ; LED_ret=stop;
 00F6 81E0              ldi R24,1
 00F8 80930400          sts _LED_ret,R24
 00FC                   .dbline 58
 00FC                   .dbline -2
 00FC           L17:
 00FC 8991              ld R24,y+
 00FE 8FBF              out 0x3f,R24
 0100 8991              ld R24,y+
 0102                   .dbline 0 ; func end
 0102 1895              reti
 0104                   .dbend
                        .area vector(rom, abs)
                        .org 8
 0008 0C948200          jmp _int1_isr
                        .area text(rom, con, rel)
 0104                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键\中断按键.c
 0104                   .dbfunc e int1_isr _int1_isr fV
                        .even
 0104           _int1_isr::
 0104 2A92              st -y,R2
 0106 2FB6              in R2,0x3f
 0108 2A92              st -y,R2
 010A                   .dbline -1
 010A                   .dbline 65
 010A           ; }
 010A           ; 
 010A           ; 
 010A           ; //外中断1服务程序
 010A           ; #pragma interrupt_handler int1_isr:3
 010A           ; void int1_isr(void)
 010A           ; {
 010A                   .dbline 67
 010A           ;  //外中断1
 010A           ; LED_ret=start;
 010A 2224              clr R2
 010C 20920400          sts _LED_ret,R2
 0110                   .dbline 67
 0110                   .dbline -2
 0110           L18:
 0110 2990              ld R2,y+
 0112 2FBE              out 0x3f,R2
 0114 2990              ld R2,y+
 0116                   .dbline 0 ; func end
 0116 1895              reti
 0118                   .dbend
 0118                   .dbfunc e LED_run _LED_run fV
                        .even
 0118           _LED_run::
 0118                   .dbline -1
 0118                   .dbline 70
 0118           ; }
 0118           ; void LED_run(void)
 0118           ; {
 0118                   .dbline 71
 0118           ;        d++;//个位相加
 0118 80910000          lds R24,_d
 011C 8F5F              subi R24,255    ; addi 1
 011E 80930000          sts _d,R24
 0122                   .dbline 72
 0122           ;        DelayMS(1);
 0122 01E0              ldi R16,1
 0124 10E0              ldi R17,0
 0126 BADF              xcall _DelayMS
 0128                   .dbline 73
 0128           ;        if(d==10)
 0128 80910000          lds R24,_d
 012C 8A30              cpi R24,10
 012E 81F5              brne L20
 0130                   .dbline 74
 0130           ;        {
 0130                   .dbline 75
 0130           ;         d=0;
 0130 2224              clr R2
 0132 20920000          sts _d,R2
 0136                   .dbline 76
 0136           ;         c++;//十位相加
 0136 80910100          lds R24,_c
 013A 8F5F              subi R24,255    ; addi 1
 013C 80930100          sts _c,R24
 0140                   .dbline 77
 0140           ;         DelayMS(1);
 0140 01E0              ldi R16,1
 0142 10E0              ldi R17,0
 0144 ABDF              xcall _DelayMS
 0146                   .dbline 78
 0146           ;         if(c==10)
 0146 80910100          lds R24,_c
 014A 8A30              cpi R24,10
 014C 09F5              brne L22
 014E                   .dbline 79
 014E           ;         {
 014E                   .dbline 80
 014E           ;          c=0;
 014E 2224              clr R2
 0150 20920100          sts _c,R2
 0154                   .dbline 81
 0154           ;          b++;//百位相加
 0154 80910200          lds R24,_b
 0158 8F5F              subi R24,255    ; addi 1
 015A 80930200          sts _b,R24
 015E                   .dbline 82
 015E           ;          DelayMS(1);
 015E 01E0              ldi R16,1
 0160 10E0              ldi R17,0
 0162 9CDF              xcall _DelayMS
 0164                   .dbline 83
 0164           ;          if(b==10)
 0164 80910200          lds R24,_b
 0168 8A30              cpi R24,10
 016A 91F4              brne L24
 016C                   .dbline 84
 016C           ;          {
 016C                   .dbline 85
 016C           ;          b=0;
 016C 2224              clr R2
 016E 20920200          sts _b,R2
 0172                   .dbline 86
 0172           ;          a++;//千位相加
 0172 80910300          lds R24,_a
 0176 8F5F              subi R24,255    ; addi 1
 0178 80930300          sts _a,R24
 017C                   .dbline 87
 017C           ;          DelayMS(1);
 017C 01E0              ldi R16,1
 017E 10E0              ldi R17,0
 0180 8DDF              xcall _DelayMS
 0182                   .dbline 88
 0182           ;          if(a==10)
 0182 80910300          lds R24,_a
 0186 8A30              cpi R24,10
 0188 19F4              brne L26
 018A                   .dbline 89
 018A           ;          a=0;
 018A 2224              clr R2
 018C 20920300          sts _a,R2
 0190           L26:
 0190                   .dbline 90
 0190           ;          }
 0190           L24:
 0190                   .dbline 91
 0190           ;         }
 0190           L22:
 0190                   .dbline 92
 0190           L20:
 0190                   .dbline -2
 0190           L19:
 0190                   .dbline 0 ; func end
 0190 0895              ret
 0192                   .dbend
 0192                   .dbfunc e init_devices _init_devices fV
                        .even
 0192           _init_devices::
 0192                   .dbline -1
 0192                   .dbline 96
 0192           ;        }
 0192           ; }
 0192           ; 
 0192           ; void init_devices(void)
 0192           ; {
 0192                   .dbline 97
 0192           ;  CLI(); //禁止所有中断
 0192 F894              cli
 0194                   .dbline 98
 0194           ;  MCUCR  = 0x00;///触发中断方式
 0194 2224              clr R2
 0196 25BE              out 0x35,R2
 0198                   .dbline 99
 0198           ;  MCUCSR = 0x80;//禁止JTAG
 0198 80E8              ldi R24,128
 019A 84BF              out 0x34,R24
 019C                   .dbline 100
 019C           ;  GICR   = 0x00;//中断使能
 019C 2BBE              out 0x3b,R2
 019E                   .dbline 101
 019E           ;  port_init();
 019E 94DF              xcall _port_init
 01A0                   .dbline 102
 01A0           ;  int_init();
 01A0 9EDF              xcall _int_init
 01A2                   .dbline 103
 01A2           ;  LED_init();
 01A2 2EDF              xcall _LED_init
 01A4                   .dbline 104
 01A4           ;  SEI();//开全局中断
 01A4 7894              sei
 01A6                   .dbline -2
 01A6           L28:
 01A6                   .dbline 0 ; func end
 01A6 0895              ret
 01A8                   .dbend
 01A8                   .dbfunc e main _main fV
                        .even
 01A8           _main::
 01A8 2397              sbiw R28,3
 01AA                   .dbline -1
 01AA                   .dbline 108
 01AA           ; }
 01AA           ; //主函数
 01AA           ; void main(void)
 01AA           ; {
 01AA                   .dbline 109
 01AA           ;  init_devices();//初始化端口、中断
 01AA F3DF              xcall _init_devices
 01AC 10C0              xjmp L31
 01AE           L30:
 01AE                   .dbline 112
 01AE           ;  //在这继续添加你的代码
 01AE           ;  while(1)
 01AE           ;  {
 01AE                   .dbline 113
 01AE           ; show_LED(d,c,b,a);//显示数字
 01AE 20900300          lds R2,_a
 01B2 2A82              std y+2,R2
 01B4 20900200          lds R2,_b
 01B8 2882              std y+0,R2
 01BA 20910100          lds R18,_c
 01BE 00910000          lds R16,_d
 01C2 28DF              xcall _show_LED
 01C4                   .dbline 114
 01C4           ; if(LED_ret==0)//判断中断按键
 01C4 20900400          lds R2,_LED_ret
 01C8 2220              tst R2
 01CA 09F4              brne L33
 01CC                   .dbline 115
 01CC           ; LED_run();//数字累加
 01CC A5DF              xcall _LED_run
 01CE           L33:
 01CE                   .dbline 116
 01CE           L31:
 01CE                   .dbline 111
 01CE EFCF              xjmp L30
 01D0           X1:
 01D0                   .dbline -2
 01D0           L29:
 01D0 2396              adiw R28,3
 01D2                   .dbline 0 ; func end
 01D2 0895              ret
 01D4                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键\中断按键.c
 0000           _d::
 0000                   .blkb 1
 0001                   .dbsym e d _d c
 0001           _c::
 0001                   .blkb 1
 0002                   .dbsym e c _c c
 0002           _b::
 0002                   .blkb 1
 0003                   .dbsym e b _b c
 0003           _a::
 0003                   .blkb 1
 0004                   .dbsym e a _a c
 0004           _LED_ret::
 0004                   .blkb 1
 0005                   .dbsym e LED_ret _LED_ret c

⌨️ 快捷键说明

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