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

📄 main.lis

📁 单片机 mega16L 电池放电器源码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .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 + -