📄 210.s
字号:
; if(j == 8)
cpi R22,8
brne L40
.dbline 154
; {
.dbline 155
; j = 0;
clr R22
.dbline 156
; data++;
subi R20,255 ; offset = 1
sbci R21,255
.dbline 157
; len--;
dec R10
.dbline 158
; }
L40:
.dbline 159
; }
L37:
.dbline 160
L30:
.dbline 133
tst R10
brne L29
.dbline 161
; }
; return(crc);
lds R16,_crc
.dbline -2
L28:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l i 1 c
.dbsym r j 22 c
.dbsym r len 10 c
.dbsym r data 20 pc
.dbend
.dbfunc e addr_f _addr_f fV
; j -> <dead>
; i -> <dead>
.even
_addr_f::
.dbline -1
.dbline 168
; }
;
;
;
; //地址计算
; void addr_f(void)
; {
.dbline 171
; unsigned char i;
; unsigned char j; //data[0]data[1]地址
; data[0]=EEPROM_read(0);
clr R16
rcall _EEPROM_read
sts _data,R16
.dbline 172
; data[1]=EEPROM_read(1); //EEPORM内地址,最大FFFF
ldi R16,1
rcall _EEPROM_read
sts _data+1,R16
.dbline 173
; data[2]=0;
clr R2
sts _data+2,R2
.dbline 174
; if(GetADC()<579) data[2]|=0x80; //2.5/(3.3/13.3)/(1.1/1024)=579
rcall _GetADC
cpi R16,67
ldi R30,2
cpc R17,R30
brsh L45
.dbline 174
lds R24,_data+2
ori R24,128
sts _data+2,R24
L45:
.dbline 175
; if(PINBS) data[2]|=0x40;
lds R2,_PINBS
tst R2
breq L48
.dbline 175
lds R24,_data+2
ori R24,64
sts _data+2,R24
L48:
.dbline 176
; data[2]+=CRC3(data,3);
ldi R18,3
ldi R16,<_data
ldi R17,>_data
rcall _CRC3
lds R2,_data+2
add R2,R16
sts _data+2,R2
.dbline -2
L42:
.dbline 0 ; func end
ret
.dbsym l j 1 c
.dbsym l i 1 c
.dbend
.dbfunc e data_1 _data_1 fV
.even
_data_1::
.dbline -1
.dbline 180
; }
; //要发送的数据1
; void data_1(void)
; {
.dbline 181
; RF_OFF;
cbi 0x18,2
.dbline 182
; del(700);
ldi R16,700
ldi R17,2
rcall _del
.dbline 183
; RF_ON;
sbi 0x18,2
.dbline 184
; del(350);
ldi R16,350
ldi R17,1
rcall _del
.dbline -2
L52:
.dbline 0 ; func end
ret
.dbend
.dbfunc e data_0 _data_0 fV
.even
_data_0::
.dbline -1
.dbline 188
; }
; //要发送的数据0
; void data_0(void)
; {
.dbline 189
; RF_OFF;
cbi 0x18,2
.dbline 190
; del(350);
ldi R16,350
ldi R17,1
rcall _del
.dbline 191
; RF_ON;
sbi 0x18,2
.dbline 192
; del(700);
ldi R16,700
ldi R17,2
rcall _del
.dbline -2
L53:
.dbline 0 ; func end
ret
.dbend
.dbfunc e rf _rf fV
; i -> R20
; j -> R10
; dataf -> R22,R23
.even
_rf::
rcall push_gset3
mov R22,R16
mov R23,R17
.dbline -1
.dbline 196
; }
; //发送数据
; void rf (unsigned char *dataf)
; {
.dbline 199
; unsigned char i;
; unsigned char j;
; RF_ON; //起始位
sbi 0x18,2
.dbline 200
; del(350);
ldi R16,350
ldi R17,1
rcall _del
.dbline 201
; for(i=0;i<3;i++)
clr R20
rjmp L58
L55:
.dbline 202
; { for(j=0;j<8;j++)
.dbline 202
clr R10
rjmp L62
L59:
.dbline 203
; {
.dbline 204
; if(*dataf & (0x80>>j)) //如果该位为1
mov R18,R10
clr R19
ldi R16,128
ldi R17,0
rcall asr16
mov R30,R22
mov R31,R23
ldd R2,z+0
clr R3
and R2,R16
and R3,R17
tst R2
brne X1
tst R3
breq L63
X1:
.dbline 205
; data_1();
rcall _data_1
rjmp L64
L63:
.dbline 206
; else data_0();
rcall _data_0
L64:
.dbline 207
L60:
.dbline 202
inc R10
L62:
.dbline 202
mov R24,R10
cpi R24,8
brlo L59
.dbline 208
subi R22,255 ; offset = 1
sbci R23,255
.dbline 209
L56:
.dbline 201
inc R20
L58:
.dbline 201
cpi R20,3
brlo L55
.dbline 210
; }
; dataf++;
; }
; RF_OFF;
cbi 0x18,2
.dbline -2
L54:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 10 c
.dbsym r dataf 22 pc
.dbend
.area vector(rom, abs)
.org 4
rjmp _PCINT0_ovf_isr
.area text(rom, con, rel)
.dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
.dbfunc e PCINT0_ovf_isr _PCINT0_ovf_isr fV
.even
_PCINT0_ovf_isr::
st -y,R0
in R0,0x3f
st -y,R0
.dbline -1
.dbline 215
; }
;
; #pragma interrupt_handler PCINT0_ovf_isr:03
; void PCINT0_ovf_isr(void) //中断程序
; {
.dbline 216
; NOP();
nop
.dbline -2
L65:
ld R0,y+
out 0x3f,R0
ld R0,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fV
; i -> R20
.even
_main::
.dbline -1
.dbline 220
; }
; //主函数!不用解释了
; void main()
; {
.dbline 224
;
; unsigned char i;
; //以下初始化硬件
; port_init(); //端口初始化
rcall _port_init
.dbline 225
; adc_init();
rcall _adc_init
.dbline 227
; // watchdog_init();//初始化看门狗
; SEI(); //re-enable interrupts
sei
.dbline 228
; GetADC();
rcall _GetADC
.dbline 229
; delay(10);
ldi R16,10
ldi R17,0
rcall _delay
rjmp L68
L67:
.dbline 231
; while(1)
; {
.dbline 232
; if((!(PINB&0x08))||(!(PINB&0x01)))
sbis 0x16,3
rjmp L72
sbic 0x16,0
rjmp L70
L72:
.dbline 233
; {
.dbline 234
; WDR();
wdr
.dbline 235
; EN_ON;
sbi 0x18,1
.dbline 236
; addr_f();
rcall _addr_f
.dbline 237
; for(i=0;i<50;i++)
clr R20
rjmp L76
L73:
.dbline 238
.dbline 239
lds R2,_data
sts _dataf,R2
.dbline 240
lds R2,_data+1
sts _dataf+1,R2
.dbline 241
lds R2,_data+2
sts _dataf+2,R2
.dbline 242
ldi R16,<_dataf
ldi R17,>_dataf
rcall _rf
.dbline 243
ldi R16,3
ldi R17,0
rcall _delay
.dbline 244
L74:
.dbline 237
inc R20
L76:
.dbline 237
cpi R20,50
brlo L73
.dbline 245
; {
; dataf[0]=data[0];
; dataf[1]=data[1];
; dataf[2]=data[2];
; rf(dataf);
; delay(3);
; }
; EN_OFF;
cbi 0x18,1
.dbline 246
; }
L70:
.dbline 247
; GIMSK|=(1<<PCIE);
in R24,0x3b
ori R24,32
out 0x3b,R24
.dbline 248
; PCMSK|=(1<<PCINT0);
sbi 0x15,0
.dbline 249
; PCMSK|=(1<<PCINT3);
sbi 0x15,3
.dbline 250
; ADCSRA=0;
clr R2
out 0x6,R2
.dbline 251
; MCUCR |= BIT(SM1);
in R24,0x35
ori R24,16
out 0x35,R24
.dbline 253
;
; MCUCR |= BIT(SE);
in R24,0x35
ori R24,32
out 0x35,R24
.dbline 255
;
; asm("sleep\n"); //进入睡眠状态
sleep
.dbline 256
; NOP();
nop
.dbline 257
; MCUCR=0;
out 0x35,R2
.dbline 258
; delay(2);
ldi R16,2
ldi R17,0
rcall _delay
.dbline 259
; if(!(PINB&0x08)) PINBS=1;
sbic 0x16,3
rjmp L81
.dbline 259
ldi R24,1
sts _PINBS,R24
rjmp L82
L81:
.dbline 260
; else PINBS=0;
clr R2
sts _PINBS,R2
L82:
.dbline 261
clr R2
out 0x3b,R2
.dbline 262
rcall _adc_init
.dbline 263
L68:
.dbline 230
rjmp L67
X2:
.dbline -2
L66:
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\abol\file\EMD\programme\EM-PB-210\210.c
_dataf::
.blkb 3
.dbsym e dataf _dataf A[3:3]c
_data::
.blkb 3
.dbsym e data _data A[3:3]c
_DECODER_CODE0::
.blkb 1
.dbsym e DECODER_CODE0 _DECODER_CODE0 c
_DECODER_CODE1::
.blkb 1
.dbsym e DECODER_CODE1 _DECODER_CODE1 c
_PINBS::
.blkb 1
.dbsym e PINBS _PINBS c
_flagl::
.blkb 1
.dbsym e flagl _flagl c
_j::
.blkb 1
.dbsym e j _j c
_i::
.blkb 1
.dbsym e i _i c
_crc::
.blkb 1
.dbsym e crc _crc c
_aa::
.blkb 2
.dbsym e aa _aa i
_ai::
.blkb 2
.dbsym e ai _ai i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -