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

📄 test.lis

📁 a good program for battery charge,only for reference
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0050 2A92              st -y,R2
 0052                   .dbline -1
 0052                   .dbline 76
 0052           ;  //compare occured TCNT1=OCR1A
 0052           ; }
 0052           ; 
 0052           ; #pragma interrupt_handler timer1_ovf_isr:14
 0052           ; void timer1_ovf_isr(void)
 0052           ; {
 0052                   .dbline 77
 0052           ;  TCNT1H = 0xF0;                //reload counter high value
 0052 80EF              ldi R24,240
 0054 80938500          sts 133,R24
 0058                   .dbline 78
 0058           ;  TCNT1L = 0xBE;                //reload counter low value
 0058 8EEB              ldi R24,190
 005A 80938400          sts 132,R24
 005E                   .dbline 80
 005E           ; 
 005E           ;    if((temp&(1<<plus_charge))==0x10) //为第一步脉冲充电做准备
 005E 80911600          lds R24,_temp
 0062 8071              andi R24,16
 0064 8031              cpi R24,16
 0066 31F4              brne L4
 0068                   .dbline 81
 0068           ;    {temp &= ~(1<<plus_charge);}
 0068                   .dbline 81
 0068 80911600          lds R24,_temp
 006C 8F7E              andi R24,239
 006E 80931600          sts _temp,R24
 0072                   .dbline 81
 0072 05C0              rjmp L5
 0074           L4:
 0074                   .dbline 82
 0074           ;    else{temp |= (1<<plus_charge);}                                                                    
 0074                   .dbline 82
 0074 80911600          lds R24,_temp
 0078 8061              ori R24,16
 007A 80931600          sts _temp,R24
 007E                   .dbline 82
 007E           L5:
 007E                   .dbline 85
 007E           ;    
 007E           ;    
 007E           ;   Second_count_1++;
 007E 80911100          lds R24,_Second_count_1
 0082 90911200          lds R25,_Second_count_1+1
 0086 0196              adiw R24,1
 0088 90931200          sts _Second_count_1+1,R25
 008C 80931100          sts _Second_count_1,R24
 0090                   .dbline 86
 0090           ;   if(Second_count_1==120)      //如果有改动,请改回原来值60
 0090 8837              cpi R24,120
 0092 E0E0              ldi R30,0
 0094 9E07              cpc R25,R30
 0096 79F4              brne L6
 0098                   .dbline 87
 0098           ;       {
 0098                   .dbline 88
 0098           ;       Second_count_2++;
 0098 80910F00          lds R24,_Second_count_2
 009C 90911000          lds R25,_Second_count_2+1
 00A0 0196              adiw R24,1
 00A2 90931000          sts _Second_count_2+1,R25
 00A6 80930F00          sts _Second_count_2,R24
 00AA                   .dbline 89
 00AA           ;       Second_count_1=0;
 00AA 2224              clr R2
 00AC 3324              clr R3
 00AE 30921200          sts _Second_count_1+1,R3
 00B2 20921100          sts _Second_count_1,R2
 00B6                   .dbline 90
 00B6           ;       }
 00B6           L6:
 00B6                   .dbline 92
 00B6           ;       
 00B6           ;   Second_count_3++;
 00B6 80910D00          lds R24,_Second_count_3
 00BA 90910E00          lds R25,_Second_count_3+1
 00BE 0196              adiw R24,1
 00C0 90930E00          sts _Second_count_3+1,R25
 00C4 80930D00          sts _Second_count_3,R24
 00C8                   .dbline 93
 00C8           ;   if(Second_count_3==120)      //如果有改动,请改回原来值60
 00C8 8837              cpi R24,120
 00CA E0E0              ldi R30,0
 00CC 9E07              cpc R25,R30
 00CE 79F4              brne L8
 00D0                   .dbline 94
 00D0           ;       {
 00D0                   .dbline 95
 00D0           ;       Second_count_4++;
 00D0 80910B00          lds R24,_Second_count_4
 00D4 90910C00          lds R25,_Second_count_4+1
 00D8 0196              adiw R24,1
 00DA 90930C00          sts _Second_count_4+1,R25
 00DE 80930B00          sts _Second_count_4,R24
 00E2                   .dbline 96
 00E2           ;       Second_count_3=0;       
 00E2 2224              clr R2
 00E4 3324              clr R3
 00E6 30920E00          sts _Second_count_3+1,R3
 00EA 20920D00          sts _Second_count_3,R2
 00EE                   .dbline 97
 00EE           ;       }
 00EE           L8:
 00EE                   .dbline 99
 00EE           ;       
 00EE           ;                        if((temp&(1<<LED_yes))==0x08)
 00EE 80911600          lds R24,_temp
 00F2 8870              andi R24,8
 00F4 8830              cpi R24,8
 00F6 A1F4              brne L10
 00F8                   .dbline 100
 00F8           ;                        {                              
 00F8                   .dbline 101
 00F8           ;                               _nop_();                          
 00F8 0000              nop
 00FA                   .dbline 102
 00FA           ;                 if((temp&(1<<LED_Indi))==0)
 00FA 20901600          lds R2,_temp
 00FE 22FC              sbrc R2,2
 0100 07C0              rjmp L12
 0102                   .dbline 103
 0102           ;                              {PORTD &= ~(1<<Red);             
 0102                   .dbline 103
 0102 5A98              cbi 0xb,2
 0104                   .dbline 104
 0104           ;                                   PORTD &= ~(1<<Green);       //绿色指示灯灭
 0104 5B98              cbi 0xb,3
 0106                   .dbline 105
 0106           ;                               temp |= (1<<LED_Indi);}
 0106 822D              mov R24,R2
 0108 8460              ori R24,4
 010A 80931600          sts _temp,R24
 010E                   .dbline 105
 010E 09C0              rjmp L11
 0110           L12:
 0110                   .dbline 107
 0110           ;                   else                        
 0110           ;                               {PORTD |= (1<<Red);
 0110                   .dbline 107
 0110 5A9A              sbi 0xb,2
 0112                   .dbline 108
 0112           ;                                        PORTD &= ~(1<<Green);  //绿色指示灯灭
 0112 5B98              cbi 0xb,3
 0114                   .dbline 109
 0114           ;                                    temp &= ~(1<<LED_Indi);     
 0114 80911600          lds R24,_temp
 0118 8B7F              andi R24,251
 011A 80931600          sts _temp,R24
 011E                   .dbline 110
 011E           ;                                }; 
 011E                   .dbline 110
 011E                   .dbline 111
 011E           ;                }                 
 011E 01C0              rjmp L11
 0120           L10:
 0120                   .dbline 113
 0120 0000              nop
 0122           L11:
 0122                   .dbline -2
 0122           L3:
 0122 2990              ld R2,y+
 0124 2FBE              out 0x3f,R2
 0126 E991              ld R30,y+
 0128 9991              ld R25,y+
 012A 8991              ld R24,y+
 012C 3990              ld R3,y+
 012E 2990              ld R2,y+
 0130                   .dbline 0 ; func end
 0130 1895              reti
 0132                   .dbend
 0132                   .dbfunc e adc_init _adc_init fV
                        .even
 0132           _adc_init::
 0132                   .dbline -1
 0132                   .dbline 117
 0132           ;                        else
 0132           ;                          _nop_();   
 0132           ; }
 0132           ; //ADC初始化
 0132           ; void adc_init(void)
 0132           ; {
 0132                   .dbline 118
 0132           ;  ADCSRA = 0x00;                 //设置前,先关闭ADC
 0132 2224              clr R2
 0134 20927A00          sts 122,R2
 0138                   .dbline 120
 0138           ;  //ADMUX =(1<<REFS0);   //选择内部AVCC为基准,单端输入口为ADC0
 0138           ;  ADMUX &= ~(1<<REFS0);
 0138 80917C00          lds R24,124
 013C 8F7B              andi R24,191
 013E 80937C00          sts 124,R24
 0142                   .dbline 121
 0142           ;  ADMUX &= ~(1<<REFS1);
 0142 80917C00          lds R24,124
 0146 8F77              andi R24,127
 0148 80937C00          sts 124,R24
 014C                   .dbline 122
 014C           ;  ACSR  =(1<<ACD);               //关闭模拟比较器,禁止位P148
 014C 80E8              ldi R24,128
 014E 80BF              out 0x30,R24
 0150                   .dbline 124
 0150           ;  //ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1) ;//ADC时钟64分频
 0150           ;  ADCSRA |= (1<<ADEN);
 0150 80917A00          lds R24,122
 0154 8068              ori R24,128
 0156 80937A00          sts 122,R24
 015A                   .dbline 125
 015A           ;  ADCSRA |= (1<<ADIE);
 015A 80917A00          lds R24,122
 015E 8860              ori R24,8
 0160 80937A00          sts 122,R24
 0164                   .dbline 126
 0164           ;  ADCSRA |= (1<<ADPS2);
 0164 80917A00          lds R24,122
 0168 8460              ori R24,4
 016A 80937A00          sts 122,R24
 016E                   .dbline 127
 016E           ;  ADCSRA |= (1<<ADPS1);
 016E 80917A00          lds R24,122
 0172 8260              ori R24,2
 0174 80937A00          sts 122,R24
 0178                   .dbline 128
 0178           ;  ADCSRA |= (1<<ADSC);
 0178 80917A00          lds R24,122
 017C 8064              ori R24,64
 017E 80937A00          sts 122,R24
 0182                   .dbline -2
 0182           L14:
 0182                   .dbline 0 ; func end
 0182 0895              ret
 0184                   .dbend
                        .area vector(rom, abs)
                        .org 42
 002A C2C0              rjmp _adc_isr
                        .area text(rom, con, rel)
 0184                   .dbfile E:\MYDATA~1\DIFAMO~1\soft_Difa\test.c
 0184                   .dbfunc e adc_isr _adc_isr fV
                        .even
 0184           _adc_isr::
 0184 2A92              st -y,R2
 0186 8A93              st -y,R24
 0188 9A93              st -y,R25
 018A 2FB6              in R2,0x3f
 018C 2A92              st -y,R2
 018E                   .dbline -1
 018E                   .dbline 133
 018E           ; }
 018E           ; //ADC完成中断
 018E           ; #pragma interrupt_handler adc_isr:22     
 018E           ; void adc_isr(void)
 018E           ; {
 018E                   .dbline 134
 018E           ;  adc_rel=ADC&0x3ff;
 018E 80917800          lds R24,120
 0192 90917900          lds R25,120+1
 0196 9370              andi R25,3
 0198 90931400          sts _adc_rel+1,R25
 019C 80931300          sts _adc_rel,R24
 01A0                   .dbline 138
 01A0           ;  //ADMUX=(1<<REFS0)|(adc_mux&0x0f);//选择内部AVCC为基准
 01A0           ;  //ADMUX=ADMUX |(adc_mux&0x0f);
 01A0           ;  //ADMUX |=(adc_mux&0x0f);
 01A0           ;  ADMUX=0;
 01A0 2224              clr R2
 01A2 20927C00          sts 124,R2
 01A6                   .dbline 139
 01A6           ;  ADMUX |=(adc_mux&0x0f);         
 01A6 80910A00          lds R24,_adc_mux
 01AA 8F70              andi R24,15
 01AC 20907C00          lds R2,124
 01B0 282A              or R2,R24
 01B2 20927C00          sts 124,R2
 01B6                   .dbline 140
 01B6           ;  ADCSRA|=(1<<ADSC);                             //启动AD转换
 01B6 80917A00          lds R24,122
 01BA 8064              ori R24,64
 01BC 80937A00          sts 122,R24
 01C0                   .dbline -2
 01C0           L15:
 01C0 2990              ld R2,y+
 01C2 2FBE              out 0x3f,R2
 01C4 9991              ld R25,y+
 01C6 8991              ld R24,y+
 01C8 2990              ld R2,y+
 01CA                   .dbline 0 ; func end
 01CA 1895              reti
 01CC                   .dbend
 01CC                   .dbfunc e Start_I2c _Start_I2c fV
                        .even
 01CC           _Start_I2c::
 01CC                   .dbline -1
 01CC                   .dbline 149
 01CC           ; }
 01CC           ; /*******************************************************************
 01CC           ;                      起动总线函数               
 01CC           ; 函数原型: void  Start_I2c();  
 01CC           ; 功能:       启动I2C总线,即发送I2C起始条件.
 01CC           ;   
 01CC           ; ********************************************************************/
 01CC           ; void Start_I2c()
 01CC           ; {
 01CC                   .dbline 150
 01CC           ;   PORTC |= (1<<SDA);  
 01CC 449A              sbi 0x8,4
 01CE                   .dbline 151
 01CE           ;   _nop_();
 01CE 0000              nop
 01D0                   .dbline 152
 01D0           ;   PORTC |= (1<<SCL);
 01D0 459A              sbi 0x8,5
 01D2                   .dbline 153
 01D2           ;   _nop_();    
 01D2 0000              nop
 01D4                   .dbline 154
 01D4           ;   _nop_();
 01D4 0000              nop
 01D6                   .dbline 155
 01D6           ;   _nop_();
 01D6 0000              nop

⌨️ 快捷键说明

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