📄 main.s
字号:
; }
L116:
.dbline 328
; if((D4FC!=0)&&(D5FC==0))
lds R2,_D4FC
tst R2
breq L121
lds R2,_D5FC
tst R2
brne L121
.dbline 329
; {
.dbline 330
; if(d4!=0) d4--;
lds R2,_d4
tst R2
breq L123
.dbline 330
mov R24,R2
subi R24,1
sts _d4,R24
L123:
.dbline 331
; dipdata[4]=diptable[d4];
ldi R24,<_diptable
ldi R25,>_diptable
lds R30,_d4
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+4,R30
.dbline 332
; j=((d4<<4)+d5);
lds R2,_d5
lds R20,_d4
andi R20,#0x0F
swap R20
add R20,R2
.dbline 333
; EEPROM_write((d*4)+3,d4);
lds R18,_d4
ldi R24,4
mul R24,R22
mov R16,R0
subi R16,253 ; addi 3
rcall _EEPROM_write
.dbline 334
; }
L121:
.dbline 335
; if((D5FC!=0)&&(D4FC==0))
lds R2,_D5FC
tst R2
breq L126
lds R2,_D4FC
tst R2
brne L126
.dbline 336
; {
.dbline 337
; if(d5!=0) d5--;
lds R2,_d5
tst R2
breq L128
.dbline 337
mov R24,R2
subi R24,1
sts _d5,R24
L128:
.dbline 338
; dipdata[5]=diptable[d5];
ldi R24,<_diptable
ldi R25,>_diptable
lds R30,_d5
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+5,R30
.dbline 339
; j=((d4<<4)+d5);
lds R2,_d5
lds R20,_d4
andi R20,#0x0F
swap R20
add R20,R2
.dbline 340
; EEPROM_write((d*4)+3,d5);
mov R18,R2
ldi R24,4
mul R24,R22
mov R16,R0
subi R16,253 ; addi 3
rcall _EEPROM_write
.dbline 341
; }
L126:
.dbline 342
; }
L108:
.dbline 343
; if(e==2)
mov R24,R10
cpi R24,2
brne L131
.dbline 344
; {
.dbline 345
; if((PIND&0x40)==0)
sbic 0x9,6
rjmp L133
.dbline 346
; {
.dbline 347
; for(i=0;i<255;i++)
clr R12
rjmp L138
L135:
.dbline 348
.dbline 349
ldi R18,255
mov R16,R12
rcall _EEPROM_write
.dbline 350
L136:
.dbline 347
inc R12
L138:
.dbline 347
mov R24,R12
cpi R24,255
brlo L135
.dbline 351
; {
; EEPROM_write(i,0xff);
; }
; flagh |=0x01;
lds R24,_flagh
ori R24,1
sts _flagh,R24
.dbline 352
; SPFC=1;
ldi R24,1
sts _SPFC,R24
.dbline 353
; }
L133:
.dbline 354
; }
L131:
.dbline 355
; if((D3FC!=0)&&(D4FC!=0)&&(D5FC!=0))
lds R2,_D3FC
tst R2
brne X4
rjmp L139
X4:
lds R2,_D4FC
tst R2
brne X5
rjmp L139
X5:
lds R2,_D5FC
tst R2
brne X6
rjmp L139
X6:
.dbline 356
; {
.dbline 357
; if((flag&0x04)!=0)
lds R2,_flag
sbrs R2,2
rjmp L141
.dbline 358
; {
.dbline 359
; j=code_comp();
rcall _code_comp
mov R20,R16
.dbline 360
; if(j<100) //代码存在,显示代码位置,响三下表示学习不成功
cpi R16,100
brlo X7
rjmp L143
X7:
.dbline 361
; {
.dbline 362
; SPFC=3;
ldi R24,3
sts _SPFC,R24
.dbline 363
; d=j;
mov R22,R20
.dbline 364
; dipdata[0]=diptable[0];
ldi R30,<_diptable
ldi R31,>_diptable
lpm R30,Z
sts _dipdata,R30
.dbline 365
; dipdata[1]=diptable[(d/10)];
ldi R18,10
ldi R19,0
clr R17
rcall div16s
movw R30,R16
ldi R24,<_diptable
ldi R25,>_diptable
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+1,R30
.dbline 366
; dipdata[2]=diptable[d%10];
ldi R18,10
ldi R19,0
mov R16,R22
clr R17
rcall mod16s
movw R30,R16
ldi R24,<_diptable
ldi R25,>_diptable
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+2,R30
.dbline 367
; lookup_led(d);
mov R16,R22
rcall _lookup_led
.dbline 368
; D1FC=1;
ldi R24,1
sts _D1FC,R24
.dbline 369
; D3FC=0;
clr R2
sts _D3FC,R2
.dbline 370
; D4FC=0;
sts _D4FC,R2
.dbline 371
; D5FC=0;
sts _D5FC,R2
.dbline 372
; }
rjmp L144
L143:
.dbline 374
; else
; {
.dbline 375
; EEPROM_write(d*4,eaddr0); //写入EEPROM
lds R18,_eaddr0
ldi R24,4
mul R24,R22
mov R16,R0
rcall _EEPROM_write
.dbline 376
; EEPROM_write((d*4)+1,eaddr1);
lds R18,_eaddr1
ldi R24,4
mul R24,R22
mov R16,R0
subi R16,255 ; addi 1
rcall _EEPROM_write
.dbline 377
; SPFC=1;
ldi R24,1
sts _SPFC,R24
.dbline 378
; if(d<99)
cpi R22,99
brlo X8
rjmp L147
X8:
.dbline 379
; {
.dbline 380
; d++; //转成BCD到显示
inc R22
.dbline 381
; dipdata[1]=diptable[(d/10)];
ldi R18,10
ldi R19,0
mov R16,R22
clr R17
rcall div16s
movw R30,R16
ldi R24,<_diptable
ldi R25,>_diptable
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+1,R30
.dbline 382
; dipdata[2]=diptable[d%10];
ldi R18,10
ldi R19,0
mov R16,R22
clr R17
rcall mod16s
movw R30,R16
ldi R24,<_diptable
ldi R25,>_diptable
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+2,R30
.dbline 383
; lookup_led(d);
mov R16,R22
rcall _lookup_led
.dbline 384
; if((d3==0)&&(d4==0)&&(d5==0)) //未用过的EEPROM写0
lds R2,_d3
tst R2
brne L148
lds R2,_d4
tst R2
brne L148
lds R2,_d5
tst R2
brne L148
.dbline 385
; {
.dbline 386
; EEPROM_write((d*4)+2,0);
clr R18
ldi R24,4
mul R24,R22
mov R16,R0
subi R16,254 ; addi 2
rcall _EEPROM_write
.dbline 387
; EEPROM_write((d*4)+3,0);
clr R18
ldi R24,4
mul R24,R22
mov R16,R0
subi R16,253 ; addi 3
rcall _EEPROM_write
.dbline 388
; }
.dbline 389
; }
rjmp L148
L147:
.dbline 390
; else flagh |=0x01;
lds R24,_flagh
ori R24,1
sts _flagh,R24
L148:
.dbline 391
; D3FC=1;
ldi R24,1
sts _D3FC,R24
.dbline 392
; D4FC=0;
clr R2
sts _D4FC,R2
.dbline 393
; D5FC=0;
sts _D5FC,R2
.dbline 394
; }
L144:
.dbline 395
; DECODER_FLAG_L;
lds R24,_flag
andi R24,251
sts _flag,R24
.dbline 396
; DECODER_EN_H;//开RF接收数据
ori R24,2
sts _flag,R24
.dbline 397
; }
L141:
.dbline 398
; }
L139:
.dbline 399
lds R24,_flag
andi R24,251
sts _flag,R24
.dbline 400
ori R24,2
sts _flag,R24
.dbline 401
L60:
.dbline 218
lds R2,_flagh
sbrs R2,0
rjmp L59
.dbline 402
; DECODER_FLAG_L;
; DECODER_EN_H;//开RF接收数据
; }
; dipdata[0]=0; //退出设定时全部清空,不显示
clr R2
sts _dipdata,R2
.dbline 403
; dipdata[1]=0;
sts _dipdata+1,R2
.dbline 404
; dipdata[2]=0;
sts _dipdata+2,R2
.dbline 405
; dipdata[3]=0;
sts _dipdata+3,R2
.dbline 406
; dipdata[4]=0;
sts _dipdata+4,R2
.dbline 407
; dipdata[5]=0;
sts _dipdata+5,R2
.dbline 408
; dipdata[5]|=0x80; //电源LED
mov R24,R2
ori R24,128
sts _dipdata+5,R24
.dbline 409
; D1FC=0;
sts _D1FC,R2
.dbline 410
; D3FC=0;
sts _D3FC,R2
.dbline 411
; D4FC=0;
sts _D4FC,R2
.dbline 412
; D5FC=0;
sts _D5FC,R2
.dbline 413
; datas[0]=datas[1]=0;
sts _datas+1,R2
sts _datas,R2
.dbline -2
L53:
rcall pop_gset4
.dbline 0 ; func end
ret
.dbsym l c 1 c
.dbsym l b 1 c
.dbsym l a 1 c
.dbsym r j 20 c
.dbsym r d 22 c
.dbsym r e 10 c
.dbsym r i 12 c
.dbend
.dbfunc e main _main fV
; ar -> R22,R23
; tr -> R10,R11
.even
_main::
.dbline -1
.dbline 417
; }
;
; void main(void)
; {//m
.dbline 421
; unit tr,ar;
; //EEPROM_read(0xff); //校正振荡频率
; //OSCCAL=EEDR;
; delay(60);
ldi R16,60
ldi R17,0
rcall _delay
.dbline 422
; init_devices();
rcall _init_devices
.dbline 423
; init_tm1620();
rcall _init_tm1620
.dbline 424
; dipdata[5]|=0x80; //电源LED
lds R24,_dipdata+5
ori R24,128
sts _dipdata+5,R24
.dbline 425
; delay(600);
ldi R16,600
ldi R17,2
rcall _delay
.dbline 426
; RF_OFF; //开RF使能
cbi 0x8,2
.dbline 427
; data[0]=0;
clr R2
sts _data,R2
.dbline 428
; data[1]=0;
sts _data+1,R2
.dbline 429
; data[2]=0;
sts _data+2,R2
.dbline 430
; BITCOUNTER=CODELANGTH;
ldi R30,<_CODELANGTH
ldi R31,>_CODELANGTH
lpm R30,Z
sts _BITCOUNTER,R30
.dbline 431
; DECODER_FLAG_L;
lds R24,_flag
andi R24,251
sts _flag,R24
.dbline 432
; LO_COUNT_SAVE=0;
sts _LO_COUNT_SAVE,R2
.dbline 433
; HI_COUNT_SAVE=0;
sts _HI_COUNT_SAVE,R2
.dbline 434
; DECODER_EN_H;//开RF接收数据
ori R24,2
sts _flag,R24
.dbline 435
; sec=60;
ldi R24,60
sts _sec,R24
.dbline 436
; flagh &=~0x01;
lds R24,_flagh
andi R24,254
sts _flagh,R24
rjmp L165
L164:
.dbline 438
; while(1) //
; {//1
.dbline 439
; WDR();
wdr
.dbline 440
; if((flag&0x04)!=0)
lds R2,_flag
sbrs R2,2
rjmp L167
.dbline 441
; {
.dbline 442
; ar=code_comp(); //对照地址
rcall _code_comp
mov R22,R16
clr R23
.dbline 443
; if(ar<100)
cpi R22,100
ldi R30,0
cpc R23,R30
brlo X11
rjmp L169
X11:
.dbline 444
; {
.dbline 445
; if(!(data[2]&0x40))
lds R2,_data+2
sbrc R2,6
rjmp L171
.dbline 446
; {
.dbline 447
; if((datas[0]!=data[0])||(datas[1]!=data[1]))
lds R2,_data
lds R3,_datas
cp R3,R2
brne L178
lds R2,_data+1
lds R3,_datas+1
cp R3,R2
brne X12
rjmp L172
X12:
L178:
.dbline 448
; {
.dbline 449
; j=(ar*4)+2;
ldi R16,4
ldi R17,0
movw R18,R22
rcall empy16s
movw R24,R16
adiw R24,2
sts _j,R24
.dbline 450
; ar=EEPROM_read(j);
mov R16,R24
rcall _EEPROM_read
mov R22,R16
clr R23
.dbline 451
; j++;
lds R24,_j
subi R24,255 ; addi 1
sts _j,R24
.dbline 452
; tr=EEPROM_read(j);
mov R16,R24
rcall _EEPROM_read
mov R10,R16
clr R11
.dbline 453
; datas[6]=datas[4]; //移动存贮号码
lds R2,_datas+4
sts _datas+6,R2
.dbline 454
; datas[7]=datas[5];
lds R2,_datas+5
sts _datas+7,R2
.dbline 456
;
; datas[4]=datas[2];
lds R2,_datas+2
sts _datas+4,R2
.dbline 457
; datas[5]=datas[3];
lds R2,_datas+3
sts _datas+5,R2
.dbline 459
;
; datas[2]=datas[0];
lds R2,_datas
sts _datas+2,R2
.dbline 460
; datas[3]=datas[1];
lds R2,_datas+1
sts _datas+3,R2
.dbline 462
;
; datas[0]=data[0];
lds R2,_data
sts _datas,R2
.dbline 463
; datas[1]=data[1];
lds R2,_data+1
sts _datas+1,R2
.dbline 465
;
; dipdata[0]=dipdata[3];
lds R2,_dipdata+3
sts _dipdata,R2
.dbline 466
; dipdata[1]=dipdata[4];
lds R2,_dipdata+4
sts _dipdata+1,R2
.dbline 467
; dipdata[2]=dipdata[5];
lds R2,_dipdata+5
sts _dipdata+2,R2
.dbline 468
; dipdata[2]&=~0x80;
mov R24,R2
andi R24,127
sts _dipdata+2,R24
.dbline 470
;
; dipdata[3]=diptable[ar];
ldi R24,<_diptable
ldi R25,>_diptable
movw R30,R22
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+3,R30
.dbline 471
; ar=(tr&0xf0)>>4;
movw R22,R10
andi R22,240
andi R23,0
lsr R23
ror R22
lsr R23
ror R22
lsr R23
ror R22
lsr R23
ror R22
.dbline 472
; dipdata[4]=diptable[ar];
movw R30,R22
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+4,R30
.dbline 473
; ar=(tr&0x0f);
movw R22,R10
andi R22,15
andi R23,0
.dbline 474
; dipdata[5]=diptable[ar];
movw R30,R22
add R30,R24
adc R31,R25
lpm R30,Z
sts _dipdata+5,R30
.dbline 475
; dipdata[5]|=0x80; //电源LED
mov R24,R30
ori R24,128
sts _dipdata+5,R24
.dbline 476
; if((data[2]&0x80))
lds R2,_data+2
sbrs R2,7
rjmp L202
.dbline 477
; {
.dbline 478
; dipdata[3]|=0x80; //发射电源低LED
lds R24,_dipdata+3
ori R24,128
sts _dipdata+3,R24
.dbline 479
; }
L202:
.dbline 480
; sec=6; //显示6秒后刷新
ldi R24,6
sts _sec,R24
.dbline 481
; flagh &=~0x01;
lds R24,_flagh
andi R24,254
sts _flagh,R24
.dbline 482
; dipcount=3;
ldi R24,3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -