📄 init.s
字号:
.dbline 188
; if ((LO_COUNT_SAVE>MAXDURATION)||(LO_COUNT_SAVE==0))//如果低电平大于限定值
ldi R30,<_MAXDURATION
ldi R31,>_MAXDURATION
lpm R30,Z
lds R2,_LO_COUNT_SAVE
cp R30,R2
brlo L40
tst R2
brne L38
L40:
.dbline 189
; {//3-1
.dbline 190
; BITCOUNTER=CODELANGTH;//代码是错误的
ldi R30,<_CODELANGTH
ldi R31,>_CODELANGTH
lpm R30,Z
sts _BITCOUNTER,R30
.dbline 191
; data[0]=0;
clr R2
sts _data,R2
.dbline 192
; data[1]=0;
sts _data+1,R2
.dbline 193
; data[2]=0;
sts _data+2,R2
.dbline 194
; return;//跳出中断
rjmp L20
L38:
.dbline 196
; }//3-1
; }//3
.dbline 197
; if (HI_COUNT_SAVE<LO_COUNT_SAVE)//为1的数据存贮
lds R2,_LO_COUNT_SAVE
lds R3,_HI_COUNT_SAVE
cp R3,R2
brlo X6
rjmp L43
X6:
.dbline 198
; {//5
.dbline 199
; i=data[2]&0x80; //保存第七位
lds R22,_data+2
andi R22,128
.dbline 200
; data[2]<<=1;
lds R2,_data+2
lsl R2
sts _data+2,R2
.dbline 201
; data[2]+=1;
mov R24,R2
subi R24,255 ; addi 1
sts _data+2,R24
.dbline 202
; j=data[1]&0x80; //保存第七位
lds R20,_data+1
andi R20,128
.dbline 203
; if(i){data[1]<<=1;data[1]+=1;}
tst R22
breq L49
.dbline 203
.dbline 203
lds R2,_data+1
lsl R2
sts _data+1,R2
.dbline 203
mov R24,R2
subi R24,255 ; addi 1
sts _data+1,R24
.dbline 203
rjmp L50
L49:
.dbline 204
; else data[1]<<=1;
lds R2,_data+1
lsl R2
sts _data+1,R2
L50:
.dbline 205
; if(j){data[0]<<=1;data[0]+=1;}
tst R20
breq L54
.dbline 205
.dbline 205
lds R2,_data
lsl R2
sts _data,R2
.dbline 205
mov R24,R2
subi R24,255 ; addi 1
sts _data,R24
.dbline 205
rjmp L55
L54:
.dbline 206
; else data[0]<<=1;
lds R2,_data
lsl R2
sts _data,R2
L55:
.dbline 207
; BITCOUNTER--;
lds R24,_BITCOUNTER
subi R24,1
sts _BITCOUNTER,R24
.dbline 208
; if (BITCOUNTER==0)//解码完成
tst R24
breq X7
rjmp L20
X7:
.dbline 209
; {//5-3
.dbline 210
; if(CRC3(data,3)==0)
ldi R18,3
ldi R16,<_data
ldi R17,>_data
rcall _CRC3
tst R16
breq X8
rjmp L61
X8:
.dbline 211
; {//n
.dbline 212
; DECODER_FLAG_H;
lds R24,_flag
ori R24,4
sts _flag,R24
.dbline 213
; DECODER_EN_L;
andi R24,253
sts _flag,R24
.dbline 214
; eaddr0=data[0];
lds R2,_data
sts _eaddr0,R2
.dbline 215
; eaddr1=data[1];
lds R2,_data+1
sts _eaddr1,R2
.dbline 216
; return;
rjmp L20
X1:
.dbline 219
; }//n
; else //解码错误
; {
.dbline 220
; goto give_up;
.dbline 223
; }
; }//5-3
; return;
L43:
.dbline 226
; }//5
; else //为0的数据存贮
; {//6
.dbline 227
; i=data[2]&0x80; //保存第七位
lds R22,_data+2
andi R22,128
.dbline 228
; data[2]<<=1;
lds R2,_data+2
lsl R2
sts _data+2,R2
.dbline 229
; j=data[1]&0x80; //保存第七位
lds R20,_data+1
andi R20,128
.dbline 230
; if(i){data[1]<<=1;data[1]+=1;}
tst R22
breq L65
.dbline 230
.dbline 230
lds R2,_data+1
lsl R2
sts _data+1,R2
.dbline 230
mov R24,R2
subi R24,255 ; addi 1
sts _data+1,R24
.dbline 230
rjmp L66
L65:
.dbline 231
; else data[1]<<=1;
lds R2,_data+1
lsl R2
sts _data+1,R2
L66:
.dbline 232
; if(j){data[0]<<=1;data[0]+=1;}
tst R20
breq L70
.dbline 232
.dbline 232
lds R2,_data
lsl R2
sts _data,R2
.dbline 232
mov R24,R2
subi R24,255 ; addi 1
sts _data,R24
.dbline 232
rjmp L71
L70:
.dbline 233
; else data[0]<<=1;
lds R2,_data
lsl R2
sts _data,R2
L71:
.dbline 234
; BITCOUNTER--;
lds R24,_BITCOUNTER
subi R24,1
sts _BITCOUNTER,R24
.dbline 235
; if (BITCOUNTER==0)//解码完成
tst R24
brne L20
.dbline 236
; {//6-3
.dbline 237
; if(CRC3(data,3)==0)
ldi R18,3
ldi R16,<_data
ldi R17,>_data
rcall _CRC3
tst R16
brne L61
.dbline 238
; {//n
.dbline 239
; DECODER_FLAG_H;
lds R24,_flag
ori R24,4
sts _flag,R24
.dbline 240
; DECODER_EN_L;
andi R24,253
sts _flag,R24
.dbline 241
; eaddr0=data[0];
lds R2,_data
sts _eaddr0,R2
.dbline 242
; eaddr1=data[1];
lds R2,_data+1
sts _eaddr1,R2
.dbline 243
; return;
rjmp L20
X2:
.dbline 246
; }//n
; else //解码错误
; {
.dbline 247
; goto give_up;
.dbline 250
; }
; }//6-3
; return;
L61:
.dbline 253
clr R2
sts _data,R2
.dbline 254
sts _data+1,R2
.dbline 255
sts _data+2,R2
.dbline 256
ldi R30,<_CODELANGTH
ldi R31,>_CODELANGTH
lpm R30,Z
sts _BITCOUNTER,R30
.dbline 257
lds R24,_flag
andi R24,251
sts _flag,R24
.dbline 258
sts _LO_COUNT_SAVE,R2
.dbline 259
sts _HI_COUNT_SAVE,R2
.dbline 260
L21:
.dbline -2
L20:
rcall pop_gset2
rcall pop_lset
.dbline 0 ; func end
reti
.dbsym r j 20 c
.dbsym r i 22 c
.dbend
.area vector(rom, abs)
.org 18
rjmp _timer2_ovf_isr
.area text(rom, con, rel)
.dbfile E:\abol\file\EMD\programme\init.c
.dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
; i -> <dead>
.even
_timer2_ovf_isr::
rcall push_lset
.dbline -1
.dbline 265
; }//6
; give_up:
; data[0]=0;
; data[1]=0;
; data[2]=0;
; BITCOUNTER=CODELANGTH;
; DECODER_FLAG_L;
; LO_COUNT_SAVE=0;
; HI_COUNT_SAVE=0;
; }//1
;
; }
; #pragma interrupt_handler timer2_ovf_isr:10
; void timer2_ovf_isr(void) //中断程序
; {//00
.dbline 269
; unsigned char i;
; //RF_ON;//关RF使能
; //DECODER_EN_L;//关RF接收数据
; flag|=0x80;
lds R24,_flag
ori R24,128
sts _flag,R24
.dbline 270
; flagh|=0x80;
lds R24,_flagh
ori R24,128
sts _flagh,R24
.dbline 271
; bitclr(PORTD,0);
cbi 0xb,0
.dbline 272
; acount++;
lds R24,_acount
subi R24,255 ; addi 1
sts _acount,R24
.dbline 273
; if(acount>1)
ldi R24,1
lds R2,_acount
cp R24,R2
brsh L80
.dbline 274
; {
.dbline 275
; tm1620(); //刷新显示
rcall _tm1620
.dbline 276
; flagh^=0x04; //闪烁LED 32768/32*2=0.5s
ldi R24,4
lds R2,_flagh
eor R2,R24
sts _flagh,R2
.dbline 277
; acount=0;
clr R2
sts _acount,R2
.dbline 278
; }
L80:
.dbline 279
; bcount++;
lds R24,_bcount
subi R24,255 ; addi 1
sts _bcount,R24
.dbline 280
; if(bcount>3) //
ldi R24,3
lds R2,_bcount
cp R24,R2
brlo X9
rjmp L82
X9:
.dbline 281
; {//3
.dbline 282
; if(SPFC!=0) //开蜂鸣器
lds R2,_SPFC
tst R2
breq L84
.dbline 283
; {
.dbline 284
; bitset(PORTD,0);
sbi 0xb,0
.dbline 285
; SPFC--;
mov R24,R2
subi R24,1
sts _SPFC,R24
.dbline 286
; }
L84:
.dbline 296
; /* RF_OFF; //开RF使能
; data[0]=0;
; data[1]=0;
; data[2]=0;
; BITCOUNTER=CODELANGTH;
; DECODER_FLAG_L;
; LO_COUNT_SAVE=0;
; HI_COUNT_SAVE=0;
; DECODER_EN_H;//开RF接收数据 */
; flag&=~0x80;
lds R24,_flag
andi R24,127
sts _flag,R24
.dbline 297
; bcount=0;
clr R2
sts _bcount,R2
.dbline 298
; sec--;
lds R24,_sec
subi R24,1
sts _sec,R24
.dbline 299
; sec0--;
lds R24,_sec0
subi R24,1
sts _sec0,R24
.dbline 300
; if(sec0==0)
tst R24
brne L86
.dbline 301
; {
.dbline 302
; sec0=3;
ldi R24,3
sts _sec0,R24
.dbline 303
; flagh |=BIT(1); //3sec
lds R24,_flagh
ori R24,2
sts _flagh,R24
.dbline 304
; }
L86:
.dbline 305
; if(sec==0) //秒判断 32768/32*4*SEC
lds R2,_sec
tst R2
breq X10
rjmp L88
X10:
.dbline 306
; {//4
.dbline 307
; flagh |=BIT(0); //倒计时时间到
lds R24,_flagh
ori R24,1
sts _flagh,R24
.dbline 308
; sec=60;
ldi R24,60
sts _sec,R24
.dbline 309
; if((PIND&0X06)==2)
in R24,0x9
andi R24,6
cpi R24,2
brne L90
.dbline 310
; {
.dbline 311
; minu15++;
lds R24,_minu15
subi R24,255 ; addi 1
sts _minu15,R24
.dbline 312
; if(minu15>15) //15分钟自动全部清除
ldi R24,15
lds R2,_minu15
cp R24,R2
brsh L92
.dbline 313
; {
.dbline 314
; datas[0]=datas[1]=datas[2]=datas[3]=datas[4]=datas[5]=datas[6]=datas[7]=0;
clr R2
sts _datas+7,R2
sts _datas+6,R2
sts _datas+5,R2
sts _datas+4,R2
sts _datas+3,R2
sts _datas+2,R2
sts _datas+1,R2
sts _datas,R2
.dbline 315
; dipdata[3]=dipdata[4]=dipdata[5]=0;
sts _dipdata+5,R2
sts _dipdata+4,R2
sts _dipdata+3,R2
.dbline 316
; dipdata[0]=dipdata[1]=dipdata[2]=0;
sts _dipdata+2,R2
sts _dipdata+1,R2
sts _dipdata,R2
.dbline 317
; dipdata[5]|=0x80; //电源LED
lds R24,_dipdata+5
ori R24,128
sts _dipdata+5,R24
.dbline 318
; minu15=0;
sts _minu15,R2
.dbline 319
; minu30=0;
sts _minu30,R2
.dbline 320
; }
L92:
.dbline 321
; }
L90:
.dbline 322
; if((PIND&0X06)==4)
in R24,0x9
andi R24,6
cpi R24,4
brne L107
.dbline 323
; {
.dbline 324
; minu30++;
lds R24,_minu30
subi R24,255 ; addi 1
sts _minu30,R24
.dbline 325
; if(minu30>30) //30分钟自动全部清除
ldi R24,30
lds R2,_minu30
cp R24,R2
brsh L109
.dbline 326
; {
.dbline 327
; datas[0]=datas[1]=datas[2]=datas[3]=datas[4]=datas[5]=datas[6]=datas[7]=0;
clr R2
sts _datas+7,R2
sts _datas+6,R2
sts _datas+5,R2
sts _datas+4,R2
sts _datas+3,R2
sts _datas+2,R2
sts _datas+1,R2
sts _datas,R2
.dbline 328
; dipdata[3]=dipdata[4]=dipdata[5]=0;
sts _dipdata+5,R2
sts _dipdata+4,R2
sts _dipdata+3,R2
.dbline 329
; dipdata[0]=dipdata[1]=dipdata[2]=0;
sts _dipdata+2,R2
sts _dipdata+1,R2
sts _dipdata,R2
.dbline 330
; dipdata[5]|=0x80; //电源LED
lds R24,_dipdata+5
ori R24,128
sts _dipdata+5,R24
.dbline 331
; minu30=0;
sts _minu30,R2
.dbline 332
; minu15=0;
sts _minu15,R2
.dbline 333
; }
L109:
.dbline 334
; }
L107:
.dbline 335
; }//4
L88:
.dbline 336
L82:
.dbline -2
L79:
rcall pop_lset
.dbline 0 ; func end
reti
.dbsym l i 1 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -