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

📄 main.lis

📁 EPPROM应用,测试程序,AVR内核,供初学者参考
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00E2                   .dbline 93
 00E2           ;                       else
 00E2           ;                       NOP();
 00E2 0000              nop
 00E4           L15:
 00E4                   .dbline 94
 00E4           ;               }
 00E4           L12:
 00E4                   .dbline 74
 00E4 4D9B              sbis 0x9,5
 00E6 03C0              rjmp L16
 00E8           X4:
 00E8 84E6              ldi R24,100
 00EA 8A15              cp R24,R10
 00EC C0F6              brsh L11
 00EE           X5:
 00EE           L16:
 00EE                   .dbline 95
 00EE           ;               SREG=0x00;              
 00EE 2224              clr R2
 00F0 2FBE              out 0x3f,R2
 00F2                   .dbline 96
 00F2           ;               ep_temp1=eeprom_read(0x0025);//读取EEPROM中用户设定的车速
 00F2 05E2              ldi R16,37
 00F4 10E0              ldi R17,0
 00F6 35D0              rcall _eeprom_read
 00F8 A02E              mov R10,R16
 00FA                   .dbline 98
 00FA           ;               //delayms(20);
 00FA           ;               ep_temp2=eeprom_read(0x0026);
 00FA 06E2              ldi R16,38
 00FC 10E0              ldi R17,0
 00FE 31D0              rcall _eeprom_read
 0100 C02E              mov R12,R16
 0102                   .dbline 99
 0102           ;               SREG|=0x80;             
 0102 7894              bset 7
 0104                   .dbline 100
 0104           ;               ep_temp=(ep_temp2<<8)+ep_temp1; 
 0104 BC2C              mov R11,R12
 0106                   .dbline 101
 0106           ;               speed_temp=data_temp2;             //调用测定车速信号
 0106 20900000          lds R2,_data_temp2
 010A 30900100          lds R3,_data_temp2+1
 010E 3982              std y+1,R3
 0110 2882              std y+0,R2
 0112                   .dbline 102
 0112           ;               sendData(ep_temp2);
 0112 82D0              rcall _sendData
 0114                   .dbline 103
 0114           ;               delays(1);
 0114 01E0              ldi R16,1
 0116 40D0              rcall _delays
 0118                   .dbline 104
 0118           ;       }
 0118           L3:
 0118                   .dbline 60
 0118 89CF              rjmp L2
 011A           X6:
 011A                   .dbline -2
 011A           L1:
 011A                   .dbline 0 ; func end
 011A 2496              adiw R28,4
 011C 0895              ret
 011E                   .dbsym r flag 10 c
 011E                   .dbsym r deciMeter 12 c
 011E                   .dbsym r ep_temp 10 i
 011E                   .dbsym r ep_temp1 10 c
 011E                   .dbsym r ep_temp2 12 c
 011E                   .dbsym r speed_temp1 12 i
 011E                   .dbsym r speed2 12 c
 011E                   .dbsym r speed1 14 c
 011E                   .dbsym l timeBlock 2 i
 011E                   .dbsym l speed_temp 0 i
 011E                   .dbsym r temp 10 c
 011E                   .dbend
 011E                   .dbfunc e port_init _port_init fV
                        .even
 011E           _port_init::
 011E                   .dbline -1
 011E                   .dbline 107
 011E           ; }
 011E           ; void port_init(void)
 011E           ; {
 011E                   .dbline 108
 011E           ;     DDRB=0x10;
 011E 80E1              ldi R24,16
 0120 84B9              out 0x4,R24
 0122                   .dbline 109
 0122           ;       DDRC=0x02;
 0122 82E0              ldi R24,2
 0124 87B9              out 0x7,R24
 0126                   .dbline 110
 0126           ;       DDRD=0x00;
 0126 2224              clr R2
 0128 2AB8              out 0xa,R2
 012A                   .dbline 111
 012A           ;       PORTC=0x00;
 012A 28B8              out 0x8,R2
 012C                   .dbline 112
 012C           ;       PORTB=0x00;
 012C 25B8              out 0x5,R2
 012E                   .dbline 113
 012E           ;       PORTD=0x00;
 012E 2BB8              out 0xb,R2
 0130                   .dbline -2
 0130           L17:
 0130                   .dbline 0 ; func end
 0130 0895              ret
 0132                   .dbend
 0132                   .dbfunc e time_init _time_init fV
                        .even
 0132           _time_init::
 0132                   .dbline -1
 0132                   .dbline 116
 0132           ; }
 0132           ; void time_init(void)
 0132           ; {
 0132                   .dbline 117
 0132           ;       TCCR0A=0x00;
 0132 2224              clr R2
 0134 24BC              out 0x24,R2
 0136                   .dbline 118
 0136           ;       TCCR0B=0x03;
 0136 83E0              ldi R24,3
 0138 85BD              out 0x25,R24
 013A                   .dbline 119
 013A           ;       TIMSK0=0x01;
 013A 81E0              ldi R24,1
 013C 80936E00          sts 110,R24
 0140                   .dbline 120
 0140           ;       TIFR0=0x01;
 0140 85BB              out 0x15,R24
 0142                   .dbline 121
 0142           ;       TCNT0=0xc0;
 0142 80EC              ldi R24,192
 0144 86BD              out 0x26,R24
 0146                   .dbline 122
 0146           ;       EICRA=0x01;
 0146 81E0              ldi R24,1
 0148 80936900          sts 105,R24
 014C                   .dbline 123
 014C           ;       EIMSK=0x01;
 014C 8DBB              out 0x1d,R24
 014E                   .dbline 124
 014E           ;       EIFR=0x01;
 014E 8CBB              out 0x1c,R24
 0150                   .dbline -2
 0150           L18:
 0150                   .dbline 0 ; func end
 0150 0895              ret
 0152                   .dbend
 0152                   .dbfunc e eeprom_write _eeprom_write fV
 0152           ;            add -> R18
 0152           ;           adrw -> R16,R17
                        .even
 0152           _eeprom_write::
 0152                   .dbline -1
 0152                   .dbline 127
 0152           ; }
 0152           ; void eeprom_write(u16 adrw,u08 add)
 0152           ; {
 0152           L20:
 0152                   .dbline 129
 0152           ;     /* 等待上一次写操作结束 */
 0152           ;     while(EECR & (1<<EEPE));
 0152           L21:
 0152                   .dbline 129
 0152 F999              sbic 0x1f,1
 0154 FECF              rjmp L20
 0156           X7:
 0156                   .dbline 131
 0156           ;     /* 设置地址和数据寄存器 */
 0156           ;     EEAR=adrw;
 0156 12BD              out 0x22,R17
 0158 01BD              out 0x21,R16
 015A                   .dbline 132
 015A           ;     EEDR=add;
 015A 20BD              out 0x20,R18
 015C                   .dbline 134
 015C           ;     /* 置位EEMWE */
 015C           ;     EECR|=(1<<EEMPE);
 015C FA9A              sbi 0x1f,2
 015E                   .dbline 136
 015E           ;     /* 置位EEWE 以启动写操作E */
 015E           ;     EECR|=(1<<EEPE);
 015E F99A              sbi 0x1f,1
 0160                   .dbline -2
 0160           L19:
 0160                   .dbline 0 ; func end
 0160 0895              ret
 0162                   .dbsym r add 18 c
 0162                   .dbsym r adrw 16 i
 0162                   .dbend
 0162                   .dbfunc e eeprom_read _eeprom_read fc
 0162           ;           adrr -> R16,R17
                        .even
 0162           _eeprom_read::
 0162                   .dbline -1
 0162                   .dbline 139
 0162           ; }
 0162           ; u08 eeprom_read(u16 adrr)
 0162           ; {
 0162           L24:
 0162                   .dbline 141
 0162           ;     /* 等待上一次写操作结束 */
 0162           ;     while(EECR & (1<<EEPE));
 0162           L25:
 0162                   .dbline 141
 0162 F999              sbic 0x1f,1
 0164 FECF              rjmp L24
 0166           X8:
 0166                   .dbline 143
 0166           ;     /* 设置地址寄存器 */
 0166           ;     EEAR=adrr;
 0166 12BD              out 0x22,R17
 0168 01BD              out 0x21,R16
 016A                   .dbline 145
 016A           ;     /* 设置EERE 以启动读操作 */
 016A           ;     EECR|=(1<<EERE);
 016A F89A              sbi 0x1f,0
 016C                   .dbline 147
 016C           ;     /* 自数据寄存器返回数据 */
 016C           ;     return EEDR;
 016C 00B5              in R16,0x20
 016E                   .dbline -2
 016E           L23:
 016E                   .dbline 0 ; func end
 016E 0895              ret
 0170                   .dbsym r adrr 16 i
 0170                   .dbend
 0170                   .dbfunc e delay _delay fV
 0170           ;           tick -> R16
                        .even
 0170           _delay::
 0170                   .dbline -1
 0170                   .dbline 150
 0170           ; }
 0170           ; void delay(u08 tick)
 0170           ; {
 0170           L28:
 0170                   .dbline 151
 0170           ;     while(--tick);
 0170           L29:
 0170                   .dbline 151
 0170 802F              mov R24,R16
 0172 8150              subi R24,1
 0174 082F              mov R16,R24
 0176 8823              tst R24
 0178 D9F7              brne L28
 017A           X9:
 017A                   .dbline -2
 017A           L27:
 017A                   .dbline 0 ; func end
 017A 0895              ret
 017C                   .dbsym r tick 16 c
 017C                   .dbend
 017C                   .dbfunc e delayms _delayms fV
 017C           ;           tim1 -> R12
 017C           ;              i -> R10
 017C           ;           time -> R10
                        .even
 017C           _delayms::
 017C AA92              st -y,R10
 017E CA92              st -y,R12
 0180 A02E              mov R10,R16
 0182                   .dbline -1
 0182                   .dbline 154
 0182           ; }
 0182           ; void delayms(u08 time)
 0182           ; {
 0182                   .dbline 156
 0182           ;     u08 tim1,i;
 0182           ;       tim1=time;
 0182 CA2C              mov R12,R10
 0184                   .dbline 157
 0184           ;       for(i=0;i<tim1;i++)
 0184 AA24              clr R10
 0186 03C0              rjmp L35
 0188           L32:
 0188                   .dbline 158
 0188           ;       {
 0188                   .dbline 159

⌨️ 快捷键说明

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