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

📄 atmega16_8led.lis

📁 AVR单片机来驱动8位数码管
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module ATMEGA16_8LED.C
                        .area text(rom, con, rel)
 0000                   .dbfile E:\AVR单片机程序调试\ATMEGA16_8LED/delay.h
 0000                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 6
 0000           ; //ICC-AVR application builder : 2009-3-3 14:58:49
 0000           ; // Target : M16
 0000           ; // Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000                   .dbline 7
 0000           ; #include "delay.h"
 0000 0000              nop
 0002                   .dbline -2
 0002           L1:
 0002                   .dbline 0 ; func end
 0002 0895              ret
 0004                   .dbend
 0004                   .dbfunc e delay_nus _delay_nus fV
 0004           ;              i -> R20,R21
 0004           ;              n -> R22,R23
                        .even
 0004           _delay_nus::
 0004 0E940000          xcall push_gset2
 0008 B801              movw R22,R16
 000A                   .dbline -1
 000A                   .dbline 11
 000A           ; #define uchar unsigned char
 000A           ; #define uint  unsigned int
 000A           ; #define ulong  unsigned long
 000A           ; 
 000A                   .dbline 12
 000A           ; #define CLK_1  PORTA|=(1<<0)
 000A 4427              clr R20
 000C 5527              clr R21
 000E                   .dbline 13
 000E           ; #define CLK_0  PORTA&=~(1<<0)
 000E 03C0              xjmp L6
 0010           L3:
 0010                   .dbline 14
 0010 F7DF              xcall _delay_1us
 0012           L4:
 0012                   .dbline 13
 0012 4F5F              subi R20,255  ; offset = 1
 0014 5F4F              sbci R21,255
 0016           L6:
 0016                   .dbline 13
 0016 4617              cp R20,R22
 0018 5707              cpc R21,R23
 001A D0F3              brlo L3
 001C                   .dbline -2
 001C           L2:
 001C 0E940000          xcall pop_gset2
 0020                   .dbline 0 ; func end
 0020 0895              ret
 0022                   .dbsym r i 20 i
 0022                   .dbsym r n 22 i
 0022                   .dbend
 0022                   .dbfunc e delay_1ms _delay_1ms fV
 0022           ;              i -> R16,R17
                        .even
 0022           _delay_1ms::
 0022                   .dbline -1
 0022                   .dbline 18
 0022           ; #define RCLK_1  PORTA|=(1<<1) 
 0022           ; #define RCLK_0  PORTA&=~(1<<1)
 0022           ; #define DAT_1  PORTA|=(1<<2) 
 0022           ; #define DAT_0  PORTA&=~(1<<2) 
 0022           ; 
 0022                   .dbline 20
 0022 0027              clr R16
 0024 1127              clr R17
 0026 02C0              xjmp L11
 0028           L8:
 0028                   .dbline 20
 0028           L9:
 0028                   .dbline 20
 0028 0F5F              subi R16,255  ; offset = 1
 002A 1F4F              sbci R17,255
 002C           L11:
 002C                   .dbline 20
 002C           ; const char tab[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0};//0-9,
 002C           ; const char seg[9]={0x08,0x04,0x02,0x01,0x10,0x20,0x40,0x80,0x00};
 002C 0437              cpi R16,116
 002E E4E0              ldi R30,4
 0030 1E07              cpc R17,R30
 0032 D0F3              brlo L8
 0034                   .dbline -2
 0034           L7:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r i 16 i
 0036                   .dbend
 0036                   .dbfunc e delay_nms _delay_nms fV
 0036           ;              i -> R20,R21
 0036           ;              n -> R22,R23
                        .even
 0036           _delay_nms::
 0036 0E940000          xcall push_gset2
 003A B801              movw R22,R16
 003C                   .dbline -1
 003C                   .dbline 24
 003C           ; const char off[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
 003C           ; const char on[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
 003C           ; uchar display_buff[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
 003C           ; uint i,number;
 003C                   .dbline 25
 003C           ; 
 003C 4427              clr R20
 003E 5527              clr R21
 0040                   .dbline 26
 0040           ; 
 0040 03C0              xjmp L16
 0042           L13:
 0042                   .dbline 27
 0042 EFDF              xcall _delay_1ms
 0044           L14:
 0044                   .dbline 26
 0044 4F5F              subi R20,255  ; offset = 1
 0046 5F4F              sbci R21,255
 0048           L16:
 0048                   .dbline 26
 0048 4617              cp R20,R22
 004A 5707              cpc R21,R23
 004C D0F3              brlo L13
 004E                   .dbline -2
 004E           L12:
 004E 0E940000          xcall pop_gset2
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbsym r i 20 i
 0054                   .dbsym r n 22 i
 0054                   .dbend
                        .area lit(rom, con, rel)
 0000           _tab::
 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
 000A 777C              .byte 'w,124
 000C 395E              .byte 57,94
 000E 7971              .byte 'y,'q
 0010 00                .byte 0
 0011                   .dbfile E:\AVR单片机程序调试\ATMEGA16_8LED\ATMEGA16_8LED.C
 0011                   .dbsym e tab _tab A[17:17]kc
 0011           _seg::
 0011 0804              .byte 8,4
 0013 0201              .byte 2,1
 0015 1020              .byte 16,32
 0017 4080              .byte 64,128
 0019 00                .byte 0
 001A                   .dbsym e seg _seg A[9:9]kc
 001A           _off::
 001A 0000              .byte 0,0
 001C 0000              .byte 0,0
 001E 0000              .byte 0,0
 0020 0000              .byte 0,0
 0022                   .dbsym e off _off A[8:8]kc
 0022           _on::
 0022 FFFF              .byte 255,255
 0024 FFFF              .byte 255,255
 0026 FFFF              .byte 255,255
 0028 FFFF              .byte 255,255
 002A                   .dbsym e on _on A[8:8]kc
                        .area data(ram, con, rel)
 0000                   .dbfile E:\AVR单片机程序调试\ATMEGA16_8LED\ATMEGA16_8LED.C
 0000           _display_buff::
 0000                   .blkb 2
                        .area idata
 0000 0000              .byte 0,0
                        .area data(ram, con, rel)
 0002                   .dbfile E:\AVR单片机程序调试\ATMEGA16_8LED\ATMEGA16_8LED.C
 0002                   .blkb 2
                        .area idata
 0002 0000              .byte 0,0
                        .area data(ram, con, rel)
 0004                   .dbfile E:\AVR单片机程序调试\ATMEGA16_8LED\ATMEGA16_8LED.C
 0004                   .blkb 2
                        .area idata
 0004 0000              .byte 0,0
                        .area data(ram, con, rel)
 0006                   .dbfile E:\AVR单片机程序调试\ATMEGA16_8LED\ATMEGA16_8LED.C
 0006                   .blkb 2
                        .area idata
 0006 0000              .byte 0,0
                        .area data(ram, con, rel)
 0008                   .dbfile E:\AVR单片机程序调试\ATMEGA16_8LED\ATMEGA16_8LED.C
 0008                   .dbsym e display_buff _display_buff A[8:8]c
                        .area text(rom, con, rel)
 0054                   .dbfile E:\AVR单片机程序调试\ATMEGA16_8LED\ATMEGA16_8LED.C
 0054                   .dbfunc e port_init _port_init fV
                        .even
 0054           _port_init::
 0054                   .dbline -1
 0054                   .dbline 28
 0054           ; void port_init(void)
 0054           ; {
 0054                   .dbline 29
 0054           ;  PORTA = 0x00;
 0054 2224              clr R2
 0056 2BBA              out 0x1b,R2
 0058                   .dbline 30
 0058           ;  DDRA  = 0x07;
 0058 87E0              ldi R24,7
 005A 8ABB              out 0x1a,R24
 005C                   .dbline -2
 005C           L17:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbend
 005E                   .dbfunc e init_devices _init_devices fV
                        .even
 005E           _init_devices::
 005E                   .dbline -1
 005E                   .dbline 34
 005E           ; }
 005E           ; //call this routine to initialize all peripherals
 005E           ; void init_devices(void)
 005E           ; {
 005E                   .dbline 36
 005E           ;  //stop errant interrupts until set up
 005E           ;  CLI(); //disable all interrupts
 005E F894              cli
 0060                   .dbline 37
 0060           ;  port_init();
 0060 F9DF              xcall _port_init
 0062                   .dbline 39
 0062           ; 
 0062           ;  MCUCR = 0x00;
 0062 2224              clr R2
 0064 25BE              out 0x35,R2
 0066                   .dbline 40
 0066           ;  GICR  = 0x00;
 0066 2BBE              out 0x3b,R2
 0068                   .dbline 41
 0068           ;  TIMSK = 0x00; //timer interrupt sources
 0068 29BE              out 0x39,R2
 006A                   .dbline 42
 006A           ;  SEI(); //re-enable interrupts
 006A 7894              sei
 006C                   .dbline -2
 006C           L18:
 006C                   .dbline 0 ; func end
 006C 0895              ret
 006E                   .dbend
 006E                   .dbfunc e BINtoBCD _BINtoBCD fV
 006E           ;           temp -> R10,R11
 006E           ;              i -> R12,R13
 006E           ;          count -> y+8
                        .even
 006E           _BINtoBCD::
 006E 0E940000          xcall push_arg4
 0072 0E940000          xcall push_gset4
 0076                   .dbline -1
 0076                   .dbline 47
 0076           ;  //all peripherals are now initialized
 0076           ; }
 0076           ; 
 0076           ; void BINtoBCD(ulong count)
 0076           ; { 
 0076                   .dbline 49
 0076           ;   uint temp,i;
 0076           ;   temp=count;
 0076 FE01              movw R30,R28
 0078 A084              ldd R10,z+8
 007A B184              ldd R11,z+9
 007C                   .dbline 50
 007C           ;   for (i=0;i<8;i++)
 007C CC24              clr R12
 007E DD24              clr R13
 0080 37C0              xjmp L23
 0082           L20:
 0082                   .dbline 51
 0082                   .dbline 52
 0082 4AE0              ldi R20,10
 0084 50E0              ldi R21,0
 0086 60E0              ldi R22,0
 0088 70E0              ldi R23,0
 008A FE01              movw R30,R28
 008C 2084              ldd R2,z+8
 008E 3184              ldd R3,z+9
 0090 4284              ldd R4,z+10
 0092 5384              ldd R5,z+11
 0094 7A93              st -y,R23
 0096 6A93              st -y,R22
 0098 5A93              st -y,R21
 009A 4A93              st -y,R20
 009C 8101              movw R16,R2
 009E 9201              movw R18,R4
 00A0 0E940000          xcall mod32u
 00A4 5801              movw R10,R16
 00A6                   .dbline 53
 00A6 80E0              ldi R24,<_tab
 00A8 90E0              ldi R25,>_tab
 00AA F501              movw R30,R10
 00AC E80F              add R30,R24
 00AE F91F              adc R31,R25
 00B0 E491              lpm R30,Z
 00B2 80E0              ldi R24,<_display_buff
 00B4 90E0              ldi R25,>_display_buff
 00B6 D601              movw R26,R12
 00B8 A80F              add R26,R24
 00BA B91F              adc R27,R25
 00BC EC93              st x,R30
 00BE                   .dbline 54
 00BE 4AE0              ldi R20,10
 00C0 50E0              ldi R21,0
 00C2 60E0              ldi R22,0
 00C4 70E0              ldi R23,0
 00C6 FE01              movw R30,R28
 00C8 2084              ldd R2,z+8
 00CA 3184              ldd R3,z+9
 00CC 4284              ldd R4,z+10
 00CE 5384              ldd R5,z+11
 00D0 7A93              st -y,R23
 00D2 6A93              st -y,R22
 00D4 5A93              st -y,R21
 00D6 4A93              st -y,R20
 00D8 8101              movw R16,R2
 00DA 9201              movw R18,R4
 00DC 0E940000          xcall div32u
 00E0 FE01              movw R30,R28
 00E2 0087              std z+8,R16
 00E4 1187              std z+9,R17
 00E6 2287              std z+10,R18
 00E8 3387              std z+11,R19
 00EA                   .dbline 55
 00EA           L21:
 00EA                   .dbline 50
 00EA C601              movw R24,R12
 00EC 0196              adiw R24,1
 00EE 6C01              movw R12,R24
 00F0           L23:
 00F0                   .dbline 50
 00F0 C601              movw R24,R12
 00F2 8830              cpi R24,8
 00F4 E0E0              ldi R30,0
 00F6 9E07              cpc R25,R30
 00F8 08F4              brsh X0
 00FA C3CF              xjmp L20
 00FC           X0:
 00FC                   .dbline -2
 00FC           L19:
 00FC 0E940000          xcall pop_gset4
 0100 2496              adiw R28,4
 0102                   .dbline 0 ; func end
 0102 0895              ret
 0104                   .dbsym r temp 10 i
 0104                   .dbsym r i 12 i
 0104                   .dbsym l count 8 l
 0104                   .dbend
 0104                   .dbfunc e write_595 _write_595 fV
 0104           ;           temp -> R20
 0104           ;              i -> R22
 0104           ;           data -> R16
                        .even
 0104           _write_595::
 0104 0E940000          xcall push_gset2
 0108                   .dbline -1
 0108                   .dbline 59
 0108           ;   {

⌨️ 快捷键说明

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