📄 ds1302.s
字号:
rjmp L263
L262:
.dbline 465
; }//move=3
; //ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
; while(move==4)//设置月位置
; { black(10,1);
.dbline 465
ldi R18,1
ldi R19,0
ldi R16,10
ldi R17,0
rcall _black
.dbline 466
; LCD_write_char(10,1,monthtl+48);
lds R24,_monthtl
subi R24,208 ; addi 48
std y+0,R24
ldi R18,1
ldi R16,10
rcall _LCD_write_char
.dbline 467
; DS1302_ReadTime(); //读取当前时间
rcall _DS1302_ReadTime
.dbline 468
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 470
; //ccccccccccccccccccccccccccccccccccccccccc
; if(!(PINC&0x20)) //检测加一按键
sbic 0x13,5
rjmp L265
.dbline 471
L267:
.dbline 471
L268:
.dbline 471
; {while(!(PINC&0X20));
sbis 0x13,5
rjmp L267
.dbline 472
; PlusMonth(1);
ldi R16,1
ldi R17,0
rcall _PlusMonth
.dbline 473
; DS1302_WriteTime();
rcall _DS1302_WriteTime
.dbline 474
; DS1302_ReadTime(); //读取当前时间
rcall _DS1302_ReadTime
.dbline 475
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 476
; }
L265:
.dbline 477
; if(!(PINB&0x01))//检测减一按键
sbic 0x16,0
rjmp L270
.dbline 478
L272:
.dbline 478
L273:
.dbline 478
; {while(!(PINB&0X01));
sbis 0x16,0
rjmp L272
.dbline 479
; SubMonth(1);
ldi R16,1
ldi R17,0
rcall _SubMonth
.dbline 480
; DS1302_WriteTime();
rcall _DS1302_WriteTime
.dbline 481
; DS1302_ReadTime(); //读取当前时间
rcall _DS1302_ReadTime
.dbline 482
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 483
; }
L270:
.dbline 485
;
; if(!(PINC&0x08)) //检测功能键
sbic 0x13,3
rjmp L275
.dbline 486
L277:
.dbline 486
L278:
.dbline 486
; {while(!(PINC&0X08));
sbis 0x13,3
rjmp L277
.dbline 487
; NoGong=2;
ldi R20,2
ldi R21,0
.dbline 488
; move=6;//使此值与所有的判断值都不相等
ldi R22,6
ldi R23,0
.dbline 489
; }
L275:
.dbline 491
;
; if(!(PINC&0x10))//检测移位按键
sbic 0x13,4
rjmp L280
.dbline 492
L282:
.dbline 492
L283:
.dbline 492
; {while(!(PINC&0X10));
sbis 0x13,4
rjmp L282
.dbline 493
; move=5;
ldi R22,5
ldi R23,0
.dbline 494
; }
L280:
.dbline 495
L263:
.dbline 464
cpi R22,4
ldi R30,0
cpc R23,R30
brne X5
rjmp L262
X5:
rjmp L286
L285:
.dbline 498
; }//move=4
; //ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
; while(move==5)//设置年位置
; { black(7,1);
.dbline 498
ldi R18,1
ldi R19,0
ldi R16,7
ldi R17,0
rcall _black
.dbline 499
; LCD_write_char(7,1,yeartl+48);
lds R24,_yeartl
subi R24,208 ; addi 48
std y+0,R24
ldi R18,1
ldi R16,7
rcall _LCD_write_char
.dbline 500
; DS1302_ReadTime(); //读取当前时间
rcall _DS1302_ReadTime
.dbline 501
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 503
; //ccccccccccccccccccccccccccccccccccccccccc
; if(!(PINC&0x20)) //检测加一按键
sbic 0x13,5
rjmp L288
.dbline 504
L290:
.dbline 504
L291:
.dbline 504
; {while(!(PINC&0X20));
sbis 0x13,5
rjmp L290
.dbline 505
; PlusYear(0);
clr R16
clr R17
rcall _PlusYear
.dbline 506
; DS1302_WriteTime();
rcall _DS1302_WriteTime
.dbline 507
; DS1302_ReadTime();
rcall _DS1302_ReadTime
.dbline 508
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 509
; }
L288:
.dbline 511
;
; if(!(PINB&0x01))//检测减一按键
sbic 0x16,0
rjmp L293
.dbline 512
L295:
.dbline 512
L296:
.dbline 512
; {while(!(PINB&0X01));
sbis 0x16,0
rjmp L295
.dbline 513
; SubYear(0);
clr R16
clr R17
rcall _SubYear
.dbline 514
; DS1302_WriteTime();
rcall _DS1302_WriteTime
.dbline 515
; DS1302_ReadTime();
rcall _DS1302_ReadTime
.dbline 516
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 517
; }
L293:
.dbline 519
;
; if(!(PINC&0x08)) //检测功能键
sbic 0x13,3
rjmp L298
.dbline 520
L300:
.dbline 520
L301:
.dbline 520
; {while(!(PINC&0X08));
sbis 0x13,3
rjmp L300
.dbline 521
; NoGong=2;
ldi R20,2
ldi R21,0
.dbline 522
; move=6;//使此值与所有的判断值都不相等
ldi R22,6
ldi R23,0
.dbline 523
; }
L298:
.dbline 525
;
; if(!(PINC&0x10))//检测移位按键
sbic 0x13,4
rjmp L303
.dbline 526
L305:
.dbline 526
L306:
.dbline 526
; {while(!(PINC&0X10));
sbis 0x13,4
rjmp L305
.dbline 527
; move=0;
clr R22
clr R23
.dbline 528
; }
L303:
.dbline 529
L286:
.dbline 497
cpi R22,5
ldi R30,0
cpc R23,R30
brne X6
rjmp L285
X6:
rjmp L309
L308:
.dbline 532
; }//move=5
; //ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
; while(move==0)//设置秒位置
; { black(13,0);
.dbline 532
clr R18
clr R19
ldi R16,13
ldi R17,0
rcall _black
.dbline 533
; LCD_write_char(13,0,minutetl+48);
lds R24,_minutetl
subi R24,208 ; addi 48
std y+0,R24
clr R18
ldi R16,13
rcall _LCD_write_char
.dbline 534
; DS1302_ReadTime(); //读取当前时间
rcall _DS1302_ReadTime
.dbline 535
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 537
; //cccccccccccccccccccccccccccccccccccccccccccccccc
; if(!(PINC&0x20)) //检测加一按键
sbic 0x13,5
rjmp L311
.dbline 538
L313:
.dbline 538
L314:
.dbline 538
; {while(!(PINC&0X20));
sbis 0x13,5
rjmp L313
.dbline 539
; PlusForSET(5);//设置秒
ldi R16,5
ldi R17,0
rcall _PlusForSET
.dbline 540
; DS1302_WriteTime();
rcall _DS1302_WriteTime
.dbline 541
; DS1302_ReadTime(); //读取当前时间
rcall _DS1302_ReadTime
.dbline 542
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 543
; }
L311:
.dbline 544
; if(!(PINB&0x01))//检测减一按键
sbic 0x16,0
rjmp L316
.dbline 545
L318:
.dbline 545
L319:
.dbline 545
; {while(!(PINB&0X01));
sbis 0x16,0
rjmp L318
.dbline 546
; SubForSET(5);//设置秒
ldi R16,5
ldi R17,0
rcall _SubForSET
.dbline 547
; DS1302_WriteTime();
rcall _DS1302_WriteTime
.dbline 548
; DS1302_ReadTime(); //读取当前时间
rcall _DS1302_ReadTime
.dbline 549
; SendDataForDisplay();//显示设置
rcall _SendDataForDisplay
.dbline 550
; }
L316:
.dbline 551
; if(!(PINC&0x08)) //检测功能键
sbic 0x13,3
rjmp L321
.dbline 552
L323:
.dbline 552
L324:
.dbline 552
; {while(!(PINC&0X08));
sbis 0x13,3
rjmp L323
.dbline 553
; NoGong=2;
ldi R20,2
ldi R21,0
.dbline 554
; move=6;//使此值与所有的判断值都不相等
ldi R22,6
ldi R23,0
.dbline 555
; }
L321:
.dbline 557
;
; if(!(PINC&0x10))//检测移位按键
sbic 0x13,4
rjmp L326
.dbline 558
L328:
.dbline 558
L329:
.dbline 558
; {while(!(PINC&0X10));
sbis 0x13,4
rjmp L328
.dbline 559
; move=1;
ldi R22,1
ldi R23,0
.dbline 560
; }
L326:
.dbline 561
L309:
.dbline 531
cpi R22,0
cpc R22,R23
brne X7
rjmp L308
X7:
X1:
.dbline 563
L191:
.dbline 361
cpi R20,1
ldi R30,0
cpc R21,R30
brne X8
rjmp L190
X8:
.dbline 566
; }//move=1
;
; }//while(NoGong==1)end
; //ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
; //ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
; } //检测第一次移位按键的结尾
L185:
.dbline 568
;
; if(!(PINC&0x08)) //检测功能键为第二次按下时退出
sbic 0x13,3
rjmp L331
.dbline 569
L333:
.dbline 569
L334:
.dbline 569
; {while(!(PINC&0X08));
sbis 0x13,3
rjmp L333
.dbline 570
; NoGong=2;
ldi R20,2
ldi R21,0
.dbline 571
; }
L331:
.dbline 572
L173:
.dbline 334
cpi R20,1
ldi R30,0
cpc R21,R30
brne X9
rjmp L172
X9:
.dbline 573
L167:
.dbline -2
L166:
adiw R28,1
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r NoGong 20 I
.dbsym r move 22 I
.dbend
.dbfunc e LCDFirst _LCDFirst fV
.even
_LCDFirst::
rcall push_gset2
sbiw R28,2
.dbline -1
.dbline 577
; }//功能键按下第一次的循环
; }//功能按键按下的结尾
; }//KEYPRESS()结尾
;
; void LCDFirst(void)
; {
.dbline 578
; LCD_write_string(0,0,"2007 Graduate!!!");
ldi R24,<L337
ldi R25,>L337
std y+1,R25
std y+0,R24
clr R18
clr R16
rcall _LCD_write_string
.dbline 579
; LCD_write_string(0,1,"Name:CenWenJiao");// 姓名
ldi R24,<L338
ldi R25,>L338
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 580
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 581
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 582
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 583
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 584
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 585
; LCD_write_command(0x01);//清屏程序
ldi R16,1
rcall _LCD_write_command
.dbline 586
; LCD_write_string(0,0," IFID SYSTEM !");
ldi R24,<L339
ldi R25,>L339
std y+1,R25
std y+0,R24
clr R18
clr R16
rcall _LCD_write_string
.dbline 587
; LCD_write_string(0,1," TIME module !"); //题目
ldi R24,<L340
ldi R25,>L340
std y+1,R25
std y+0,R24
ldi R18,1
clr R16
rcall _LCD_write_string
.dbline 588
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 589
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 590
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 591
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 592
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 593
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 594
; delay_nus(100000);
ldi R20,160
ldi R21,134
ldi R22,1
ldi R23,0
movw R16,R20
rcall _delay_nus
.dbline 595
; LCD_write_command(0x01);//清屏程序
ldi R16,1
rcall _LCD_write_command
.dbline -2
L336:
adiw R28,2
rcall pop_gset2
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
; CO -> R20
.even
_main::
.dbline -1
.dbline 602
;
; }
; /*CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
; 系统主函数
; CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC*/
; void main()
; {char CO=0;
.dbline 602
clr R20
.dbline 604
; //port_init();
; init_devices(); //初始化1302
rcall _init_devices
.dbline 607
; //delay_nus(1000);
;
; init_devicesl(); //初始化LCD1602
rcall _init_devicesl
.dbline 608
; DS1302_WriteTime();//时间校准
rcall _DS1302_WriteTime
.dbline 609
; LCDFirst(); //显示开机词
rcall _LCDFirst
rjmp L343
L342:
.dbline 611
.dbline 612
rcall _DS1302_ReadTime
.dbline 619
rcall _SendDataForDisplay
.dbline 620
rcall _keypress
.dbline 621
L343:
.dbline 610
rjmp L342
X10:
.dbline -2
L341:
.dbline 0 ; func end
ret
.dbsym r CO 20 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\biyesheji\SUCCES~1\SENDSE~1\SETPFI~2\程序\DS1302.c
_year1::
.blkb 1
.dbfile E:\biyesheji\SUCCES~1\SENDSE~1\SETPFI~2\程序/ds1302.h
.dbsym e year1 _year1 c
_month1::
.blkb 1
.dbsym e month1 _month1 c
_week1::
.blkb 1
.dbsym e week1 _week1 c
_date1::
.blkb 1
.dbsym e date1 _date1 c
_hour1::
.blkb 1
.dbsym e hour1 _hour1 c
_minute1::
.blkb 1
.dbsym e minute1 _minute1 c
_second1::
.blkb 1
.dbsym e second1 _second1 c
_yearth::
.blkb 1
.dbsym e yearth _yearth c
_yeartl::
.blkb 1
.dbsym e yeartl _yeartl c
_monthth::
.blkb 1
.dbsym e monthth _monthth c
_monthtl::
.blkb 1
.dbsym e monthtl _monthtl c
_dateth::
.blkb 1
.dbsym e dateth _dateth c
_datetl::
.blkb 1
.dbsym e datetl _datetl c
_hourth::
.blkb 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -