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

📄 main.lis

📁 ISD1700语音芯片放音的ISP实现
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .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 + -