📄 time.lis
字号:
0168 L30:
0168 81E0 ldi R24,1
016A 90E0 ldi R25,0
016C 6C01 movw R12,R24
016E 05C0 xjmp L29
0170 L28:
0170 862F mov R24,R22
0172 9927 clr R25
0174 8F71 andi R24,31
0176 9070 andi R25,0
0178 6C01 movw R12,R24
017A L29:
017A B601 movw R22,R12
017C ;
017C ; res=res+res1+res2;
017C 1A01 movw R2,R20
017E 2A0C add R2,R10
0180 3B1C adc R3,R11
0182 2C0C add R2,R12
0184 3D1C adc R3,R13
0186 A101 movw R20,R2
0188 ; return res;
0188 8101 movw R16,R2
018A L22:
018A 0E940000 xcall pop_gset4
018E .dbline 0 ; func end
018E 0895 ret
0190 ; res2 -> R22,R23
0190 ; hour -> R20
0190 ; minute -> R10
0190 ; res1 -> R10,R11
0190 ; second -> R22
0190 ; res -> R20,R21
.even
0190 _fs_getTime::
0190 0E940000 xcall push_gset4
0194 ; #endif
0194 ; }
0194 ; /*****************************************************************************/
0194 ;
0194 ; INT16U fs_getTime(void)
0194 ; {
0194 ; #if DATE_TIME_EN==0
0194 ; return(0);
0194 ; #else
0194 ; INT8U second,minute,hour ;
0194 ; INT16U res,res1,res2;
0194 ;
0194 ; second=time_getSecond();
0194 57D0 xcall _fs_getSecond
0196 602F mov R22,R16
0198 ; minute=time_getMinute();
0198 52D0 xcall _fs_getMinute
019A A02E mov R10,R16
019C ; hour=time_getHour();
019C 4DD0 xcall _fs_getHour
019E 402F mov R20,R16
01A0 ;
01A0 ; res=( (hour>23)?0:(hour&0x1F) );
01A0 87E1 ldi R24,23
01A2 8017 cp R24,R16
01A4 18F4 brsh L32
01A6 CC24 clr R12
01A8 DD24 clr R13
01AA 05C0 xjmp L33
01AC L32:
01AC 842F mov R24,R20
01AE 9927 clr R25
01B0 8F71 andi R24,31
01B2 9070 andi R25,0
01B4 6C01 movw R12,R24
01B6 L33:
01B6 A601 movw R20,R12
01B8 ; res=res<<11;
01B8 2BE0 ldi R18,11
01BA 30E0 ldi R19,0
01BC 8A01 movw R16,R20
01BE 0E940000 xcall lsl16
01C2 A801 movw R20,R16
01C4 ;
01C4 ; res1=( (minute>59)?0:(minute&0x3F) );
01C4 8BE3 ldi R24,59
01C6 8A15 cp R24,R10
01C8 18F4 brsh L34
01CA CC24 clr R12
01CC DD24 clr R13
01CE 05C0 xjmp L35
01D0 L34:
01D0 8A2D mov R24,R10
01D2 9927 clr R25
01D4 8F73 andi R24,63
01D6 9070 andi R25,0
01D8 6C01 movw R12,R24
01DA L35:
01DA 5601 movw R10,R12
01DC ; res1=res1<<5;
01DC 25E0 ldi R18,5
01DE 30E0 ldi R19,0
01E0 8501 movw R16,R10
01E2 0E940000 xcall lsl16
01E6 5801 movw R10,R16
01E8 ;
01E8 ; res2=( (second>59)?0:(second-second%2)/2 );
01E8 8BE3 ldi R24,59
01EA 8617 cp R24,R22
01EC 18F4 brsh L36
01EE CC24 clr R12
01F0 DD24 clr R13
01F2 10C0 xjmp L37
01F4 L36:
01F4 22E0 ldi R18,2
01F6 30E0 ldi R19,0
01F8 062F mov R16,R22
01FA 1127 clr R17
01FC 0E940000 xcall mod16s
0200 1801 movw R2,R16
0202 062F mov R16,R22
0204 1127 clr R17
0206 0219 sub R16,R2
0208 1309 sbc R17,R3
020A 22E0 ldi R18,2
020C 30E0 ldi R19,0
020E 0E940000 xcall div16s
0212 6801 movw R12,R16
0214 L37:
0214 B601 movw R22,R12
0216 ;
0216 ; res=res+res1+res2;
0216 1A01 movw R2,R20
0218 2A0C add R2,R10
021A 3B1C adc R3,R11
021C 2C0C add R2,R12
021E 3D1C adc R3,R13
0220 A101 movw R20,R2
0222 ; return res;
0222 8101 movw R16,R2
0224 L31:
0224 0E940000 xcall pop_gset4
0228 .dbline 0 ; func end
0228 0895 ret
.even
022A _fs_getYear::
022A ; #endif
022A ; }
022A ;
022A ;
022A ; #if DATE_TIME_EN==1
022A ;
022A ; INT16U fs_getYear(void)
022A ; {
022A ; return 2008;
022A 08ED ldi R16,2008
022C 17E0 ldi R17,7
022E L38:
022E .dbline 0 ; func end
022E 0895 ret
.even
0230 _fs_getMonth::
0230 ; }
0230 ; INT8U fs_getMonth(void)
0230 ; {
0230 ; return 5;
0230 05E0 ldi R16,5
0232 L39:
0232 .dbline 0 ; func end
0232 0895 ret
.even
0234 _fs_getDay::
0234 ; }
0234 ; INT8U fs_getDay(void)
0234 ; {
0234 ; return 20;
0234 04E1 ldi R16,20
0236 L40:
0236 .dbline 0 ; func end
0236 0895 ret
.even
0238 _fs_getHour::
0238 ; }
0238 ;
0238 ; INT8U fs_getHour(void)
0238 ; {
0238 ; return Hour;
0238 00910000 lds R16,_Hour
023C L41:
023C .dbline 0 ; func end
023C 0895 ret
.even
023E _fs_getMinute::
023E ; }
023E ; INT8U fs_getMinute(void)
023E ; {
023E ; return Minute;
023E 00910100 lds R16,_Minute
0242 L42:
0242 .dbline 0 ; func end
0242 0895 ret
.even
0244 _fs_getSecond::
0244 ; }
0244 ; INT8U fs_getSecond(void)
0244 ; {
0244 ; return Second;
0244 00910200 lds R16,_Second
0248 L43:
0248 .dbline 0 ; func end
0248 0895 ret
024A ; time -> y+1
024A ; y0 -> R22
024A ; x0 -> R20
.even
024A _GUI_Display_Time::
024A 0E940000 xcall push_gset2
024E 622F mov R22,R18
0250 402F mov R20,R16
0252 2A97 sbiw R28,10
0254 ; }
0254 ;
0254 ;
0254 ; extern INT8U LCD_PenColor;
0254 ;
0254 ; //液晶显示日期、时间
0254 ; void GUI_Display_Time(INT8U x0,INT8U y0)
0254 ; {
0254 ; INT8U time[9];
0254 ;
0254 ; time[0]=fs_getHour()/10+'0';
0254 F1DF xcall _fs_getHour
0256 1AE0 ldi R17,10
0258 0E940000 xcall div8u
025C 802F mov R24,R16
025E 805D subi R24,208 ; addi 48
0260 8983 std y+1,R24
0262 ; time[1]=fs_getHour()%10+'0';
0262 EADF xcall _fs_getHour
0264 1AE0 ldi R17,10
0266 0E940000 xcall mod8u
026A 802F mov R24,R16
026C 805D subi R24,208 ; addi 48
026E 8A83 std y+2,R24
0270 ; time[2]=':';
0270 8AE3 ldi R24,58
0272 8B83 std y+3,R24
0274 ; time[3]=fs_getMinute()/10+'0';
0274 E4DF xcall _fs_getMinute
0276 1AE0 ldi R17,10
0278 0E940000 xcall div8u
027C 802F mov R24,R16
027E 805D subi R24,208 ; addi 48
0280 8C83 std y+4,R24
0282 ; time[4]=fs_getMinute()%10+'0';
0282 DDDF xcall _fs_getMinute
0284 1AE0 ldi R17,10
0286 0E940000 xcall mod8u
028A 802F mov R24,R16
028C 805D subi R24,208 ; addi 48
028E 8D83 std y+5,R24
0290 ; time[5]=':';
0290 8AE3 ldi R24,58
0292 8E83 std y+6,R24
0294 ; time[6]=fs_getSecond()/10+'0';
0294 D7DF xcall _fs_getSecond
0296 1AE0 ldi R17,10
0298 0E940000 xcall div8u
029C 802F mov R24,R16
029E 805D subi R24,208 ; addi 48
02A0 8F83 std y+7,R24
02A2 ; time[7]=fs_getSecond()%10+'0';
02A2 D0DF xcall _fs_getSecond
02A4 1AE0 ldi R17,10
02A6 0E940000 xcall mod8u
02AA 802F mov R24,R16
02AC 805D subi R24,208 ; addi 48
02AE 8887 std y+8,R24
02B0 ; time[8]='\0';
02B0 2224 clr R2
02B2 2986 std y+9,R2
02B4 ;
02B4 ; LCD_PenColor = 0b11111100; //blue
02B4 8CEF ldi R24,252
02B6 80930000 sts _LCD_PenColor,R24
02BA ; //GUI_DispStringAt(__DATE__,20,16);
02BA ; GUI_DispStringAt(&time[0],x0,y0);
02BA 6883 std y+0,R22
02BC 242F mov R18,R20
02BE 8E01 movw R16,R28
02C0 0F5F subi R16,255 ; offset = 1
02C2 1F4F sbci R17,255
02C4 0E940000 xcall _GUI_DispStringAt
02C8 L44:
02C8 2A96 adiw R28,10
02CA 0E940000 xcall pop_gset2
02CE .dbline 0 ; func end
02CE 0895 ret
.area data(ram, con, rel)
0004 L2:
0004 .blkb 9
.area idata
0004 32313A35303A303900 .byte 50,49,58,53,48,58,48,57,0
.area data(ram, con, rel)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -