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

📄 discharger.lis

📁 单片机 mega16L 电池放电器源码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module discharger.c
                        .area data(ram, con, rel)
 0000           _Menu::
 0000                   .blkw 1
                        .area idata
 0000 7A00              .word L1
                        .area data(ram, con, rel)
 0002                   .blkw 1
                        .area idata
 0002 6E00              .word L2
                        .area data(ram, con, rel)
 0004                   .blkw 1
                        .area idata
 0004 6900              .word L3
                        .area data(ram, con, rel)
 0006                   .blkw 1
                        .area idata
 0006 6200              .word L4
                        .area data(ram, con, rel)
 0008                   .blkw 1
                        .area idata
 0008 5C00              .word L5
                        .area data(ram, con, rel)
 000A                   .blkw 1
                        .area idata
 000A 5600              .word L6
                        .area data(ram, con, rel)
 000C                   .blkw 1
                        .area idata
 000C 5400              .word L7
                        .area data(ram, con, rel)
 000E                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.c
 000E                   .dbsym e Menu _Menu A[14:7]pkc
 000E           _sec::
 000E                   .blkb 1
                        .area idata
 000E 00                .byte 0
                        .area data(ram, con, rel)
 000F                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.c
 000F                   .dbsym e sec _sec c
 000F           _min::
 000F                   .blkb 1
                        .area idata
 000F 00                .byte 0
                        .area data(ram, con, rel)
 0010                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.c
 0010                   .dbsym e min _min c
 0010           _hour::
 0010                   .blkb 1
                        .area idata
 0010 00                .byte 0
                        .area data(ram, con, rel)
 0011                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.c
 0011                   .dbsym e hour _hour c
 0011           _RunTab::
 0011                   .blkb 1
                        .area idata
 0011 01                .byte 1
                        .area data(ram, con, rel)
 0012                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.c
 0012                   .dbsym e RunTab _RunTab c
 0012           _mAh_set::
 0012                   .blkb 2
                        .area idata
 0012 E803              .word 1000
                        .area data(ram, con, rel)
 0014                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.c
 0014                   .dbsym e mAh_set _mAh_set i
 0014           _speed::
 0014                   .blkb 1
                        .area idata
 0014 0A                .byte 10
                        .area data(ram, con, rel)
 0015                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.c
 0015                   .dbsym e speed _speed c
                        .area vector(rom, abs)
                        .org 8
 0008 00C0              rjmp _timer2_ovf_isr
                        .area data(ram, con, rel)
 0015                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\刻录的\电子技术\项目\电池放电器\软件V2.0\discharger.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 63
 0002                   .dbline 64
 0002 86E0              ldi R24,6
 0004 84BD              out 0x24,R24
 0006                   .dbline 65
 0006 17D1              rcall _system_clock
 0008                   .dbline 66
 0008 0DD0              rcall _system
 000A                   .dbline 68
 000A 20901100          lds R2,_RunTab
 000E 30903100          lds R3,_RunTab_old
 0012 3214              cp R3,R2
 0014 29F0              breq L9
 0016                   .dbline 69
 0016                   .dbline 69
 0016 00D0              rcall _LCD_clear
 0018                   .dbline 69
 0018 20901100          lds R2,_RunTab
 001C 20923100          sts _RunTab_old,R2
 0020                   .dbline 69
 0020           L9:
 0020                   .dbline -2
 0020           L8:
 0020 00D0              rcall pop_lset
 0022                   .dbline 0 ; func end
 0022 1895              reti
 0024                   .dbend
 0024                   .dbfunc e system _system fV
                        .even
 0024           _system::
 0024 00D0              rcall push_gset2
 0026 2297              sbiw R28,2
 0028                   .dbline -1
 0028                   .dbline 75
 0028           ; //项目名称:电池容量测试器V2.0
 0028           ; //功能描述:通过对电池放电,测量出电池的容量
 0028           ; //外部模块:1602LCD
 0028           ; //开发人员:李卓生
 0028           ; //开发日期:2006年2月16日
 0028           ; //最后修正:  2006年2月27日
 0028           ; //*********************************************************
 0028           ; #include <iom8v.h>
 0028           ; #include <macros.h>
 0028           ; #include "discharge.h"
 0028           ; #include "LCD_1602.h"
 0028           ; #include "eeprom.h"
 0028           ; 
 0028           ; #define   key_delay                 64
 0028           ; #define   keyboard_scan         16
 0028           ; #define   lcd_write                   32
 0028           ; #define   timer_dealy              125
 0028           ; 
 0028           ; const char *Menu[]=//系统菜单
 0028           ; {"Menu","Discharging","D882","Record","Clear","USART","#"};
 0028           ; 
 0028           ; unsigned char path_top,path;
 0028           ; //系统参数
 0028           ; unsigned char sec=0;
 0028           ; unsigned char min=0;
 0028           ; unsigned char hour=0;
 0028           ; unsigned char keyboard;
 0028           ; unsigned char RunTab=1;
 0028           ; unsigned char RunTab_old;
 0028           ; 
 0028           ; unsigned char sc_timer_dealy,sc_keyboard_scan,sc_lcd_write,sc_key_delay;//定时小于255*31.25ms的
 0028           ; unsigned int sc_bt1,sc_bt_ctrl,sc_eeprom,sc_discharge,sc_bt1_record,sc_bt1_v_temp;
 0028           ; /*//LED灯控制参数
 0028           ;   unsigned int G_led,G_led_cy,G_led_ht;
 0028           ;   unsigned int sc_G_cy,sc_G_ht;
 0028           ;   
 0028           ;   unsigned int R_led,R_led_cy,R_led_ht;
 0028           ;   unsigned int sc_R_cy,sc_R_ht;
 0028           ;   */
 0028           ;    // discharge
 0028           ;   unsigned char BT1_state;
 0028           ;   unsigned int BT1_V;
 0028           ;   unsigned int BT1_I;
 0028           ;   unsigned int BT1_T;
 0028           ;   unsigned int BT1_V_num;
 0028           ;   unsigned int BT1_V_num_temp;
 0028           ;   unsigned int bt1_v_temp;
 0028           ;   unsigned int bt1_v_temp_1;
 0028           ;   
 0028           ;   unsigned int BT1_I_SET;
 0028           ;   unsigned int PWM;
 0028           ;   unsigned long BT1_mAh;
 0028           ;   unsigned long BT1_time;
 0028           ;   unsigned int mAh;
 0028           ;   unsigned int D882_P;
 0028           ;   
 0028           ;   unsigned int mAh_set=1000;
 0028           ;   unsigned char speed=10;
 0028           ;   unsigned int BT1_P;
 0028           ; //T2溢出中断服务程序 8ms
 0028           ; #pragma interrupt_handler timer2_ovf_isr:5
 0028           ; void timer2_ovf_isr(void)
 0028           ; {
 0028           ;  TCNT2 = 0x06;//重装计时值0xFF=32us  0x00=8.192ms
 0028           ;  system_clock();//系统定时器
 0028           ;  system();//系统后台服务程序
 0028           ;  //Green_led(); Red_led();
 0028           ;   if(RunTab_old!=RunTab)
 0028           ;          {LCD_clear();RunTab_old=RunTab;}
 0028           ; }
 0028           ; /*----------------------------------
 0028           ;     系统后台服务程序
 0028           ; -----------------------------------*/
 0028           ; void system(void)
 0028           ; { 
 0028                   .dbline 76
 0028           ;  if(sc_timer_dealy==0){timer(); sc_timer_dealy=timer_dealy;}
 0028 20903000          lds R2,_sc_timer_dealy
 002C 2220              tst R2
 002E 21F4              brne L12
 0030                   .dbline 76
 0030                   .dbline 76
 0030 68D9              rcall _timer
 0032                   .dbline 76
 0032 8DE7              ldi R24,125
 0034 80933000          sts _sc_timer_dealy,R24
 0038                   .dbline 76
 0038           L12:
 0038                   .dbline 77
 0038           ;  if((sc_key_delay==0)&&(keyboard!=0)){sc_key_delay=key_delay;}
 0038 20902D00          lds R2,_sc_key_delay
 003C 2220              tst R2
 003E 39F4              brne L14
 0040 20903200          lds R2,_keyboard
 0044 2220              tst R2
 0046 19F0              breq L14
 0048                   .dbline 77
 0048                   .dbline 77
 0048 80E4              ldi R24,64
 004A 80932D00          sts _sc_key_delay,R24
 004E                   .dbline 77
 004E           L14:
 004E                   .dbline 78
 004E           ;  if(sc_key_delay==1){keyboard=0;}
 004E 80912D00          lds R24,_sc_key_delay
 0052 8130              cpi R24,1
 0054 19F4              brne L16
 0056                   .dbline 78
 0056                   .dbline 78
 0056 2224              clr R2
 0058 20923200          sts _keyboard,R2
 005C                   .dbline 78
 005C           L16:
 005C                   .dbline 79
 005C           ;  if(sc_keyboard_scan==0)
 005C 20902F00          lds R2,_sc_keyboard_scan
 0060 2220              tst R2
 0062 41F4              brne L18
 0064                   .dbline 80
 0064           ;    {keyboard=key(keyboard);sc_keyboard_scan=keyboard_scan;}
 0064                   .dbline 80
 0064 00913200          lds R16,_keyboard
 0068 00D0              rcall _key
 006A 00933200          sts _keyboard,R16
 006E                   .dbline 80
 006E 80E1              ldi R24,16
 0070 80932F00          sts _sc_keyboard_scan,R24
 0074                   .dbline 80
 0074           L18:
 0074                   .dbline 81
 0074           ;  if(sc_lcd_write==0)
 0074 20902E00          lds R2,_sc_lcd_write
 0078 2220              tst R2
 007A 29F4              brne L20
 007C                   .dbline 82
 007C           ;    {Run_Turn();LCD_write_new();sc_lcd_write=lcd_write;}
 007C                   .dbline 82
 007C 63D1              rcall _Run_Turn
 007E                   .dbline 82
 007E 00D0              rcall _LCD_write_new
 0080                   .dbline 82
 0080 80E2              ldi R24,32
 0082 80932E00          sts _sc_lcd_write,R24
 0086                   .dbline 82
 0086           L20:
 0086                   .dbline 84
 0086           ; 
 0086           ;  if((BT1_I_SET)/*&&(sc_bt1_record==0)*/)
 0086 20901000          lds R2,_BT1_I_SET
 008A 30901100          lds R3,_BT1_I_SET+1
 008E 2220              tst R2
 0090 19F4              brne X0
 0092 3320              tst R3
 0094 09F4              brne X7
 0096 A2C0              rjmp L22
 0098           X7:
 0098           X0:
 0098                   .dbline 85
 0098           ;       {
 0098                   .dbline 86
 0098           ;  if(sc_bt1==0)
 0098 20902B00          lds R2,_sc_bt1
 009C 30902C00          lds R3,_sc_bt1+1
 00A0 2220              tst R2
 00A2 11F5              brne L24
 00A4 3320              tst R3
 00A6 01F5              brne L24
 00A8           X1:
 00A8                   .dbline 87
 00A8           ;   {BT1_mAh+=BT1_I;sc_bt1=450;}//容量统计,每3.6秒计一次
 00A8                   .dbline 87
 00A8 20901C00          lds R2,_BT1_I
 00AC 30901D00          lds R3,_BT1_I+1
 00B0 4424              clr R4
 00B2 5524              clr R5
 00B4 80900C00          lds R8,_BT1_mAh+2
 00B8 90900D00          lds R9,_BT1_mAh+2+1
 00BC 60900A00          lds R6,_BT1_mAh
 00C0 70900B00          lds R7,_BT1_mAh+1
 00C4 620C              add R6,R2
 00C6 731C              adc R7,R3
 00C8 841C              adc R8,R4
 00CA 951C              adc R9,R5
 00CC 70920B00          sts _BT1_mAh+1,R7
 00D0 60920A00          sts _BT1_mAh,R6
 00D4 90920D00          sts _BT1_mAh+2+1,R9
 00D8 80920C00          sts _BT1_mAh+2,R8
 00DC                   .dbline 87
 00DC 82EC              ldi R24,450
 00DE 91E0              ldi R25,1
 00E0 90932C00          sts _sc_bt1+1,R25
 00E4 80932B00          sts _sc_bt1,R24
 00E8                   .dbline 87
 00E8           L24:
 00E8                   .dbline 88
 00E8           ;  if(sc_discharge==0)
 00E8 20902500          lds R2,_sc_discharge
 00EC 30902600          lds R3,_sc_discharge+1
 00F0 2220              tst R2
 00F2 01F5              brne L26
 00F4 3320              tst R3
 00F6 F1F4              brne L26
 00F8           X2:
 00F8                   .dbline 89
 00F8           ;   {BT1_time++;sc_discharge=125;}//放电时间统计
 00F8                   .dbline 89
 00F8 41E0              ldi R20,1
 00FA 50E0              ldi R21,0
 00FC 60E0              ldi R22,0
 00FE 70E0              ldi R23,0
 0100 40900800          lds R4,_BT1_time+2
 0104 50900900          lds R5,_BT1_time+2+1
 0108 20900600          lds R2,_BT1_time
 010C 30900700          lds R3,_BT1_time+1

⌨️ 快捷键说明

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