📄 main.s
字号:
.module main.c
.area data(ram, con, rel)
_RunTab::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
.dbsym e RunTab _RunTab c
_sec::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
.dbsym e sec _sec c
_min::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
.dbsym e min _min c
_hour::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
.dbsym e hour _hour c
_mAh_set::
.blkb 2
.area idata
.word 1000
.area data(ram, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
.dbsym e mAh_set _mAh_set i
_speed::
.blkb 1
.area idata
.byte 10
.area data(ram, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
.dbsym e speed _speed c
.area vector(rom, abs)
.org 8
rjmp _timer2_ovf_isr
.area data(ram, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
.area text(rom, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
_timer2_ovf_isr::
rcall push_lset
.dbline -1
.dbline 48
; //项目名称:电池放电器
; //功能描述:
; //外部模块:1602LCD LM35
; //开发人员:书生
; //开发日期:2006年1月20日
; //*********************************************************
; #include <iom8v.h>
; #include <macros.h>
; #include "discharge.h"
; #include "eeprom.h"
; #include "LCD_1602.h"
; unsigned char keyboard;
; unsigned char RunTab=0;
; unsigned char RunTab_old;
;
; unsigned char time;
; unsigned char sec=0;
; unsigned char min=0;
; unsigned char hour=0;
;
; unsigned int sc_key,sc_bt1,sc_bt_ctrl,
; sc_discharge,sc_eeprom,sc_lcd_write,
; sc_bt1_record,sc_key_delay,sc_bt1_v_temp;
;
; // discharge
; unsigned char BT1_state;
; unsigned int BT1_V;
; unsigned int BT1_I;
; unsigned int BT1_T;
; unsigned int BT1_V_num;
; unsigned int BT1_V_num_temp;
; unsigned int bt1_v_temp;
; unsigned int bt1_v_temp_1;
;
; unsigned int BT1_I_SET;
; unsigned int PWM;
; unsigned long BT1_mAh;
; unsigned long BT1_time;
; unsigned int mAh;
; unsigned int D882_P;
;
; unsigned int mAh_set=1000;
; unsigned char speed=10;
; unsigned int BT1_P;
; //T2溢出中断服务程序 8ms
; #pragma interrupt_handler timer2_ovf_isr:5
; void timer2_ovf_isr(void)
; {
.dbline 49
; TCNT2 = 0x06;//重装计时值0xFF=32us 0x00=8.192ms
ldi R24,6
out 0x24,R24
.dbline 50
; timer();//实时时钟
rcall _timer
.dbline 54
; /*----------------------------------
; 以下是任务管理器
; ----------------------------------*/
; system();//系统后台服务程序
rcall _system
.dbline 55
; taskmgr();//任务管理程序
rcall _taskmgr
.dbline 56
; system_clock();
rcall _system_clock
.dbline -2
L1:
rcall pop_lset
.dbline 0 ; func end
reti
.dbend
.dbfunc e system _system fV
.even
_system::
rcall push_gset2
sbiw R28,2
.dbline -1
.dbline 63
; }
;
; /*----------------------------------
; 系统后台服务程序
; -----------------------------------*/
; void system(void)
; {
.dbline 64
; if((sc_key_delay==0)&&(keyboard!=0)){sc_key_delay=50;}
lds R2,_sc_key_delay
lds R3,_sc_key_delay+1
tst R2
brne L3
tst R3
brne L3
X0:
lds R2,_keyboard
tst R2
breq L3
.dbline 64
.dbline 64
ldi R24,50
ldi R25,0
sts _sc_key_delay+1,R25
sts _sc_key_delay,R24
.dbline 64
L3:
.dbline 65
; if(sc_key_delay==1){keyboard=0;}
lds R24,_sc_key_delay
lds R25,_sc_key_delay+1
cpi R24,1
ldi R30,0
cpc R25,R30
brne L5
.dbline 65
.dbline 65
clr R2
sts _keyboard,R2
.dbline 65
L5:
.dbline 66
; if(sc_key==0)
lds R2,_sc_key
lds R3,_sc_key+1
tst R2
brne L7
tst R3
brne L7
X1:
.dbline 67
; {keyboard=key(keyboard);sc_key=16;}//键盘扫描间隔为32*8ms
.dbline 67
lds R16,_keyboard
rcall _key
sts _keyboard,R16
.dbline 67
ldi R24,16
ldi R25,0
sts _sc_key+1,R25
sts _sc_key,R24
.dbline 67
L7:
.dbline 69
;
; if(sc_lcd_write==0)
lds R2,_sc_lcd_write
lds R3,_sc_lcd_write+1
tst R2
brne L9
tst R3
brne L9
X2:
.dbline 70
; {
.dbline 71
; desktop1();desktop2();desktop3();desktop4();
rcall _desktop1
.dbline 71
rcall _desktop2
.dbline 71
rcall _desktop3
.dbline 71
rcall _desktop4
.dbline 72
; Capacitance_setting();discharge_speed();
rcall _Capacitance_setting
.dbline 72
rcall _discharge_speed
.dbline 73
; record_setting();welcome();
rcall _record_setting
.dbline 73
rcall _welcome
.dbline 74
; LCD_write_new();
rcall _LCD_write_new
.dbline 75
; sc_lcd_write=32;
ldi R24,32
ldi R25,0
sts _sc_lcd_write+1,R25
sts _sc_lcd_write,R24
.dbline 76
; }
L9:
.dbline 77
; if(BT1_I_SET)
lds R2,_BT1_I_SET
lds R3,_BT1_I_SET+1
tst R2
brne X3
tst R3
brne X10
rjmp L11
X10:
X3:
.dbline 78
; {
.dbline 79
; if(sc_bt1==0)
lds R2,_sc_bt1
lds R3,_sc_bt1+1
tst R2
brne L13
tst R3
brne L13
X4:
.dbline 80
; {BT1_mAh+=BT1_I;sc_bt1=450;}//容量统计,每3.6秒计一次
.dbline 80
lds R2,_BT1_I
lds R3,_BT1_I+1
clr R4
clr R5
lds R8,_BT1_mAh+2
lds R9,_BT1_mAh+2+1
lds R6,_BT1_mAh
lds R7,_BT1_mAh+1
add R6,R2
adc R7,R3
adc R8,R4
adc R9,R5
sts _BT1_mAh+1,R7
sts _BT1_mAh,R6
sts _BT1_mAh+2+1,R9
sts _BT1_mAh+2,R8
.dbline 80
ldi R24,450
ldi R25,1
sts _sc_bt1+1,R25
sts _sc_bt1,R24
.dbline 80
L13:
.dbline 81
; if(sc_discharge==0)
lds R2,_sc_discharge
lds R3,_sc_discharge+1
tst R2
brne L15
tst R3
brne L15
X5:
.dbline 82
; {BT1_time++;sc_discharge=125;}//放电时间统计
.dbline 82
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_BT1_time+2
lds R5,_BT1_time+2+1
lds R2,_BT1_time
lds R3,_BT1_time+1
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _BT1_time+1,R3
sts _BT1_time,R2
sts _BT1_time+2+1,R5
sts _BT1_time+2,R4
.dbline 82
ldi R24,125
ldi R25,0
sts _sc_discharge+1,R25
sts _sc_discharge,R24
.dbline 82
L15:
.dbline 83
; if(sc_eeprom==0)
lds R2,_sc_eeprom
lds R3,_sc_eeprom+1
tst R2
brne L17
tst R3
brne L17
X6:
.dbline 84
; {
.dbline 85
; if(BT1_V<2000)
lds R24,_BT1_V
lds R25,_BT1_V+1
cpi R24,208
ldi R30,7
cpc R25,R30
brsh L19
.dbline 86
; {discharge_stop();}
.dbline 86
rcall _discharge_stop
.dbline 86
L19:
.dbline 87
; EEPROM_WRITE(0x01F0,BT1_mAh);
ldi R24,4
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_BT1_mAh
ldi R19,>_BT1_mAh
ldi R16,496
ldi R17,1
rcall _EEPROMWriteBytes
.dbline 88
; EEPROM_WRITE(0x01F4,BT1_time);
ldi R24,4
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_BT1_time
ldi R19,>_BT1_time
ldi R16,500
ldi R17,1
rcall _EEPROMWriteBytes
.dbline 89
; sc_eeprom=1250;
ldi R24,1250
ldi R25,4
sts _sc_eeprom+1,R25
sts _sc_eeprom,R24
.dbline 90
; }
L17:
.dbline 91
; if(sc_bt_ctrl==0)
lds R2,_sc_bt_ctrl
lds R3,_sc_bt_ctrl+1
tst R2
brne L21
tst R3
brne L21
X7:
.dbline 92
; {
.dbline 93
; BT1_I_Ctrl();
rcall _BT1_I_Ctrl
.dbline 94
; if((BT1_I>BT1_I_SET+5)||(BT1_I<BT1_I_SET-5))
lds R24,_BT1_I_SET
lds R25,_BT1_I_SET+1
adiw R24,5
lds R2,_BT1_I
lds R3,_BT1_I+1
cp R24,R2
cpc R25,R3
brlo L25
lds R24,_BT1_I_SET
lds R25,_BT1_I_SET+1
sbiw R24,5
cp R2,R24
cpc R3,R25
brsh L23
L25:
.dbline 95
; sc_bt_ctrl=2;
ldi R24,2
ldi R25,0
sts _sc_bt_ctrl+1,R25
sts _sc_bt_ctrl,R24
rjmp L24
L23:
.dbline 96
; else sc_bt_ctrl=48;
ldi R24,48
ldi R25,0
sts _sc_bt_ctrl+1,R25
sts _sc_bt_ctrl,R24
L24:
.dbline 97
; }
L21:
.dbline 98
; }
L11:
.dbline 99
; if(sc_bt1_v_temp==0)
lds R2,_sc_bt1_v_temp
lds R3,_sc_bt1_v_temp+1
tst R2
brne L26
tst R3
brne L26
X8:
.dbline 100
; {bt1_v_temp+=BT1_V;sc_bt1_v_temp=500;}
.dbline 100
lds R2,_BT1_V
lds R3,_BT1_V+1
lds R4,_bt1_v_temp
lds R5,_bt1_v_temp+1
add R4,R2
adc R5,R3
sts _bt1_v_temp+1,R5
sts _bt1_v_temp,R4
.dbline 100
ldi R24,500
ldi R25,1
sts _sc_bt1_v_temp+1,R25
sts _sc_bt1_v_temp,R24
.dbline 100
L26:
.dbline 101
lds R2,_sc_bt1_record
lds R3,_sc_bt1_record+1
tst R2
brne L28
tst R3
brne L28
X9:
.dbline 102
.dbline 102
rcall _bt1_v_record
.dbline 102
ldi R24,7500
ldi R25,29
sts _sc_bt1_record+1,R25
sts _sc_bt1_record,R24
.dbline 102
L28:
.dbline -2
L2:
adiw R28,2
rcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e taskmgr _taskmgr fV
.even
_taskmgr::
.dbline 0 ; func end
ret
.dbend
.dbfunc e system_clock _system_clock fV
.even
_system_clock::
.dbline 0 ; func end
ret
.dbend
.dbfunc e bt1_v_record _bt1_v_record fV
.even
_bt1_v_record::
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline 0 ; func end
ret
.dbend
.dbfunc e welcome _welcome fV
.even
_welcome::
.dbline 0 ; func end
ret
.dbend
.dbfunc e discharge_stop _discharge_stop fV
.even
_discharge_stop::
.dbline 0 ; func end
ret
.dbend
.dbfunc e discharge_init _discharge_init fV
.even
_discharge_init::
.dbline 0 ; func end
ret
.dbend
.dbfunc e Capacitance_setting _Capacitance_setting fV
.even
_Capacitance_setting::
.dbline 0 ; func end
ret
.dbend
.dbfunc e discharge_speed _discharge_speed fV
.even
_discharge_speed::
.dbline 0 ; func end
ret
.dbend
.dbfunc e record_setting _record_setting fV
.even
_record_setting::
.dbline 0 ; func end
ret
.dbend
.dbfunc e discharge _discharge fV
.even
_discharge::
.dbline 0 ; func end
ret
.dbend
.dbfunc e desktop2 _desktop2 fV
.even
_desktop2::
.dbline 0 ; func end
ret
.dbend
.dbfunc e desktop1 _desktop1 fV
.even
_desktop1::
.dbline 0 ; func end
ret
.dbend
.dbfunc e desktop3 _desktop3 fV
.even
_desktop3::
.dbline 0 ; func end
ret
.dbend
.dbfunc e desktop4 _desktop4 fV
.even
_desktop4::
.dbline 0 ; func end
ret
.dbend
.dbfunc e BT1_I_Ctrl _BT1_I_Ctrl fV
.even
_BT1_I_Ctrl::
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer _timer fV
.even
_timer::
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\main.c
_BT1_P::
.blkb 2
.dbsym e BT1_P _BT1_P i
_D882_P::
.blkb 2
.dbsym e D882_P _D882_P i
_mAh::
.blkb 2
.dbsym e mAh _mAh i
_BT1_time::
.blkb 4
.dbsym e BT1_time _BT1_time l
_BT1_mAh::
.blkb 4
.dbsym e BT1_mAh _BT1_mAh l
_PWM::
.blkb 2
.dbsym e PWM _PWM i
_BT1_I_SET::
.blkb 2
.dbsym e BT1_I_SET _BT1_I_SET i
_bt1_v_temp_1::
.blkb 2
.dbsym e bt1_v_temp_1 _bt1_v_temp_1 i
_bt1_v_temp::
.blkb 2
.dbsym e bt1_v_temp _bt1_v_temp i
_BT1_V_num_temp::
.blkb 2
.dbsym e BT1_V_num_temp _BT1_V_num_temp i
_BT1_V_num::
.blkb 2
.dbsym e BT1_V_num _BT1_V_num i
_BT1_T::
.blkb 2
.dbsym e BT1_T _BT1_T i
_BT1_I::
.blkb 2
.dbsym e BT1_I _BT1_I i
_BT1_V::
.blkb 2
.dbsym e BT1_V _BT1_V i
_BT1_state::
.blkb 1
.dbsym e BT1_state _BT1_state c
_sc_bt1_v_temp::
.blkb 2
.dbsym e sc_bt1_v_temp _sc_bt1_v_temp i
_sc_key_delay::
.blkb 2
.dbsym e sc_key_delay _sc_key_delay i
_sc_bt1_record::
.blkb 2
.dbsym e sc_bt1_record _sc_bt1_record i
_sc_lcd_write::
.blkb 2
.dbsym e sc_lcd_write _sc_lcd_write i
_sc_eeprom::
.blkb 2
.dbsym e sc_eeprom _sc_eeprom i
_sc_discharge::
.blkb 2
.dbsym e sc_discharge _sc_discharge i
_sc_bt_ctrl::
.blkb 2
.dbsym e sc_bt_ctrl _sc_bt_ctrl i
_sc_bt1::
.blkb 2
.dbsym e sc_bt1 _sc_bt1 i
_sc_key::
.blkb 2
.dbsym e sc_key _sc_key i
_time::
.blkb 1
.dbsym e time _time c
_RunTab_old::
.blkb 1
.dbsym e RunTab_old _RunTab_old c
_keyboard::
.blkb 1
.dbsym e keyboard _keyboard c
.area lit(rom, con, rel)
L129:
.byte 'P,'W,'M,0
L128:
.byte 'F,'i,'n,'i,'s,'h,0
L116:
.byte 'm,'W,0
L115:
.byte 's,'e,'c,0
L94:
.byte 'A,0
L93:
.byte 'C,0
L92:
.byte 'm,'i,'n,0
L91:
.byte 's,'p,'e,'e,'d,0
L87:
.byte 'V,0
L86:
.byte 'm,'A,'h,0
L85:
.byte 'C,'a,'p,'a,'c,'i,'t,'a,'n,'c,'e,0
L71:
.byte 'D,'i,'s,'c,'h,'a,'r,'g,'e,'r,32,'x,'p,0
L70:
.byte 'W,'e,'l,'c,'o,'m,'e,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -