📄 main.s
字号:
ldi R16,20
xcall _delay
.dbline 538
; update_time();
xcall _update_time
xjmp L238
L237:
.dbline 541
; // timecounter=0;
; while(1)
; {
.dbline 542
; if(u_year()==1)return;
xcall _u_year
cpi R16,1
brne L240
.dbline 542
xjmp L236
L240:
.dbline 543
; if(u_month()==1)return;
xcall _u_month
cpi R16,1
brne L242
.dbline 543
xjmp L236
L242:
.dbline 544
; if(u_day()==1)return;
xcall _u_day
cpi R16,1
brne L244
.dbline 544
xjmp L236
L244:
.dbline 545
; if(u_week()==1)return;
xcall _u_week
cpi R16,1
brne L246
.dbline 545
xjmp L236
L246:
.dbline 546
; if(u_hour()==1)return;
xcall _u_hour
cpi R16,1
brne L248
.dbline 546
xjmp L236
L248:
.dbline 547
; if(u_minute()==1)return;
xcall _u_minute
cpi R16,1
brne L250
.dbline 547
xjmp L236
L250:
.dbline 548
xcall _u_second
.dbline 549
ldi R16,12
xcall _delay
.dbline 550
xjmp L236
L238:
.dbline 540
xjmp L237
X4:
.dbline -2
L236:
.dbline 0 ; func end
ret
.dbend
.dbfunc e readxinghaokey _readxinghaokey fc
; status4 -> R20
; status3 -> R22
; ttt3 -> R10
; i -> R20,R21
.even
_readxinghaokey::
xcall push_gset3
.dbline -1
.dbline 555
; u_second();
; delay(12);
; return;
; }
; }
;
; unsigned char readxinghaokey(void)
; {
.dbline 558
; unsigned char status4,ttt3,status3;
; unsigned int i;
; status4=scankey();
xcall _scankey
mov R20,R16
.dbline 559
; if(status4==0)
tst R16
brne L253
.dbline 560
; {
.dbline 561
clr R20
clr R21
xjmp L258
L255:
.dbline 561
L256:
.dbline 561
subi R20,255 ; offset = 1
sbci R21,255
L258:
.dbline 561
; for(i=0;i<10000;i++);
cpi R20,16
ldi R30,39
cpc R21,R30
brlo L255
.dbline 562
; status3=keyvalue();
xcall _keyvalue
mov R22,R16
.dbline 563
; if(status3==0x0a)
cpi R16,10
brne L259
.dbline 564
; {
xjmp L262
L261:
.dbline 566
; while(1)
; {
.dbline 567
; ttt3=keyvalue();
xcall _keyvalue
mov R10,R16
.dbline 568
; if(status3!=ttt3)break;
cp R22,R16
breq L264
.dbline 568
xjmp L263
L264:
.dbline 569
L262:
.dbline 565
xjmp L261
L263:
.dbline 570
; }
; return 0;
clr R16
xjmp L252
L259:
.dbline 573
.dbline 574
ldi R16,1
L253:
.dbline -2
L252:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r status4 20 c
.dbsym r status3 22 c
.dbsym r ttt3 10 c
.dbsym r i 20 i
.dbend
.dbfunc e readnumberkey _readnumberkey fc
; status4 -> R22
; status3 -> R20
; ttt3 -> R22
; i -> R10,R11
.even
_readnumberkey::
xcall push_gset3
.dbline -1
.dbline 579
; }
; else
; {
; return 1;
; }
; }
; }
; unsigned char readnumberkey(void)
; {
.dbline 582
; unsigned char status4,ttt3,status3;
; unsigned int i;
; status4=scankey();
xcall _scankey
mov R22,R16
.dbline 583
; if(status4==0)
tst R16
brne L267
.dbline 584
; {
.dbline 585
clr R10
clr R11
xjmp L272
L269:
.dbline 585
L270:
.dbline 585
movw R24,R10
adiw R24,1
movw R10,R24
L272:
.dbline 585
; for(i=0;i<10000;i++);
movw R24,R10
cpi R24,16
ldi R30,39
cpc R25,R30
brlo L269
.dbline 586
; status3=keyvalue();
xcall _keyvalue
mov R20,R16
.dbline 587
; if(status3==0x0a);
cpi R16,10
brne L276
.dbline 587
xjmp L268
X5:
.dbline 589
; else
; {
L275:
.dbline 591
; while(1)
; {
.dbline 592
; ttt3=keyvalue();
xcall _keyvalue
mov R22,R16
.dbline 593
; if(status3!=ttt3)break;
cp R20,R16
breq L278
.dbline 593
xjmp L277
L278:
.dbline 594
L276:
.dbline 590
xjmp L275
L277:
.dbline 595
; }
; return status3;
mov R16,R20
xjmp L266
X6:
.dbline 597
; }
; }
L267:
.dbline 599
ldi R16,40
L268:
.dbline -2
L266:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r status4 22 c
.dbsym r status3 20 c
.dbsym r ttt3 22 c
.dbsym r i 10 i
.dbend
.dbfunc e read0key _read0key fc
; status4 -> R20
; status3 -> R20
; ttt3 -> R22
; i -> R22,R23
.even
_read0key::
xcall push_gset2
.dbline -1
.dbline 602
; else
; return 40;
; }
; unsigned char read0key(void)
; {
.dbline 605
; unsigned char status4,ttt3,status3;
; unsigned int i;
; status4=scankey();
xcall _scankey
mov R20,R16
.dbline 606
; if(status4==0)
tst R16
brne L281
.dbline 607
; {
.dbline 608
clr R22
clr R23
xjmp L286
L283:
.dbline 608
L284:
.dbline 608
subi R22,255 ; offset = 1
sbci R23,255
L286:
.dbline 608
; for(i=0;i<10000;i++);
cpi R22,16
ldi R30,39
cpc R23,R30
brlo L283
.dbline 609
; status3=keyvalue();
xcall _keyvalue
mov R20,R16
.dbline 610
; if(status3==0)
tst R16
brne L282
.dbline 611
; {
.dbline 612
; if(timenum>13)timenum=0;
ldi R24,13
lds R2,_timenum
cp R24,R2
brsh L289
.dbline 612
clr R2
sts _timenum,R2
L289:
.dbline 613
; timenum++;
lds R24,_timenum
subi R24,255 ; addi 1
sts _timenum,R24
xjmp L292
L291:
.dbline 615
; while(1)
; {
.dbline 616
; ttt3=keyvalue();
xcall _keyvalue
mov R22,R16
.dbline 617
; if(status3!=ttt3)break;
cp R20,R16
breq L294
.dbline 617
xjmp L293
L294:
.dbline 618
L292:
.dbline 614
xjmp L291
L293:
.dbline 619
; }
; return 0;
clr R16
xjmp L280
X7:
.dbline 621
; }
; }
L281:
.dbline 623
ldi R16,99
L282:
.dbline -2
L280:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r status4 20 c
.dbsym r status3 20 c
.dbsym r ttt3 22 c
.dbsym r i 22 i
.dbend
.dbfunc e write_time _write_time fV
; i -> R20
; time -> R22,R23
; addr -> R10
.even
_write_time::
xcall push_gset3
movw R22,R18
mov R10,R16
.dbline -1
.dbline 626
; else
; return 99;
; }
; void write_time(unsigned char addr,unsigned char *time)
; {
.dbline 628
; unsigned char i;
; for(i=0;i<7;i++)
clr R20
xjmp L300
L297:
.dbline 629
mov R30,R20
clr R31
add R30,R22
adc R31,R23
ldd R18,z+0
ldi R24,16
mul R24,R10
movw R16,R0
mov R2,R20
clr R3
add R16,R2
adc R17,R3
xcall _EEPROMwrite
L298:
.dbline 628
inc R20
L300:
.dbline 628
cpi R20,7
brlo L297
.dbline -2
L296:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r time 22 pc
.dbsym r addr 10 c
.dbend
.dbfunc e main _main fV
; now_time -> <dead>
; status2 -> <dead>
; yyj -> y+4
; modecounter -> y+3
; status4 -> y+2
; status3 -> R12
; ttt3 -> R14
; i -> R20,R21
.even
_main::
sbiw R28,5
.dbline -1
.dbline 632
; EEPROMwrite(addr*16+i,time[i]);
; }
; void main(void)
; {
.dbline 635
; unsigned char status2,status3,status4,ttt3;
; unsigned int i,now_time;
; unsigned char modecounter=0;
clr R0
std y+3,R0
.dbline 638
; unsigned char yyj;
;
; CLI();
cli
.dbline 642
; // WDTCR=0x18;
; // WDTCR=0x10;
;
; MCUCR = 0x30; //进入掉电休眠模式 SE=1,SM0,SM1,SM2 :0,1,0
ldi R24,48
out 0x35,R24
.dbline 643
; EICRA = 0x03; //外部中断0的中断模式,上升沿触发中断
ldi R24,3
sts 106,R24
.dbline 644
; EICRB = 0x80; //外部中断7的中断模式,下降沿触发中断
ldi R24,128
out 0x3a,R24
.dbline 645
; EIMSK = 0x81; //外部中断0和外部中断7的中断任务.
ldi R24,129
out 0x39,R24
.dbline 646
; TIMSK = 0x04; //timer interrupt sources
ldi R24,4
out 0x37,R24
.dbline 647
; ETIMSK = 0x00; //extended timer interrupt sources
clr R2
sts 125,R2
.dbline 648
; PORTF=0x00;
sts 98,R2
.dbline 649
; DDRF=0xFF;
ldi R24,255
sts 97,R24
.dbline 650
; SEI();
sei
.dbline 651
; timer0_init();
xcall _timer0_init
.dbline 652
; timer1_init();
xcall _timer1_init
.dbline 653
; uart0_init();
xcall _uart0_init
.dbline 654
; displaycount=0;
clr R2
sts _displaycount,R2
.dbline 655
; CLEAR_LIGHT();
sbi 0x17,6
.dbline 656
; init_par(); //init ds1302
xcall _init_par
.dbline 658
; // init_val(); //init var
; lcd_init(); //lcd init
xcall _lcd_init
.dbline 659
; clear_lcd();
xcall _clear_lcd
.dbline 660
; display_1();
xcall _display_1
.dbline 661
; CLEAR_BELL();
sbi 0x17,5
.dbline 662
; SET_LED0();
cbi 0x11,7
.dbline 663
; beep(5);
ldi R16,5
xcall _beep
.dbline 664
; delay(100);
ldi R16,100
xcall _delay
.dbline 665
; beep(5);
ldi R16,5
xcall _beep
xjmp L303
L302:
.dbline 669
;
;
; while(1)
; {
.dbline 671
;
; lcd_init();
xcall _lcd_init
.dbline 672
; if(sio_flag==1)COMM_RX();
lds R24,_sio_flag
cpi R24,1
brne L305
.dbline 672
xcall _COMM_RX
L305:
.dbline 673
; Get_1302(time_data);
ldi R16,<_time_data
ldi R17,>_time_data
xcall _Get_1302
.dbline 674
; if(modemstatus==0) //显示正常的日期时间
lds R2,_modemstatus
tst R2
brne L307
.dbline 675
; {
.dbline 676
; display_time1(time_data);
ldi R16,<_time_data
ldi R17,>_time_data
xcall _display_time1
.dbline 677
; }
xjmp L308
L307:
.dbline 678
; else if(modemstatus==2) //事件录入状态
lds R24,_modemstatus
cpi R24,2
breq X17
xjmp L309
X17:
.dbline 679
; {
.dbline 680
; if(readxinghaokey()==0)
xcall _readxinghaokey
tst R16
brne L311
.dbline 681
; {
.dbline 682
; if(lockkey_flag==1)lockkey_flag=0;
lds R24,_lockkey_flag
cpi R24,1
brne L313
.dbline 682
clr R2
sts _lockkey_flag,R2
xjmp L314
L313:
.dbline 683
; else if(lockkey_flag==0)
lds R2,_lockkey_flag
tst R2
brne L315
.dbline 684
; {
.dbline 685
; lockkey_flag=1;
ldi R24,1
sts _lockkey_flag,R24
.dbline 686
; for(i=0;i<16;i++)
clr R20
clr R21
xjmp L320
L317:
.dbline 687
.dbline 688
ldi R18,1
movw R16,R20
subi R16,0 ; offset = 512
sbci R17,254
xcall _EEPROMwrite
.dbline 689
L318:
.dbline 686
subi R20,255 ; offset = 1
sbci R21,255
L320:
.dbline 686
cpi R20,16
ldi R30,0
cpc R21,R30
brlo L317
.dbline 690
; {
; EEPROMwrite(0x200+i,1);
; }
; }
L315:
L314:
.dbline 691
; }
L311:
.dbline 692
; if(lockkey_flag==1)
lds R24,_lockkey_flag
cpi R24,1
breq X18
xjmp L321
X18:
.dbline 693
; {
.dbline 694
; yyj=readnumberkey();
xcall _readnumberkey
std y+4,R16
.dbline 695
; switch(yyj)
mov R10,R16
clr R11
tst R10
brne X8
tst R11
brne X19
xjmp L353
X19:
X8:
movw R24,R10
cpi R24,1
ldi R30,0
cpc R25,R30
brne X20
xjmp L326
X20:
cpi R24,2
ldi R30,0
cpc R25,R30
brne X21
xjmp L329
X21:
cpi R24,3
ldi R30,0
cpc R25,R30
brne X22
xjmp L332
X22:
cpi R24,4
ldi R30,0
cpc R25,R30
brne X23
xjmp L335
X23:
cpi R24,5
ldi R30,0
cpc R25,R30
brne X24
xjmp L338
X24:
cpi R24,6
ldi R30,0
cpc R25,R30
brne X25
xjmp L341
X25:
cpi R24,7
ldi R30,0
cpc R25,R30
brne X26
xjmp L344
X26:
cpi R24,8
ldi R30,0
cpc R25,R30
brne X27
xjmp L347
X27:
cpi R24,9
ldi R30,0
cpc R25,R30
brne X28
xjmp L350
X28:
cpi R24,11
ldi R30,0
cpc R25,R30
brne X29
xjmp L356
X29:
xjmp L324
X9:
.dbline 696
; {
L326:
.dbline 698
; case 1:
; keynum=0;
clr R2
sts _keynum,R2
.dbline 699
; if(key1mode>2)key1mode=0;
ldi R24,2
lds R2,_key1mode
cp R24,R2
brsh L327
.dbline 699
clr R2
sts _key1mode,R2
L327:
.dbline 700
; key1mode++;
lds R24,_key1mode
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -