📄 test.lis
字号:
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 + -