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

📄 中断按键.lis

📁 AVR之ATMega16
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _中断按键.c
                        .area data(ram, con, rel)
 0000           _LED_data::
 0000                   .blkb 2
                        .area idata
 0000 C0F9              .byte 192,249
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 A4B0              .byte 164,176
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 9992              .byte 153,146
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 82F8              .byte 130,248
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 8090              .byte 128,144
                        .area data(ram, con, rel)
 000A                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键/数码管.h
 000A                   .dbsym e LED_data _LED_data A[10:10]c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键/数码管.h
 0000                   .dbfunc e LED_init _LED_init fV
                        .even
 0000           _LED_init::
 0000                   .dbline -1
 0000                   .dbline 18
 0000           ; //内部晶振 8M
 0000           ; //包含所需头文件
 0000           ; #include <ioM16v.h>
 0000           ; #include <macros.h>
 0000           ; #include"数码管.h"
 0000           ; #include"delay.h"
 0000           ; 
 0000           ; 
 0000           ; 
 0000           ; /*------宏定义------*/
 0000           ; #define uchar unsigned char
 0000           ; #define uint  unsigned int
 0000           ; 
 0000           ; /*********标志位************************************************/
 0000           ; #define start 0x0;
 0000           ; #define stop  0x1;
 0000           ; //----------函数申明-------------------------
 0000           ; /***************************************************************/
 0000                   .dbline 19
 0000           ; //void LED_init(void);                                                  //LED初始化
 0000 8FEF              ldi R24,255
 0002 8ABB              out 0x1a,R24
 0004                   .dbline 20
 0004           ; //void show_LED(uchar data1,uchar data2,uchar data3,uchar data4);   //LED显示
 0004 87B3              in R24,0x17
 0006 8F6F              ori R24,255
 0008 87BB              out 0x17,R24
 000A                   .dbline 21
 000A           ; //void LED_run(void)  ;                                                
 000A 2224              clr R2
 000C 2BBA              out 0x1b,R2
 000E                   .dbline 22
 000E           ; /****************************************************************/
 000E 28B2              in R2,0x18
 0010 28BA              out 0x18,R2
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbend
 0014                   .dbfunc e show_LED _show_LED fV
 0014           ;          data4 -> y+6
 0014           ;          data3 -> y+4
 0014           ;          data2 -> R20
 0014           ;          data1 -> R22
                        .even
 0014           _show_LED::
 0014 0E940000          xcall push_gset2
 0018 422F              mov R20,R18
 001A 602F              mov R22,R16
 001C                   .dbline -1
 001C                   .dbline 25
 001C           ; /*********标志位************************************************/
 001C           ; uchar LED_ret;
 001C           ; 
 001C                   .dbline 26
 001C           ; uchar a,b, c,d;//全局变量定义
 001C 80E0              ldi R24,<_LED_data
 001E 90E0              ldi R25,>_LED_data
 0020 E62F              mov R30,R22
 0022 FF27              clr R31
 0024 E80F              add R30,R24
 0026 F91F              adc R31,R25
 0028 2080              ldd R2,z+0
 002A 2BBA              out 0x1b,R2
 002C                   .dbline 27
 002C           ; 
 002C 87EF              ldi R24,247
 002E 88BB              out 0x18,R24
 0030                   .dbline 28
 0030           ; //端口初始化
 0030 01E0              ldi R16,1
 0032 10E0              ldi R17,0
 0034 33D0              xcall _DelayMS
 0036                   .dbline 30
 0036           ; void port_init(void)
 0036           ; {
 0036 80E0              ldi R24,<_LED_data
 0038 90E0              ldi R25,>_LED_data
 003A E42F              mov R30,R20
 003C FF27              clr R31
 003E E80F              add R30,R24
 0040 F91F              adc R31,R25
 0042 2080              ldd R2,z+0
 0044 2BBA              out 0x1b,R2
 0046                   .dbline 31
 0046           ;  PORTA = 0x00;//设置A口置1
 0046 8BEF              ldi R24,251
 0048 88BB              out 0x18,R24
 004A                   .dbline 32
 004A           ;  DDRA  = 0x00;//设置A口输入
 004A 01E0              ldi R16,1
 004C 10E0              ldi R17,0
 004E 26D0              xcall _DelayMS
 0050                   .dbline 34
 0050           ;  PORTB = 0x00;
 0050           ;  DDRB  = 0x00;
 0050 80E0              ldi R24,<_LED_data
 0052 90E0              ldi R25,>_LED_data
 0054 EC81              ldd R30,y+4
 0056 FF27              clr R31
 0058 E80F              add R30,R24
 005A F91F              adc R31,R25
 005C 2080              ldd R2,z+0
 005E 2BBA              out 0x1b,R2
 0060                   .dbline 35
 0060           ;  PORTC = 0x00;
 0060 8DEF              ldi R24,253
 0062 88BB              out 0x18,R24
 0064                   .dbline 36
 0064           ;  DDRC  = 0x00;
 0064 01E0              ldi R16,1
 0066 10E0              ldi R17,0
 0068 19D0              xcall _DelayMS
 006A                   .dbline 38
 006A           ;  PORTD = 0x0c;
 006A           ;  DDRD  = 0x00;
 006A 80E0              ldi R24,<_LED_data
 006C 90E0              ldi R25,>_LED_data
 006E EE81              ldd R30,y+6
 0070 FF27              clr R31
 0072 E80F              add R30,R24
 0074 F91F              adc R31,R25
 0076 2080              ldd R2,z+0
 0078 2BBA              out 0x1b,R2
 007A                   .dbline 39
 007A           ; }
 007A 8EEF              ldi R24,254
 007C 88BB              out 0x18,R24
 007E                   .dbline 40
 007E           ; 
 007E 01E0              ldi R16,1
 0080 10E0              ldi R17,0
 0082 0CD0              xcall _DelayMS
 0084                   .dbline -2
 0084           L2:
 0084 0E940000          xcall pop_gset2
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym l data4 6 c
 008A                   .dbsym l data3 4 c
 008A                   .dbsym r data2 20 c
 008A                   .dbsym r data1 22 c
 008A                   .dbend
 008A                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键/delay.h
 008A                   .dbfunc e DelayUS _DelayUS fV
 008A           ;           time -> R16,R17
                        .even
 008A           _DelayUS::
 008A                   .dbline -1
 008A                   .dbline 9
 008A 02C0              xjmp L5
 008C           L4:
 008C                   .dbline 11
 008C 0150              subi R16,1
 008E 1040              sbci R17,0
 0090           L5:
 0090                   .dbline 10
 0090 81E0              ldi R24,1
 0092 90E0              ldi R25,0
 0094 8017              cp R24,R16
 0096 9107              cpc R25,R17
 0098 C8F3              brlo L4
 009A                   .dbline -2
 009A           L3:
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym r time 16 i
 009C                   .dbend
 009C                   .dbfunc e DelayMS _DelayMS fV
 009C           ;              i -> R20,R21
 009C           ;           time -> R16,R17
                        .even
 009C           _DelayMS::
 009C 0E940000          xcall push_gset1
 00A0                   .dbline -1
 00A0                   .dbline 20
 00A0 09C0              xjmp L9
 00A2           L8:
 00A2                   .dbline 23
 00A2                   .dbline 24
 00A2 41E0              ldi R20,1
 00A4 50E0              ldi R21,0
 00A6 02C0              xjmp L14
 00A8           L11:
 00A8                   .dbline 25
 00A8           L12:
 00A8                   .dbline 24
 00A8 4F5F              subi R20,255  ; offset = 1
 00AA 5F4F              sbci R21,255
 00AC           L14:
 00AC                   .dbline 24
 00AC 4637              cpi R20,118
 00AE E4E0              ldi R30,4
 00B0 5E07              cpc R21,R30
 00B2 D0F3              brlo L11
 00B4                   .dbline 26
 00B4           L9:
 00B4                   .dbline 22
 00B4 1801              movw R2,R16
 00B6 0150              subi R16,1
 00B8 1040              sbci R17,0
 00BA 2220              tst R2
 00BC 91F7              brne L8
 00BE 3320              tst R3
 00C0 81F7              brne L8
 00C2           X0:
 00C2                   .dbline -2
 00C2           L7:
 00C2 0E940000          xcall pop_gset1
 00C6                   .dbline 0 ; func end
 00C6 0895              ret
 00C8                   .dbsym r i 20 i
 00C8                   .dbsym r time 16 i
 00C8                   .dbend
 00C8                   .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\中断按键\中断按键.c
 00C8                   .dbfunc e port_init _port_init fV
                        .even
 00C8           _port_init::
 00C8                   .dbline -1
 00C8                   .dbline 30
 00C8                   .dbline 31
 00C8 2224              clr R2
 00CA 2BBA              out 0x1b,R2
 00CC                   .dbline 32
 00CC 2ABA              out 0x1a,R2
 00CE                   .dbline 33
 00CE 28BA              out 0x18,R2
 00D0                   .dbline 34
 00D0 27BA              out 0x17,R2
 00D2                   .dbline 35
 00D2 25BA              out 0x15,R2
 00D4                   .dbline 36
 00D4 24BA              out 0x14,R2
 00D6                   .dbline 37
 00D6 8CE0              ldi R24,12
 00D8 82BB              out 0x12,R24
 00DA                   .dbline 38
 00DA 21BA              out 0x11,R2
 00DC                   .dbline -2
 00DC           L15:
 00DC                   .dbline 0 ; func end
 00DC 0895              ret
 00DE                   .dbend
 00DE                   .dbfunc e int_init _int_init fV
                        .even
 00DE           _int_init::
 00DE                   .dbline -1
 00DE                   .dbline 44
 00DE           ; 
 00DE           ; //外中断初始化
 00DE           ; void int_init(void)
 00DE           ; {
 00DE                   .dbline 45
 00DE           ;  MCUCR |= 0x0a;//INT0、INT1下降沿触发中断
 00DE 85B7              in R24,0x35
 00E0 8A60              ori R24,10
 00E2 85BF              out 0x35,R24
 00E4                   .dbline 46
 00E4           ;  MCUCSR|= 0x00;//关闭INT2
 00E4 24B6              in R2,0x34

⌨️ 快捷键说明

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