📄 main.s
字号:
xcall _EEPROMread
sts _TX_BUF0+58,R16
.dbline 379
; TX_BUF0[59]=EEPROMread(9*16+1);
ldi R16,145
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+59,R16
.dbline 380
; TX_BUF0[60]=EEPROMread(9*16+2);
ldi R16,146
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+60,R16
.dbline 381
; TX_BUF0[61]=EEPROMread(9*16+3);
ldi R16,147
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+61,R16
.dbline 382
; TX_BUF0[62]=EEPROMread(9*16+4);
ldi R16,148
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+62,R16
.dbline 383
; TX_BUF0[63]=EEPROMread(9*16+5);
ldi R16,149
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+63,R16
.dbline 384
; TX_BUF0[64]=EEPROMread(9*16+6);
ldi R16,150
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+64,R16
.dbline 386
;
; TX_BUF0[65]=EEPROMread(10*16+0);
ldi R16,160
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+65,R16
.dbline 387
; TX_BUF0[66]=EEPROMread(10*16+1);
ldi R16,161
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+66,R16
.dbline 388
; TX_BUF0[67]=EEPROMread(10*16+2);
ldi R16,162
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+67,R16
.dbline 389
; TX_BUF0[68]=EEPROMread(10*16+3);
ldi R16,163
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+68,R16
.dbline 390
; TX_BUF0[69]=EEPROMread(10*16+4);
ldi R16,164
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+69,R16
.dbline 391
; TX_BUF0[70]=EEPROMread(10*16+5);
ldi R16,165
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+70,R16
.dbline 392
; TX_BUF0[71]=EEPROMread(10*16+6);
ldi R16,166
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+71,R16
.dbline 393
; SET_LIGHT();
cbi 0x17,6
.dbline 394
; TX_BUF0[72]=EEPROMread(11*16+0);
ldi R16,176
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+72,R16
.dbline 395
; TX_BUF0[73]=EEPROMread(11*16+1);
ldi R16,177
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+73,R16
.dbline 396
; TX_BUF0[74]=EEPROMread(11*16+2);
ldi R16,178
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+74,R16
.dbline 397
; TX_BUF0[75]=EEPROMread(11*16+3);
ldi R16,179
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+75,R16
.dbline 398
; TX_BUF0[76]=EEPROMread(11*16+4);
ldi R16,180
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+76,R16
.dbline 399
; TX_BUF0[77]=EEPROMread(11*16+5);
ldi R16,181
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+77,R16
.dbline 400
; TX_BUF0[78]=EEPROMread(11*16+6);
ldi R16,182
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+78,R16
.dbline 402
;
; TX_BUF0[79]=EEPROMread(12*16+0);
ldi R16,192
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+79,R16
.dbline 403
; TX_BUF0[80]=EEPROMread(12*16+1);
ldi R16,193
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+80,R16
.dbline 404
; TX_BUF0[81]=EEPROMread(12*16+2);
ldi R16,194
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+81,R16
.dbline 405
; TX_BUF0[82]=EEPROMread(12*16+3);
ldi R16,195
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+82,R16
.dbline 406
; TX_BUF0[83]=EEPROMread(12*16+4);
ldi R16,196
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+83,R16
.dbline 407
; TX_BUF0[84]=EEPROMread(12*16+5);
ldi R16,197
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+84,R16
.dbline 408
; TX_BUF0[85]=EEPROMread(12*16+6);
ldi R16,198
ldi R17,0
xcall _EEPROMread
sts _TX_BUF0+85,R16
.dbline 410
;
; TX_BUF0[86]=0x03;
ldi R24,3
sts _TX_BUF0+86,R24
.dbline 411
; TransmitByte0(TX_BUF0,87);
ldi R18,87
ldi R16,<_TX_BUF0
ldi R17,>_TX_BUF0
xcall _TransmitByte0
.dbline 412
clr R20
clr R21
xjmp L190
L187:
.dbline 412
L188:
.dbline 412
subi R20,255 ; offset = 1
sbci R21,255
L190:
.dbline 412
; for(i=0;i<3800;i++);
cpi R20,216
ldi R30,14
cpc R21,R30
brlo L187
.dbline 413
; CLEAR_LIGHT();
sbi 0x17,6
.dbline -2
L100:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.dbfunc e setup_curtime _setup_curtime fV
; i -> R20
.even
_setup_curtime::
xcall push_gset1
.dbline -1
.dbline 416
; }
; void setup_curtime(void)
; {
.dbline 418
; unsigned char i;
; for(i=0;i<7;i++)
clr R20
xjmp L195
L192:
.dbline 419
mov R2,R20
clr R3
ldi R30,6
ldi R31,0
sub R30,R2
sbc R31,R3
ldi R24,<_time_data
ldi R25,>_time_data
add R30,R24
adc R31,R25
ldi R24,<_RX_BUF0+2
ldi R25,>_RX_BUF0+2
mov R26,R2
clr R27
add R26,R24
adc R27,R25
ld R2,x
std z+0,R2
L193:
.dbline 418
inc R20
L195:
.dbline 418
cpi R20,7
brlo L192
.dbline 420
; time_data[6-i]=RX_BUF0[2+i];
; Set_1302(time_data);
ldi R16,<_time_data
ldi R17,>_time_data
xcall _Set_1302
.dbline 421
; senddata(0);
clr R16
xcall _senddata
.dbline -2
L191:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e senddata _senddata fV
; i -> R20,R21
; flag -> R20
.even
_senddata::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 425
; }
;
; void senddata(unsigned char flag)
; {
.dbline 428
; unsigned int i;
;
; SET_LIGHT();
cbi 0x17,6
.dbline 429
; TX_BUF0[0]=0x11;
ldi R24,17
sts _TX_BUF0,R24
.dbline 430
; TX_BUF0[1]=4;
ldi R24,4
sts _TX_BUF0+1,R24
.dbline 431
; TX_BUF0[2]=3;
ldi R24,3
sts _TX_BUF0+2,R24
.dbline 432
; TransmitByte0(TX_BUF0,3);
ldi R18,3
ldi R16,<_TX_BUF0
ldi R17,>_TX_BUF0
xcall _TransmitByte0
.dbline 433
clr R20
clr R21
xjmp L203
L200:
.dbline 433
L201:
.dbline 433
subi R20,255 ; offset = 1
sbci R21,255
L203:
.dbline 433
; for(i=0;i<3800;i++);
cpi R20,216
ldi R30,14
cpc R21,R30
brlo L200
.dbline 434
; CLEAR_LIGHT();
sbi 0x17,6
.dbline -2
L197:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r flag 20 c
.dbend
.area vector(rom, abs)
.org 56
jmp _timer1_ovf_isr
.area text(rom, con, rel)
.dbfile F:\yyjapp\yymk\software\main.c
.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
_timer1_ovf_isr::
st -y,R2
st -y,R3
st -y,R24
st -y,R25
in R2,0x3f
st -y,R2
.dbline -1
.dbline 438
; }
; #pragma interrupt_handler timer1_ovf_isr:15
; void timer1_ovf_isr(void)
; {
.dbline 440
; //TIMER1 has overflowed
; TCNT1H = 0xFD; //reload counter high value 50ms
ldi R24,253
out 0x2d,R24
.dbline 441
; TCNT1L = 0xE5; //reload counter low value 50ms
ldi R24,229
out 0x2c,R24
.dbline 442
; displaycount++;
lds R24,_displaycount
subi R24,255 ; addi 1
sts _displaycount,R24
.dbline 443
; timecounter++;
lds R24,_timecounter
lds R25,_timecounter+1
adiw R24,1
sts _timecounter+1,R25
sts _timecounter,R24
.dbline 444
; timer++;
lds R24,_timer
lds R25,_timer+1
adiw R24,1
sts _timer+1,R25
sts _timer,R24
.dbline 445
; if(displaycount>34)
ldi R24,34
lds R2,_displaycount
cp R24,R2
brsh L205
.dbline 446
; {
.dbline 447
; displaycount=0;
clr R2
sts _displaycount,R2
.dbline 449
; // WDR();
; }
L205:
.dbline 452
;
;
; checktime++; //报警检查时间
lds R24,_checktime
subi R24,255 ; addi 1
sts _checktime,R24
.dbline 453
; if(checktime>2)
ldi R24,2
lds R2,_checktime
cp R24,R2
brsh L207
.dbline 454
; {
.dbline 455
; checktime=0;
clr R2
sts _checktime,R2
.dbline 456
; alarm_time++;
lds R24,_alarm_time
lds R25,_alarm_time+1
adiw R24,1
sts _alarm_time+1,R25
sts _alarm_time,R24
.dbline 457
; if(alarm_time>300)
ldi R24,300
ldi R25,1
lds R2,_alarm_time
lds R3,_alarm_time+1
cp R24,R2
cpc R25,R3
brsh L209
.dbline 458
; {
.dbline 459
; alarm_flag=0;
clr R2
sts _alarm_flag,R2
.dbline 460
; SET_SDA(); //高电平清除报警
cbi 0x11,1
.dbline 461
; }
L209:
.dbline 462
; if(zone_flag==1)
lds R24,_zone_flag
cpi R24,1
brne L211
.dbline 463
; {
.dbline 464
; if((PIND&0x01)==0x00)
sbic 0x10,0
rjmp L212
.dbline 465
; {
.dbline 466
; alarm_flag=1;
ldi R24,1
sts _alarm_flag,R24
.dbline 467
; CLEAR_SDA(); //报警输出低电平有效。
sbi 0x11,1
.dbline 468
; alarm_time=0;
clr R2
clr R3
sts _alarm_time+1,R3
sts _alarm_time,R2
.dbline 469
; }
.dbline 471
; else
; ;
.dbline 472
; }
xjmp L212
L211:
.dbline 474
; else
; {
.dbline 475
; alarm_flag=0;
clr R2
sts _alarm_flag,R2
.dbline 476
; SET_SDA();
cbi 0x11,1
.dbline 477
; }
L212:
.dbline 479
;
; }
L207:
.dbline 480
; if(timer>2)
ldi R24,2
ldi R25,0
lds R2,_timer
lds R3,_timer+1
cp R24,R2
cpc R25,R3
brsh L215
.dbline 481
; {
.dbline 482
; if(beep_second==0)
lds R2,_beep_second
tst R2
brne L217
.dbline 483
; {
.dbline 484
; SET_BELL();
cbi 0x17,5
.dbline 485
; SET_LED0();
cbi 0x11,7
.dbline 486
; timer=0;
clr R2
clr R3
sts _timer+1,R3
sts _timer,R2
.dbline 487
; }
xjmp L218
L217:
.dbline 489
; else
; {
.dbline 490
; if(beep_flag==1)
lds R24,_beep_flag
cpi R24,1
brne L219
.dbline 491
; {
.dbline 492
; SET_BELL();
cbi 0x17,5
.dbline 493
; SET_LED0();
cbi 0x11,7
.dbline 494
; beep_flag=0;
clr R2
sts _beep_flag,R2
.dbline 495
; }
xjmp L220
L219:
.dbline 497
; else
; {
.dbline 498
; CLEAR_BELL();
sbi 0x17,5
.dbline 499
; CLEAR_LED0();
sbi 0x11,7
.dbline 500
; beep_flag=1;
ldi R24,1
sts _beep_flag,R24
.dbline 501
; }
L220:
.dbline 502
; timer=0;
clr R2
clr R3
sts _timer+1,R3
sts _timer,R2
.dbline 503
; beep_second--;
lds R24,_beep_second
subi R24,1
sts _beep_second,R24
.dbline 504
; }
L218:
.dbline 505
L215:
.dbline -2
L204:
ld R2,y+
out 0x3f,R2
ld R25,y+
ld R24,y+
ld R3,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e beep11 _beep11 fV
; i -> R16,R17
.even
_beep11::
.dbline -1
.dbline 508
; }
; }
; void beep11(void)
; {
.dbline 510
; unsigned int i;
; CLEAR_BELL();
sbi 0x17,5
.dbline 511
clr R16
clr R17
xjmp L225
L222:
.dbline 511
L223:
.dbline 511
subi R16,255 ; offset = 1
sbci R17,255
L225:
.dbline 511
; for(i=0;i<65000;i++);
cpi R16,232
ldi R30,253
cpc R17,R30
brlo L222
.dbline 512
; SET_BELL();
cbi 0x17,5
.dbline -2
L221:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay _delay fV
; j -> R20
; i -> R22,R23
; count -> R16
.even
_delay::
xcall push_gset2
.dbline -1
.dbline 515
; }
; void delay(unsigned char count)
; {
.dbline 518
; unsigned int i;
; unsigned char j;
; for(j=0;j<count;j++)
clr R20
xjmp L230
L227:
.dbline 519
; {
.dbline 520
clr R22
clr R23
xjmp L234
L231:
.dbline 520
L232:
.dbline 520
subi R22,255 ; offset = 1
sbci R23,255
L234:
.dbline 520
cpi R22,232
ldi R30,253
cpc R23,R30
brlo L231
.dbline 521
L228:
.dbline 518
inc R20
L230:
.dbline 518
cp R20,R16
brlo L227
.dbline -2
L226:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 22 i
.dbsym r count 16 c
.dbend
.dbfunc e value_time _value_time fi
; timedata1 -> R20,R21
; timedata -> R22,R23
; data -> R20,R21
; minutes -> R20
; hour -> R22
.even
_value_time::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 525
; for(i=0;i<65000;i++);
; }
; }
;
; unsigned int value_time(unsigned char hour,unsigned char minutes)
; {
.dbline 528
; unsigned int data;
; unsigned int timedata,timedata1;
; timedata=(hour/16)*10+hour%16;
ldi R18,16
ldi R19,0
mov R16,R22
clr R17
xcall mod16s
mov R24,R22
swap R24
andi R24,#0x0F
ldi R25,10
mul R25,R24
movw R22,R0
add R22,R16
adc R23,R17
.dbline 529
; timedata1=(minutes/16)*10+minutes%16;
ldi R18,16
ldi R19,0
mov R16,R20
clr R17
xcall mod16s
mov R24,R20
swap R24
andi R24,#0x0F
ldi R25,10
mul R25,R24
movw R20,R0
add R20,R16
adc R21,R17
.dbline 530
; data=timedata*60+timedata1;
ldi R16,60
ldi R17,0
movw R18,R22
xcall empy16s
movw R2,R16
add R2,R20
adc R3,R21
movw R20,R2
.dbline 531
; return data;
movw R16,R2
.dbline -2
L235:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r timedata1 20 i
.dbsym r timedata 22 i
.dbsym r data 20 i
.dbsym r minutes 20 c
.dbsym r hour 22 c
.dbend
.dbfunc e setup_time _setup_time fV
.even
_setup_time::
.dbline -1
.dbline 535
; }
;
; void setup_time(void)
; {
.dbline 536
; display_setuptime();
xcall _display_setuptime
.dbline 537
; delay(20);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -