?? main.lis
字號:
.module main.c
.area data(ram, con, rel)
0000 _RunTab::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\刻錄的\電子技術\項目\電池放電器\軟件V2.0\main.c
0001 .dbsym e RunTab _RunTab c
0001 _sec::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile E:\刻錄的\電子技術\項目\電池放電器\軟件V2.0\main.c
0002 .dbsym e sec _sec c
0002 _min::
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile E:\刻錄的\電子技術\項目\電池放電器\軟件V2.0\main.c
0003 .dbsym e min _min c
0003 _hour::
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile E:\刻錄的\電子技術\項目\電池放電器\軟件V2.0\main.c
0004 .dbsym e hour _hour c
0004 _mAh_set::
0004 .blkb 2
.area idata
0004 E803 .word 1000
.area data(ram, con, rel)
0006 .dbfile E:\刻錄的\電子技術\項目\電池放電器\軟件V2.0\main.c
0006 .dbsym e mAh_set _mAh_set i
0006 _speed::
0006 .blkb 1
.area idata
0006 0A .byte 10
.area data(ram, con, rel)
0007 .dbfile E:\刻錄的\電子技術\項目\電池放電器\軟件V2.0\main.c
0007 .dbsym e speed _speed c
.area vector(rom, abs)
.org 8
0008 00C0 rjmp _timer2_ovf_isr
.area data(ram, con, rel)
0007 .dbfile E:\刻錄的\電子技術\項目\電池放電器\軟件V2.0\main.c
.area text(rom, con, rel)
0000 .dbfile E:\刻錄的\電子技術\項目\電池放電器\軟件V2.0\main.c
0000 .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
.even
0000 _timer2_ovf_isr::
0000 00D0 rcall push_lset
0002 .dbline -1
0002 .dbline 48
0002 ; //項目名稱:電池放電器
0002 ; //功能描述:
0002 ; //外部模塊:1602LCD LM35
0002 ; //開發人員:書生
0002 ; //開發日期:2006年1月20日
0002 ; //*********************************************************
0002 ; #include <iom8v.h>
0002 ; #include <macros.h>
0002 ; #include "discharge.h"
0002 ; #include "eeprom.h"
0002 ; #include "LCD_1602.h"
0002 ; unsigned char keyboard;
0002 ; unsigned char RunTab=0;
0002 ; unsigned char RunTab_old;
0002 ;
0002 ; unsigned char time;
0002 ; unsigned char sec=0;
0002 ; unsigned char min=0;
0002 ; unsigned char hour=0;
0002 ;
0002 ; unsigned int sc_key,sc_bt1,sc_bt_ctrl,
0002 ; sc_discharge,sc_eeprom,sc_lcd_write,
0002 ; sc_bt1_record,sc_key_delay,sc_bt1_v_temp;
0002 ;
0002 ; // discharge
0002 ; unsigned char BT1_state;
0002 ; unsigned int BT1_V;
0002 ; unsigned int BT1_I;
0002 ; unsigned int BT1_T;
0002 ; unsigned int BT1_V_num;
0002 ; unsigned int BT1_V_num_temp;
0002 ; unsigned int bt1_v_temp;
0002 ; unsigned int bt1_v_temp_1;
0002 ;
0002 ; unsigned int BT1_I_SET;
0002 ; unsigned int PWM;
0002 ; unsigned long BT1_mAh;
0002 ; unsigned long BT1_time;
0002 ; unsigned int mAh;
0002 ; unsigned int D882_P;
0002 ;
0002 ; unsigned int mAh_set=1000;
0002 ; unsigned char speed=10;
0002 ; unsigned int BT1_P;
0002 ; //T2溢出中斷服務程序 8ms
0002 ; #pragma interrupt_handler timer2_ovf_isr:5
0002 ; void timer2_ovf_isr(void)
0002 ; {
0002 .dbline 49
0002 ; TCNT2 = 0x06;//重裝計時值0xFF=32us 0x00=8.192ms
0002 86E0 ldi R24,6
0004 84BD out 0x24,R24
0006 .dbline 50
0006 ; timer();//實時時鐘
0006 17D8 rcall _timer
0008 .dbline 54
0008 ; /*----------------------------------
0008 ; 以下是任務管理器
0008 ; ----------------------------------*/
0008 ; system();//系統后臺服務程序
0008 04D0 rcall _system
000A .dbline 55
000A ; taskmgr();//任務管理程序
000A 24D1 rcall _taskmgr
000C .dbline 56
000C ; system_clock();
000C 4BD1 rcall _system_clock
000E .dbline -2
000E L1:
000E 00D0 rcall pop_lset
0010 .dbline 0 ; func end
0010 1895 reti
0012 .dbend
0012 .dbfunc e system _system fV
.even
0012 _system::
0012 00D0 rcall push_gset2
0014 2297 sbiw R28,2
0016 .dbline -1
0016 .dbline 63
0016 ; }
0016 ;
0016 ; /*----------------------------------
0016 ; 系統后臺服務程序
0016 ; -----------------------------------*/
0016 ; void system(void)
0016 ; {
0016 .dbline 64
0016 ; if((sc_key_delay==0)&&(keyboard!=0)){sc_key_delay=50;}
0016 20902300 lds R2,_sc_key_delay
001A 30902400 lds R3,_sc_key_delay+1
001E 2220 tst R2
0020 61F4 brne L3
0022 3320 tst R3
0024 51F4 brne L3
0026 X0:
0026 20903500 lds R2,_keyboard
002A 2220 tst R2
002C 31F0 breq L3
002E .dbline 64
002E .dbline 64
002E 82E3 ldi R24,50
0030 90E0 ldi R25,0
0032 90932400 sts _sc_key_delay+1,R25
0036 80932300 sts _sc_key_delay,R24
003A .dbline 64
003A L3:
003A .dbline 65
003A ; if(sc_key_delay==1){keyboard=0;}
003A 80912300 lds R24,_sc_key_delay
003E 90912400 lds R25,_sc_key_delay+1
0042 8130 cpi R24,1
0044 E0E0 ldi R30,0
0046 9E07 cpc R25,R30
0048 19F4 brne L5
004A .dbline 65
004A .dbline 65
004A 2224 clr R2
004C 20923500 sts _keyboard,R2
0050 .dbline 65
0050 L5:
0050 .dbline 66
0050 ; if(sc_key==0)
0050 20903100 lds R2,_sc_key
0054 30903200 lds R3,_sc_key+1
0058 2220 tst R2
005A 69F4 brne L7
005C 3320 tst R3
005E 59F4 brne L7
0060 X1:
0060 .dbline 67
0060 ; {keyboard=key(keyboard);sc_key=16;}//鍵盤掃描間隔為32*8ms
0060 .dbline 67
0060 00913500 lds R16,_keyboard
0064 00D0 rcall _key
0066 00933500 sts _keyboard,R16
006A .dbline 67
006A 80E1 ldi R24,16
006C 90E0 ldi R25,0
006E 90933200 sts _sc_key+1,R25
0072 80933100 sts _sc_key,R24
0076 .dbline 67
0076 L7:
0076 .dbline 69
0076 ;
0076 ; if(sc_lcd_write==0)
0076 20902700 lds R2,_sc_lcd_write
007A 30902800 lds R3,_sc_lcd_write+1
007E 2220 tst R2
0080 89F4 brne L9
0082 3320 tst R3
0084 79F4 brne L9
0086 X2:
0086 .dbline 70
0086 ; {
0086 .dbline 71
0086 ; desktop1();desktop2();desktop3();desktop4();
0086 D0D4 rcall _desktop1
0088 .dbline 71
0088 77D4 rcall _desktop2
008A .dbline 71
008A BDD5 rcall _desktop3
008C .dbline 71
008C D0D6 rcall _desktop4
008E .dbline 72
008E ; Capacitance_setting();discharge_speed();
008E 52D2 rcall _Capacitance_setting
0090 .dbline 72
0090 EED2 rcall _discharge_speed
0092 .dbline 73
0092 ; record_setting();welcome();
0092 7CD3 rcall _record_setting
0094 .dbline 73
0094 02D2 rcall _welcome
0096 .dbline 74
0096 ; LCD_write_new();
0096 00D0 rcall _LCD_write_new
0098 .dbline 75
0098 ; sc_lcd_write=32;
0098 80E2 ldi R24,32
009A 90E0 ldi R25,0
009C 90932800 sts _sc_lcd_write+1,R25
00A0 80932700 sts _sc_lcd_write,R24
00A4 .dbline 76
00A4 ; }
00A4 L9:
00A4 .dbline 77
00A4 ; if(BT1_I_SET)
00A4 20901000 lds R2,_BT1_I_SET
00A8 30901100 lds R3,_BT1_I_SET+1
00AC 2220 tst R2
00AE 19F4 brne X3
00B0 3320 tst R3
00B2 09F4 brne X10
00B4 A1C0 rjmp L11
00B6 X10:
00B6 X3:
00B6 .dbline 78
00B6 ; {
00B6 .dbline 79
00B6 ; if(sc_bt1==0)
00B6 20902F00 lds R2,_sc_bt1
00BA 30903000 lds R3,_sc_bt1+1
00BE 2220 tst R2
00C0 11F5 brne L13
00C2 3320 tst R3
00C4 01F5 brne L13
00C6 X4:
00C6 .dbline 80
00C6 ; {BT1_mAh+=BT1_I;sc_bt1=450;}//容量統計,每3.6秒計一次
00C6 .dbline 80
00C6 20901C00 lds R2,_BT1_I
00CA 30901D00 lds R3,_BT1_I+1
00CE 4424 clr R4
00D0 5524 clr R5
00D2 80900C00 lds R8,_BT1_mAh+2
00D6 90900D00 lds R9,_BT1_mAh+2+1
00DA 60900A00 lds R6,_BT1_mAh
00DE 70900B00 lds R7,_BT1_mAh+1
00E2 620C add R6,R2
00E4 731C adc R7,R3
00E6 841C adc R8,R4
00E8 951C adc R9,R5
00EA 70920B00 sts _BT1_mAh+1,R7
00EE 60920A00 sts _BT1_mAh,R6
00F2 90920D00 sts _BT1_mAh+2+1,R9
00F6 80920C00 sts _BT1_mAh+2,R8
00FA .dbline 80
00FA 82EC ldi R24,450
00FC 91E0 ldi R25,1
00FE 90933000 sts _sc_bt1+1,R25
0102 80932F00 sts _sc_bt1,R24
0106 .dbline 80
0106 L13:
0106 .dbline 81
0106 ; if(sc_discharge==0)
0106 20902B00 lds R2,_sc_discharge
010A 30902C00 lds R3,_sc_discharge+1
010E 2220 tst R2
0110 01F5 brne L15
0112 3320 tst R3
0114 F1F4 brne L15
0116 X5:
0116 .dbline 82
0116 ; {BT1_time++;sc_discharge=125;}//放電時間統計
0116 .dbline 82
0116 41E0 ldi R20,1
0118 50E0 ldi R21,0
011A 60E0 ldi R22,0
011C 70E0 ldi R23,0
011E 40900800 lds R4,_BT1_time+2
0122 50900900 lds R5,_BT1_time+2+1
0126 20900600 lds R2,_BT1_time
012A 30900700 lds R3,_BT1_time+1
012E 240E add R2,R20
0130 351E adc R3,R21
0132 461E adc R4,R22
0134 571E adc R5,R23
0136 30920700 sts _BT1_time+1,R3
013A 20920600 sts _BT1_time,R2
013E 50920900 sts _BT1_time+2+1,R5
0142 40920800 sts _BT1_time+2,R4
0146 .dbline 82
0146 8DE7 ldi R24,125
0148 90E0 ldi R25,0
014A 90932C00 sts _sc_discharge+1,R25
014E 80932B00 sts _sc_discharge,R24
0152 .dbline 82
0152 L15:
0152 .dbline 83
0152 ; if(sc_eeprom==0)
0152 20902900 lds R2,_sc_eeprom
0156 30902A00 lds R3,_sc_eeprom+1
015A 2220 tst R2
015C 19F5 brne L17
015E 3320 tst R3
0160 09F5 brne L17
0162 X6:
0162 .dbline 84
0162 ; {
0162 .dbline 85
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -