📄 ds12887.lst
字号:
(0364) write_ds(chRegB,chRegB | MASK_SETB_SET); /* 禁止刷新 */
01B0 E82B LDI R18,0x8B
01B1 E00B LDI R16,0xB
01B2 DF8E RCALL _write_ds
(0365) write_ds(chDateChannel,chDate);
01B3 2F26 MOV R18,R22
01B4 E007 LDI R16,7
01B5 DF8B RCALL _write_ds
(0366) write_ds(chMonthChannel,chMonth);
01B6 2F24 MOV R18,R20
01B7 E008 LDI R16,0x8
01B8 DF88 RCALL _write_ds
(0367) write_ds(chYearChannel,chYear);
01B9 812C LDD R18,4+Y
01BA E009 LDI R16,0x9
01BB DF85 RCALL _write_ds
(0368) write_ds(chRegB,chRegB & MASK_CLR_SET); /* 使能刷新 */
01BC E02B LDI R18,0xB
01BD E00B LDI R16,0xB
01BE DF82 RCALL _write_ds
(0369) }
01BF 940E02EA CALL pop_gset2
01C1 9508 RET
(0370)
(0371) /*******************************************************************/
(0372) /* */
(0373) /* 时间 正常显示菜单 */
(0374) /* */
(0375) /*******************************************************************/
(0376) void Natural_Menu ()
(0377) {
(0378) uchar m;
(0379) LCD1602_initial(); //初始化LCD
_Natural_Menu:
m --> Y+1
01C2 DF67 RCALL _LCD1602_initial
(0380) LCD1602_gotoXY(1,0); //设置显示位置为第一行的第1个字符
01C3 2722 CLR R18
01C4 E001 LDI R16,1
01C5 DF4E RCALL _LCD1602_gotoXY
(0381) LCD1602_sendstr("DATE: 2008-08-08");
01C6 E801 LDI R16,0x81
01C7 E010 LDI R17,0
01C8 DF27 RCALL _LCD1602_sendstr
(0382) // for(m=0;m<16;m++)
(0383) // LCD1602_sendbyte(iDat,cdis1[m]);
(0384)
(0385) LCD1602_gotoXY(2,0); //设置显示位置为第二行第1个字符
01C9 2722 CLR R18
01CA E002 LDI R16,2
01CB DF48 RCALL _LCD1602_gotoXY
(0386) LCD1602_sendstr("TIME: 08: 08: 08");
01CC E700 LDI R16,0x70
01CD E010 LDI R17,0
(0387) // for(m=0;m<16;m++)
(0388) // LCD1602_sendbyte(iDat,cdis2[m]); //显示字符
(0389) }
01CE CF21 RJMP _LCD1602_sendstr
(0390) /*******************************************************************/
(0391) /* */
(0392) /* 日期 正常显示数据 */
(0393) /* */
(0394) /*******************************************************************/
(0395) void daydis()
(0396) {
(0397) display[0]=(temp_data1[0]>>4)+0x30;
_daydis:
01CF 91800060 LDS R24,__idata_start
01D1 9582 SWAP R24
01D2 708F ANDI R24,0xF
01D3 5D80 SUBI R24,0xD0
01D4 93800066 STS R24,0x66
(0398) display[1]=(temp_data1[0]&0x0F)+0x30;
01D6 91800060 LDS R24,__idata_start
01D8 708F ANDI R24,0xF
01D9 5D80 SUBI R24,0xD0
01DA 93800067 STS R24,0x67
(0399) display[2]=(temp_data1[1]>>4)+0x30;
01DC 91800061 LDS R24,__idata_start+1
01DE 9582 SWAP R24
01DF 708F ANDI R24,0xF
01E0 5D80 SUBI R24,0xD0
01E1 93800068 STS R24,0x68
(0400) display[3]=(temp_data1[1]&0x0F)+0x30;
01E3 91800061 LDS R24,__idata_start+1
01E5 708F ANDI R24,0xF
01E6 5D80 SUBI R24,0xD0
01E7 93800069 STS R24,0x69
(0401) display[4]=(temp_data1[2]>>4)+0x30;
01E9 91800062 LDS R24,__idata_start+2
01EB 9582 SWAP R24
01EC 708F ANDI R24,0xF
01ED 5D80 SUBI R24,0xD0
01EE 9380006A STS R24,0x6A
(0402) display[5]=(temp_data1[2]&0x0F)+0x30;
01F0 91800062 LDS R24,__idata_start+2
01F2 708F ANDI R24,0xF
01F3 5D80 SUBI R24,0xD0
01F4 9380006B STS R24,0x6B
(0403)
(0404) LCD1602_gotoXY(1,8);
01F6 E028 LDI R18,0x8
01F7 E001 LDI R16,1
01F8 DF1B RCALL _LCD1602_gotoXY
(0405) LCD1602_sendbyte(iDat,display[0]);
01F9 91200066 LDS R18,0x66
01FB E001 LDI R16,1
01FC DEE0 RCALL _LCD1602_sendbyte
(0406) LCD1602_sendbyte(iDat,display[1]);
01FD 91200067 LDS R18,0x67
01FF E001 LDI R16,1
0200 DEDC RCALL _LCD1602_sendbyte
(0407) LCD1602_gotoXY(1,11);
0201 E02B LDI R18,0xB
0202 E001 LDI R16,1
0203 DF10 RCALL _LCD1602_gotoXY
(0408) LCD1602_sendbyte(iDat,display[2]);
0204 91200068 LDS R18,0x68
0206 E001 LDI R16,1
0207 DED5 RCALL _LCD1602_sendbyte
(0409) LCD1602_sendbyte(iDat,display[3]);
0208 91200069 LDS R18,0x69
020A E001 LDI R16,1
020B DED1 RCALL _LCD1602_sendbyte
(0410) LCD1602_gotoXY(1,14);
020C E02E LDI R18,0xE
020D E001 LDI R16,1
020E DF05 RCALL _LCD1602_gotoXY
(0411) LCD1602_sendbyte(iDat,display[4]);
020F 9120006A LDS R18,0x6A
0211 E001 LDI R16,1
0212 DECA RCALL _LCD1602_sendbyte
(0412) LCD1602_sendbyte(iDat,display[5]);
0213 9120006B LDS R18,0x6B
0215 E001 LDI R16,1
(0413)
(0414) }
0216 CEC6 RJMP _LCD1602_sendbyte
(0415) /*******************************************************************/
(0416) /* */
(0417) /* 时间 正常显示数据 */
(0418) /* */
(0419) /*******************************************************************/
(0420) void timedis()
(0421) {
(0422) display[0]=(temp_data2[0]>>4)+0x30;
_timedis:
0217 91800063 LDS R24,__idata_start+3
0219 9582 SWAP R24
021A 708F ANDI R24,0xF
021B 5D80 SUBI R24,0xD0
021C 93800066 STS R24,0x66
(0423) display[1]=(temp_data2[0]&0x0F)+0x30;
021E 91800063 LDS R24,__idata_start+3
0220 708F ANDI R24,0xF
0221 5D80 SUBI R24,0xD0
0222 93800067 STS R24,0x67
(0424) display[2]=(temp_data2[1]>>4)+0x30;
0224 91800064 LDS R24,0x64
0226 9582 SWAP R24
0227 708F ANDI R24,0xF
0228 5D80 SUBI R24,0xD0
0229 93800068 STS R24,0x68
(0425) display[3]=(temp_data2[1]&0x0F)+0x30;
022B 91800064 LDS R24,0x64
022D 708F ANDI R24,0xF
022E 5D80 SUBI R24,0xD0
022F 93800069 STS R24,0x69
(0426) display[4]=(temp_data2[2]>>4)+0x30;
0231 91800065 LDS R24,0x65
0233 9582 SWAP R24
0234 708F ANDI R24,0xF
0235 5D80 SUBI R24,0xD0
0236 9380006A STS R24,0x6A
(0427) display[5]=(temp_data2[2]&0x0F)+0x30;
0238 91800065 LDS R24,0x65
023A 708F ANDI R24,0xF
023B 5D80 SUBI R24,0xD0
023C 9380006B STS R24,0x6B
(0428) LCD1602_gotoXY(2,6);
023E E026 LDI R18,6
023F E002 LDI R16,2
0240 DED3 RCALL _LCD1602_gotoXY
(0429) LCD1602_sendbyte(iDat,display[0]);
0241 91200066 LDS R18,0x66
0243 E001 LDI R16,1
0244 DE98 RCALL _LCD1602_sendbyte
(0430) LCD1602_sendbyte(iDat,display[1]);
0245 91200067 LDS R18,0x67
0247 E001 LDI R16,1
0248 DE94 RCALL _LCD1602_sendbyte
(0431) LCD1602_gotoXY(2,10);
0249 E02A LDI R18,0xA
024A E002 LDI R16,2
024B DEC8 RCALL _LCD1602_gotoXY
(0432) LCD1602_sendbyte(iDat,display[2]);
024C 91200068 LDS R18,0x68
024E E001 LDI R16,1
024F DE8D RCALL _LCD1602_sendbyte
(0433) LCD1602_sendbyte(iDat,display[3]);
0250 91200069 LDS R18,0x69
0252 E001 LDI R16,1
0253 DE89 RCALL _LCD1602_sendbyte
(0434) LCD1602_gotoXY(2,14);
0254 E02E LDI R18,0xE
0255 E002 LDI R16,2
0256 DEBD RCALL _LCD1602_gotoXY
(0435) LCD1602_sendbyte(iDat,display[4]);
0257 9120006A LDS R18,0x6A
0259 E001 LDI R16,1
025A DE82 RCALL _LCD1602_sendbyte
(0436) LCD1602_sendbyte(iDat,display[5]);
025B 9120006B LDS R18,0x6B
025D E001 LDI R16,1
(0437)
(0438)
(0439) }
025E CE7E RJMP _LCD1602_sendbyte
_main:
sec_bak --> R20
sec --> R22
025F 9721 SBIW R28,1
(0440)
(0441) /*************************************************************
(0442) 函数功能:主函数
(0443) 应用范围:
(0444) 入口参数:
(0445) 出口参数:
(0446) *************************************************************/
(0447) void main(void)
(0448) {
(0449) unsigned char sec,sec_bak=sec;
0260 2F46 MOV R20,R22
(0450) Board_init();
0261 DE36 RCALL _Board_init
(0451) PORTA=0XFF;
0262 EF8F LDI R24,0xFF
0263 BB8B OUT P1B,R24
(0452) PORTC=0X1F;
0264 E18F LDI R24,0x1F
0265 BB85 OUT P15,R24
(0453) InitDs12c887();
0266 DF14 RCALL _InitDs12c887
(0454) SetDate(0x15,0x10,0x08);
0267 E088 LDI R24,0x8
0268 8388 STD R24,0+Y
0269 E120 LDI R18,0x10
026A E105 LDI R16,0x15
026B DF40 RCALL _SetDate
(0455) SetTime(0x10,0x10,0x11);
026C E181 LDI R24,0x11
026D 8388 STD R24,0+Y
026E E120 LDI R18,0x10
026F E100 LDI R16,0x10
0270 DF25 RCALL _SetTime
(0456) Natural_Menu ();
0271 DF50 RCALL _Natural_Menu
(0457) PORTD=0xFF;
0272 EF8F LDI R24,0xFF
0273 BB82 OUT P12,R24
0274 C033 RJMP 0x02A8
(0458)
(0459)
(0460) while(1)
(0461) {
(0462) PORTC&=0X1F;
0275 B385 IN R24,P15
0276 718F ANDI R24,0x1F
0277 BB85 OUT P15,R24
(0463) sec=GetSeconds();
0278 DF0F RCALL _GetSeconds
0279 2F60 MOV R22,R16
(0464)
(0465) if(sec!=sec_bak)
027A 1704 CP R16,R20
027B F161 BEQ 0x02A8
(0466) {
(0467)
(0468) sec_bak=sec;
027C 2F46 MOV R20,R22
(0469) temp_data1[0]=GetYear();
027D DF14 RCALL _GetYear
027E 93000060 STS R16,__idata_start
(0470) temp_data1[1]=GetMonth();
0280 DF0F RCALL _GetMonth
0281 93000061 STS R16,__idata_start+1
(0471) temp_data1[2]=GetDate();
0283 DF0A RCALL _GetDate
0284 93000062 STS R16,__idata_start+2
(0472) temp_data2[0]=GetHours();
0286 DF05 RCALL _GetHours
0287 93000063 STS R16,__idata_start+3
(0473) temp_data2[1]=GetMinutes();
0289 DF00 RCALL _GetMinutes
028A 93000064 STS R16,0x64
(0474) temp_data2[2]=GetSeconds();
028C DEFB RCALL _GetSeconds
028D 93000065 STS R16,0x65
(0475) daydis();
028F DF3F RCALL _daydis
(0476) timedis();
0290 DF86 RCALL _timedis
(0477) if(sec%2)
0291 E012 LDI R17,2
0292 2F06 MOV R16,R22
0293 940E02AB CALL mod8u
0295 2300 TST R16
0296 F041 BEQ 0x029F
(0478) {
(0479) LCD1602_gotoXY(2,12);
0297 E02C LDI R18,0xC
0298 E002 LDI R16,2
0299 DE7A RCALL _LCD1602_gotoXY
(0480) LCD1602_sendstr(" ");
029A E60E LDI R16,0x6E
029B E010 LDI R17,0
029C DE53 RCALL _LCD1602_sendstr
(0481) PORTC|=BIT(PC3);
029D 9AAB SBI P15,3
(0482) }
029E C007 RJMP 0x02A6
(0483) else
(0484) {
(0485) LCD1602_gotoXY(2,12);
029F E02C LDI R18,0xC
02A0 E002 LDI R16,2
02A1 DE72 RCALL _LCD1602_gotoXY
(0486) LCD1602_sendstr(":");
02A2 E60C LDI R16,0x6C
02A3 E010 LDI R17,0
02A4 DE4B RCALL _LCD1602_sendstr
(0487) PORTC&=~BIT(PC3);
02A5 98AB CBI P15,3
(0488) }
(0489) PORTD=0xFF;
02A6 EF8F LDI R24,0xFF
02A7 BB82 OUT P12,R24
02A8 CFCC RJMP 0x0275
(0490) }
(0491) }
(0492)
(0493)
(0494) }
FILE: <library>
02A9 9621 ADIW R28,1
02AA 9508 RET
mod8u:
02AB 9468 BSET 6
02AC C001 RJMP xdiv8u
div8u:
02AD 94E8 BCLR 6
xdiv8u:
02AE 932A ST R18,-Y
02AF 92FA ST R15,-Y
02B0 24FF CLR R15
02B1 E028 LDI R18,0x8
02B2 0F00 LSL R16
02B3 1CFF ROL R15
02B4 16F1 CP R15,R17
02B5 F010 BCS 0x02B8
02B6 1AF1 SUB R15,R17
02B7 9503 INC R16
02B8 952A DEC R18
02B9 F7C1 BNE 0x02B2
02BA F40E BRTC 0x02BC
02BB 2D0F MOV R16,R15
02BC 90F9 LD R15,Y+
02BD 9129 LD R18,Y+
02BE 9508 RET
empy16s:
02BF 920A ST R0,-Y
02C0 921A ST R1,-Y
02C1 938A ST R24,-Y
02C2 939A ST R25,-Y
02C3 9F02 MUL R16,R18
02C4 01C0 MOVW R24,R0
02C5 9F12 MUL R17,R18
02C6 0D90 ADD R25,R0
02C7 9F03 MUL R16,R19
02C8 0D90 ADD R25,R0
02C9 018C MOVW R16,R24
02CA 9199 LD R25,Y+
02CB 9189 LD R24,Y+
02CC 9019 LD R1,Y+
02CD 9009 LD R0,Y+
02CE 9508 RET
push_gset1:
02CF 935A ST R21,-Y
02D0 934A ST R20,-Y
02D1 9508 RET
pop_gset1:
02D2 E0E1 LDI R30,1
pop:
02D3 9149 LD R20,Y+
02D4 9159 LD R21,Y+
02D5 FDE0 SBRC R30,0
02D6 9508 RET
02D7 9169 LD R22,Y+
02D8 9179 LD R23,Y+
02D9 FDE1 SBRC R30,1
02DA 9508 RET
02DB 90A9 LD R10,Y+
02DC 90B9 LD R11,Y+
02DD FDE2 SBRC R30,2
02DE 9508 RET
02DF 90C9 LD R12,Y+
02E0 90D9 LD R13,Y+
02E1 FDE3 SBRC R30,3
02E2 9508 RET
02E3 90E9 LD R14,Y+
02E4 90F9 LD R15,Y+
02E5 9508 RET
push_gset2:
02E6 937A ST R23,-Y
02E7 936A ST R22,-Y
02E8 940C02CF JMP push_gset1
pop_gset2:
02EA E0E2 LDI R30,2
02EB 940C02D3 JMP pop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -