📄 initt.lis
字号:
01C8 30920400 sts L6+1,R3
01CC 20920300 sts L6,R2
01D0 .dbline 73
01D0 ; min_value = 0xff;
01D0 8FEF ldi R24,255
01D2 90E0 ldi R25,0
01D4 90930600 sts L7+1,R25
01D8 80930500 sts L7,R24
01DC .dbline 74
01DC ; total = 0;
01DC 30920200 sts L5+1,R3
01E0 20920100 sts L5,R2
01E4 .dbline 75
01E4 ; }
01E4 L18:
01E4 L15:
01E4 .dbline 76
01E4 ; if ( i < 50 )
01E4 80910000 lds R24,L4
01E8 8233 cpi R24,50
01EA 10F4 brsh L21
01EC .dbline 77
01EC ; {
01EC .dbline 78
01EC ; ADMUX &= ~( 1 << MUX0 );
01EC 3898 cbi 0x7,0
01EE .dbline 79
01EE ; }
01EE 01C0 rjmp L22
01F0 L21:
01F0 .dbline 81
01F0 ; else
01F0 ; {
01F0 .dbline 82
01F0 ; ADMUX |= ( 1 << MUX0 );
01F0 389A sbi 0x7,0
01F2 .dbline 83
01F2 ; }
01F2 L22:
01F2 .dbline 84
01F2 ; i++;
01F2 80910000 lds R24,L4
01F6 8F5F subi R24,255 ; addi 1
01F8 80930000 sts L4,R24
01FC .dbline 85
01FC ; i %= 100;
01FC 14E6 ldi R17,100
01FE 082F mov R16,R24
0200 00D0 rcall mod8u
0202 00930000 sts L4,R16
0206 .dbline 86
0206 ; ADCSR |= ( 1<< ADSC ); //启动新的AD转换
0206 369A sbi 0x6,6
0208 .dbline -2
0208 L3:
0208 00D0 rcall pop_gset1
020A .dbline 0 ; func end
020A 0895 ret
020C .dbsym r SIG_OVERFLOW0 20 I
020C .dbend
020C .dbfunc e watchdog_init _watchdog_init fV
.even
020C _watchdog_init::
020C .dbline -1
020C .dbline 92
020C ; }
020C ;
020C ; //Watchdog initialize
020C ; // prescale: 512K
020C ; void watchdog_init(void)
020C ; {
020C .dbline 93
020C ; wdt_reset(); //this prevents a timout on enabling
020C 00D0 rcall _wdt_reset
020E .dbline -2
020E L23:
020E .dbline 0 ; func end
020E 0895 ret
0210 .dbend
0210 .dbfunc e adc_init _adc_init fV
.even
0210 _adc_init::
0210 .dbline -1
0210 .dbline 100
0210 ; //wdt_enable(WDTO_1S); //WATCHDOG ENABLED - dont forget to issue WDRs,0.52S
0210 ; }
0210 ;
0210 ; //ADC initialize
0210 ; // Conversion time: 117uS
0210 ; void adc_init(void)
0210 ; {
0210 .dbline 101
0210 ; ADCSR = 0x00; //disable adc
0210 2224 clr R2
0212 26B8 out 0x6,R2
0214 .dbline 102
0214 ; ADMUX = 0xC0; //select adc input 0,选择AVCC为参考电源
0214 80EC ldi R24,192
0216 87B9 out 0x7,R24
0218 .dbline 103
0218 ; ACSR = 0x80; //禁止模拟比较器
0218 80E8 ldi R24,128
021A 88B9 out 0x8,R24
021C .dbline 104
021C ; ADCSR = 0xCE; //使能ADC,ADC转换开始,允许ADC中断,32分频
021C 8EEC ldi R24,206
021E 86B9 out 0x6,R24
0220 .dbline -2
0220 L24:
0220 .dbline 0 ; func end
0220 0895 ret
0222 .dbend
0222 .dbfunc e init_devices _init_devices fV
.even
0222 _init_devices::
0222 .dbline -1
0222 .dbline 109
0222 ; }
0222 ;
0222 ; //call this routine to initialize all peripherals
0222 ; void init_devices(void)
0222 ; { //stop errant interrupts until set up
0222 .dbline 110
0222 ; cli(); //disable all interrupts
0222 00D0 rcall _cli
0224 .dbline 111
0224 ; port_init();
0224 EDDE rcall _port_init
0226 .dbline 112
0226 ; watchdog_init();
0226 F2DF rcall _watchdog_init
0228 .dbline 113
0228 ; timer0_init();
0228 F6DE rcall _timer0_init
022A .dbline 114
022A ; adc_init();
022A F2DF rcall _adc_init
022C .dbline 115
022C ; MCUCR = 0x00;
022C 2224 clr R2
022E 25BE out 0x35,R2
0230 .dbline 116
0230 ; GICR = 0x00;
0230 2BBE out 0x3b,R2
0232 .dbline 117
0232 ; TIMSK = 0x01; //timer interrupt sources
0232 81E0 ldi R24,1
0234 89BF out 0x39,R24
0236 .dbline 118
0236 ; if ( UP_DOWN_POWER != 0x55aa )
0236 80910000 lds R24,_UP_DOWN_POWER
023A 8A3A cpi R24,170
023C C1F0 breq L26
023E .dbline 119
023E ; {
023E .dbline 126
023E ; /*
023E ; KEY_A_V_STATE = 0;
023E ; KEY_AUTO_MAN_STATE = 0;
023E ; KEY_CC_CV_STATE = 0;
023E ; POWER_STATE = 0;
023E ; */
023E ; eeprom_busy_wait();
023E 00D0 rcall _eeprom_busy_wait
0240 .dbline 127
0240 ; KEY_A_V_STATE = eeprom_read_byte ( (char*)0x01 );
0240 01E0 ldi R16,1
0242 10E0 ldi R17,0
0244 00D0 rcall _eeprom_read_byte
0246 00930400 sts _KEY_A_V_STATE,R16
024A .dbline 128
024A ; eeprom_busy_wait();
024A 00D0 rcall _eeprom_busy_wait
024C .dbline 129
024C ; KEY_AUTO_MAN_STATE = eeprom_read_byte ( (char*)0x03 );
024C 03E0 ldi R16,3
024E 10E0 ldi R17,0
0250 00D0 rcall _eeprom_read_byte
0252 00930100 sts _KEY_AUTO_MAN_STATE,R16
0256 .dbline 130
0256 ; eeprom_busy_wait();
0256 00D0 rcall _eeprom_busy_wait
0258 .dbline 131
0258 ; KEY_CC_CV_STATE = eeprom_read_byte ( (char*)0x05 );
0258 05E0 ldi R16,5
025A 10E0 ldi R17,0
025C 00D0 rcall _eeprom_read_byte
025E 00930200 sts _KEY_CC_CV_STATE,R16
0262 .dbline 132
0262 ; eeprom_busy_wait();
0262 00D0 rcall _eeprom_busy_wait
0264 .dbline 133
0264 ; POWER_STATE = eeprom_read_byte ( (char*)0x07 );
0264 07E0 ldi R16,7
0266 10E0 ldi R17,0
0268 00D0 rcall _eeprom_read_byte
026A 00930300 sts _POWER_STATE,R16
026E .dbline 134
026E ; }
026E L26:
026E .dbline 136
026E ;
026E ; if ( POWER_STATE )
026E 20900300 lds R2,_POWER_STATE
0272 2220 tst R2
0274 11F0 breq L28
0276 .dbline 137
0276 ; {
0276 .dbline 138
0276 ; PORTB |= ( 1 << POWER ); //开启电源
0276 C49A sbi 0x18,4
0278 .dbline 139
0278 ; }
0278 01C0 rjmp L29
027A L28:
027A .dbline 141
027A ; else
027A ; {
027A .dbline 142
027A ; PORTB &= ~( 1 << POWER ); //关闭电源
027A C498 cbi 0x18,4
027C .dbline 143
027C ; }
027C L29:
027C .dbline 144
027C ; if ( KEY_A_V_STATE )
027C 20900400 lds R2,_KEY_A_V_STATE
0280 2220 tst R2
0282 11F0 breq L30
0284 .dbline 145
0284 ; {
0284 .dbline 146
0284 ; PORTB |= ( 1 << OUT_A ); //显示电流
0284 C79A sbi 0x18,7
0286 .dbline 147
0286 ; }
0286 01C0 rjmp L31
0288 L30:
0288 .dbline 149
0288 ; else
0288 ; {
0288 .dbline 150
0288 ; PORTB &= ~( 1 << OUT_A ); //显示电压
0288 C798 cbi 0x18,7
028A .dbline 151
028A ; }
028A L31:
028A .dbline 152
028A ; if ( KEY_CC_CV_STATE )
028A 20900200 lds R2,_KEY_CC_CV_STATE
028E 2220 tst R2
0290 11F0 breq L32
0292 .dbline 153
0292 ; {
0292 .dbline 154
0292 ; PORTB |= ( 1 << OUT_CV ); //稳压
0292 C69A sbi 0x18,6
0294 .dbline 155
0294 ; }
0294 01C0 rjmp L33
0296 L32:
0296 .dbline 157
0296 ; else
0296 ; {
0296 .dbline 158
0296 ; PORTB &= ~( 1 << OUT_CV ); //稳流
0296 C698 cbi 0x18,6
0298 .dbline 159
0298 ; }
0298 L33:
0298 .dbline 160
0298 ; if ( KEY_AUTO_MAN_STATE )
0298 20900100 lds R2,_KEY_AUTO_MAN_STATE
029C 2220 tst R2
029E 11F0 breq L34
02A0 .dbline 161
02A0 ; {
02A0 .dbline 162
02A0 ; PORTB |= ( 1 << OUT_AUTO ); //自动
02A0 C59A sbi 0x18,5
02A2 .dbline 163
02A2 ; }
02A2 01C0 rjmp L35
02A4 L34:
02A4 .dbline 165
02A4 ; else
02A4 ; {
02A4 .dbline 166
02A4 ; PORTB &= ~( 1 << OUT_AUTO ); //手动
02A4 C598 cbi 0x18,5
02A6 .dbline 167
02A6 ; }
02A6 L35:
02A6 .dbline 168
02A6 ; UP_DOWN_POWER = 0x55aa;
02A6 8AEA ldi R24,21930
02A8 95E5 ldi R25,85
02AA 80930000 sts _UP_DOWN_POWER,R24
02AE .dbline 169
02AE ; sei(); //re-enable interrupts
02AE 00D0 rcall _sei
02B0 .dbline -2
02B0 L25:
02B0 .dbline 0 ; func end
02B0 0895 ret
02B2 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF\initt.c
0000 _UP_DOWN_POWER::
0000 .blkb 1
0001 .dbfile F:\网络下载\AVR\完整应用\电流电压表\SOF/init.h
0001 .dbsym e UP_DOWN_POWER _UP_DOWN_POWER c
0001 _KEY_AUTO_MAN_STATE::
0001 .blkb 1
0002 .dbsym e KEY_AUTO_MAN_STATE _KEY_AUTO_MAN_STATE c
0002 _KEY_CC_CV_STATE::
0002 .blkb 1
0003 .dbsym e KEY_CC_CV_STATE _KEY_CC_CV_STATE c
0003 _POWER_STATE::
0003 .blkb 1
0004 .dbsym e POWER_STATE _POWER_STATE c
0004 _KEY_A_V_STATE::
0004 .blkb 1
0005 .dbsym e KEY_A_V_STATE _KEY_A_V_STATE c
0005 _KEY_INPUT::
0005 .blkb 1
0006 .dbsym e KEY_INPUT _KEY_INPUT c
0006 _KEY_TEMP::
0006 .blkb 1
0007 .dbsym e KEY_TEMP _KEY_TEMP c
0007 _SET_STATU::
0007 .blkb 1
0008 .dbsym e SET_STATU _SET_STATU c
0008 _TIMER_EN::
0008 .blkb 1
0009 .dbsym e TIMER_EN _TIMER_EN c
0009 _TIMER_NUM::
0009 .blkb 2
000B .dbsym e TIMER_NUM _TIMER_NUM i
000B _adc_data_temp::
000B .blkb 2
000D .dbsym e adc_data_temp _adc_data_temp i
.area lit(rom, con, rel)
0000 L17:
0000 00004042 .word 0x0,0x4240
0004 L16:
0004 00000040 .word 0x0,0x4000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -