📄 atmega16_8led.lis
字号:
.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 + -