📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\AVR\ISD1700_ISP\src\main.c
.area data(ram, con, rel)
0000 .dbfile E:\AVR\ISD1700_ISP\src\main.c
0000 _iProgRunCount::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile E:\AVR\ISD1700_ISP\src\main.c
0002 .dbsym e iProgRunCount _iProgRunCount i
0002 _soundTime::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile E:\AVR\ISD1700_ISP\src\main.c
0004 .dbsym e soundTime _soundTime i
.area text(rom, con, rel)
0000 .dbfile E:\AVR\ISD1700_ISP\src\main.c
0000 .dbfunc e Port_Init _Port_Init fV
.even
0000 _Port_Init::
0000 .dbline -1
0000 .dbline 13
0000 ; #include <iom64v.h>
0000 ; #include <macros.h>
0000 ; #include <string.h>
0000 ; #include "timer.h"
0000 ; #include "main.h"
0000 ;
0000 ; unsigned int iProgRunCount=0;
0000 ; unsigned int soundTime=0;
0000 ; unsigned char data1,data2,data3,data4;
0000 ;
0000 ; // 端口初始化函数
0000 ; void Port_Init(void)
0000 ; {
0000 .dbline 14
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 15
0004 ; DDRA = 0x00;
0004 2ABA out 0x1a,R2
0006 .dbline 16
0006 ; PORTB = 0x01;
0006 81E0 ldi R24,1
0008 88BB out 0x18,R24
000A .dbline 17
000A ; DDRB = 0xE7;
000A 87EE ldi R24,231
000C 87BB out 0x17,R24
000E .dbline 18
000E ; PORTC = 0x00;
000E 25BA out 0x15,R2
0010 .dbline 19
0010 ; DDRC = 0x00;
0010 24BA out 0x14,R2
0012 .dbline 20
0012 ; PORTD = 0x00;
0012 22BA out 0x12,R2
0014 .dbline 21
0014 ; DDRD = 0xC0;
0014 80EC ldi R24,192
0016 81BB out 0x11,R24
0018 .dbline 22
0018 ; PORTE = 0x00;
0018 23B8 out 0x3,R2
001A .dbline 23
001A ; DDRE = 0x00;
001A 22B8 out 0x2,R2
001C .dbline 24
001C ; PORTF = 0x00;
001C 20926200 sts 98,R2
0020 .dbline 25
0020 ; DDRF = 0x00;
0020 20926100 sts 97,R2
0024 .dbline 26
0024 ; PORTG = 0x00;
0024 20926500 sts 101,R2
0028 .dbline 27
0028 ; DDRG = 0x00;
0028 20926400 sts 100,R2
002C .dbline -2
002C L1:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
002E .dbfunc e spi_init _spi_init fV
.even
002E _spi_init::
002E .dbline -1
002E .dbline 33
002E ; }
002E ;
002E ; //SPI initialize
002E ; // clock rate: 1000000hz
002E ; void spi_init(void)
002E ; {
002E .dbline 35
002E ; //int i;
002E ; SPCR = 0x7e; //setup SPI
002E 8EE7 ldi R24,126
0030 8DB9 out 0xd,R24
0032 .dbline 36
0032 ; SPSR = 0x00; //setup SPI
0032 2224 clr R2
0034 2EB8 out 0xe,R2
0036 .dbline 37
0036 ; PORTB |= (1<<PB0); //SS=1
0036 C09A sbi 0x18,0
0038 .dbline -2
0038 L2:
0038 .dbline 0 ; func end
0038 0895 ret
003A .dbend
003A .dbfunc e init_devices _init_devices fV
.even
003A _init_devices::
003A .dbline -1
003A .dbline 42
003A ; }
003A ;
003A ; //call this routine to initialise all peripherals
003A ; void init_devices(void)
003A ; {
003A .dbline 45
003A ; //unsigned char temp=0;
003A ; //stop errant interrupts until set up
003A ; CLI(); //disable all interrupts
003A F894 cli
003C .dbline 46
003C ; XDIV = 0x00; //xtal divider
003C 2224 clr R2
003E 2CBE out 0x3c,R2
0040 .dbline 47
0040 ; XMCRA = 0x40; //external memory
0040 80E4 ldi R24,64
0042 80936D00 sts 109,R24
0046 .dbline 48
0046 ; Port_Init();
0046 DCDF xcall _Port_Init
0048 .dbline 49
0048 ; watchdog_init();
0048 0E940000 xcall _watchdog_init
004C .dbline 50
004C ; timer1_init();
004C 0E940000 xcall _timer1_init
0050 .dbline 51
0050 ; spi_init();
0050 EEDF xcall _spi_init
0052 .dbline 53
0052 ;
0052 ; MCUCR = (1 << SRE); //0x80,外部存储使能
0052 80E8 ldi R24,128
0054 85BF out 0x35,R24
0056 .dbline 56
0056 ; //EICRA:外部中断3-0敏感电平控制BIT7--0:ISC31|ISC30......ISC01|ISC00
0056 ; //ISCn1|ISCn0:00-低电平触发,01-保留,10-下降沿触发,11-上升沿触发
0056 ; EICRA = 0x02;
0056 82E0 ldi R24,2
0058 80936A00 sts 106,R24
005C .dbline 59
005C ; //EICRB:外部中断7-4敏感电平控制BIT7--0:ISC71|ISC70......ISC41|ISC40
005C ; //ISCn1|ISCn0:00-低电平触发,01-任意逻辑电平变化,10-两次采用发生下降沿就触发,11-两次采用发生上升沿就触发
005C ; EICRB = 0x00;
005C 2224 clr R2
005E 2ABE out 0x3a,R2
0060 .dbline 60
0060 ; EIMSK = 0x01; //外部中断屏蔽寄存器BIT7--0:INT7--INT0,1使能0关闭
0060 81E0 ldi R24,1
0062 89BF out 0x39,R24
0064 .dbline 62
0064 ; //TIMSK:定时器中断屏蔽寄存器BIT7--0:OCIE2|TOIE2|TICIE1|OCIE1A|OCIE1B|TOIE1|OCIE0|TOIE0
0064 ; TIMSK = (1 << TOIE1); //0x04
0064 84E0 ldi R24,4
0066 87BF out 0x37,R24
0068 .dbline 64
0068 ; //ETIMSK:扩展定时器中断屏蔽寄存器BIT7--0:--|--|TICIE3|OCIE3A|OCIE3B|TOIE3|OCIE3C|OCIE1C
0068 ; ETIMSK = 0x00; //(1<<TOIE3); //0x04
0068 20927D00 sts 125,R2
006C .dbline 65
006C ; SEI(); //re-enable interrupts
006C 7894 sei
006E .dbline -2
006E L3:
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbend
0070 .dbfunc e isd1700_init _isd1700_init fV
0070 ; i -> R16,R17
.even
0070 _isd1700_init::
0070 .dbline -1
0070 .dbline 70
0070 ; //all peripherals are now initialised
0070 ; }
0070 ;
0070 ; void isd1700_init(void)
0070 ; {
0070 .dbline 72
0070 ; int i;
0070 ; for(i=0;i<=100;i++);
0070 0027 clr R16
0072 1127 clr R17
0074 L5:
0074 .dbline 72
0074 L6:
0074 .dbline 72
0074 0F5F subi R16,255 ; offset = 1
0076 1F4F sbci R17,255
0078 .dbline 72
0078 84E6 ldi R24,100
007A 90E0 ldi R25,0
007C 8017 cp R24,R16
007E 9107 cpc R25,R17
0080 CCF7 brge L5
0082 X0:
0082 .dbline 74
0082 ; //芯片上电
0082 ; PORTB &= ~(1<<PB0); //SS=0
0082 C098 cbi 0x18,0
0084 .dbline 75
0084 ; for(i=0;i<100;i++)
0084 0027 clr R16
0086 1127 clr R17
0088 L9:
0088 .dbline 76
0088 ; ;
0088 L10:
0088 .dbline 75
0088 0F5F subi R16,255 ; offset = 1
008A 1F4F sbci R17,255
008C .dbline 75
008C 0436 cpi R16,100
008E E0E0 ldi R30,0
0090 1E07 cpc R17,R30
0092 D4F3 brlt L9
0094 X1:
0094 .dbline 77
0094 ; SPDR = 0x10+0x01;
0094 81E1 ldi R24,17
0096 8FB9 out 0xf,R24
0098 L13:
0098 .dbline 79
0098 ; while (!(SPSR &(1 << SPIF)))
0098 ; ;
0098 L14:
0098 .dbline 78
0098 779B sbis 0xe,7
009A FECF rjmp L13
009C X2:
009C .dbline 80
009C ; SPDR = 0x00;
009C 2224 clr R2
009E 2FB8 out 0xf,R2
00A0 L16:
00A0 .dbline 82
00A0 ; while (!(SPSR &(1 << SPIF)))
00A0 ; ;
00A0 L17:
00A0 .dbline 81
00A0 779B sbis 0xe,7
00A2 FECF rjmp L16
00A4 X3:
00A4 .dbline 83
00A4 ; for(i=0;i<100;i++)
00A4 0027 clr R16
00A6 1127 clr R17
00A8 L19:
00A8 .dbline 84
00A8 ; ;
00A8 L20:
00A8 .dbline 83
00A8 0F5F subi R16,255 ; offset = 1
00AA 1F4F sbci R17,255
00AC .dbline 83
00AC 0436 cpi R16,100
00AE E0E0 ldi R30,0
00B0 1E07 cpc R17,R30
00B2 D4F3 brlt L19
00B4 X4:
00B4 .dbline 85
00B4 ; PORTB |= (1<<PB0); //SS=1
00B4 C09A sbi 0x18,0
00B6 .dbline 86
00B6 ; for(i=0;i<=100;i++);
00B6 0027 clr R16
00B8 1127 clr R17
00BA L23:
00BA .dbline 86
00BA L24:
00BA .dbline 86
00BA 0F5F subi R16,255 ; offset = 1
00BC 1F4F sbci R17,255
00BE .dbline 86
00BE 84E6 ldi R24,100
00C0 90E0 ldi R25,0
00C2 8017 cp R24,R16
00C4 9107 cpc R25,R17
00C6 CCF7 brge L23
00C8 X5:
00C8 .dbline 88
00C8 ; //设置APC寄存器
00C8 ; PORTB &= ~(1<<PB0); //SS=0
00C8 C098 cbi 0x18,0
00CA .dbline 89
00CA ; for(i=0;i<100;i++)
00CA 0027 clr R16
00CC 1127 clr R17
00CE L27:
00CE .dbline 90
00CE ; ;
00CE L28:
00CE .dbline 89
00CE 0F5F subi R16,255 ; offset = 1
00D0 1F4F sbci R17,255
00D2 .dbline 89
00D2 0436 cpi R16,100
00D4 E0E0 ldi R30,0
00D6 1E07 cpc R17,R30
00D8 D4F3 brlt L27
00DA X6:
00DA .dbline 91
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -