📄 clock.src
字号:
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [2] = ':';
; SOURCE LINE # 78
INC DPTR
MOV A,#03AH
MOVX @DPTR,A
; buf [3] = (mins / 10) + '0';
; SOURCE LINE # 79
MOV R6,mins?446
MOV R7,mins?446+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R7
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [4] = (mins % 10) + '0';
; SOURCE LINE # 80
MOV R6,mins?446
MOV R7,mins?446+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R5
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [5] = ':';
; SOURCE LINE # 81
INC DPTR
MOV A,#03AH
MOVX @DPTR,A
; buf [6] = (secs / 10) + '0';
; SOURCE LINE # 82
MOV R6,secs?445
MOV R7,secs?445+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R7
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [7] = (secs % 10) + '0';
; SOURCE LINE # 83
MOV R6,secs?445
MOV R7,secs?445+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R5
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [8] = '.';
; SOURCE LINE # 84
INC DPTR
MOV A,#02EH
MOVX @DPTR,A
; buf [9] = (hsecs / 10) + '0';
; SOURCE LINE # 85
MOV R6,hsecs?444
MOV R7,hsecs?444+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R7
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [10] = (hsecs % 10) + '0';
; SOURCE LINE # 86
MOV R6,hsecs?444
MOV R7,hsecs?444+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R5
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [11] = '\0';
; SOURCE LINE # 87
CLR A
INC DPTR
MOVX @DPTR,A
;
; #ifdef evalboard /* 采用硬件目标板时需要使用以下数组 */
; dg[7]=buf[7]; /* 准备硬件目标板LED 显示数据 */
; SOURCE LINE # 90
MOV DPTR,#buf?443+07H
MOVX A,@DPTR
MOV dg+07H,A
; dg[6]=buf[6];
; SOURCE LINE # 91
MOV DPTR,#buf?443+06H
MOVX A,@DPTR
MOV dg+06H,A
; dg[4]=buf[4];
; SOURCE LINE # 92
MOV DPTR,#buf?443+04H
MOVX A,@DPTR
MOV dg+04H,A
; dg[3]=buf[3];
; SOURCE LINE # 93
MOV DPTR,#buf?443+03H
MOVX A,@DPTR
MOV dg+03H,A
; dg[1]=buf[1];
; SOURCE LINE # 94
MOV DPTR,#buf?443+01H
MOVX A,@DPTR
MOV dg+01H,A
; dg[0]=buf[0];
; SOURCE LINE # 95
MOV DPTR,#buf?443
MOVX A,@DPTR
MOV dg,A
; DISPLY(dg); /* 点亮硬件目标板LED */
; SOURCE LINE # 96
MOV R7,#LOW (dg)
LCALL _DISPLY
; #endif
;
; com_puts ("\r\n");
; SOURCE LINE # 99
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
LCALL _com_puts
; com_puts (buf);
; SOURCE LINE # 100
MOV R3,#01H
MOV R2,#HIGH (buf?443)
MOV R1,#LOW (buf?443)
LCALL _com_puts
; com_puts ("\r\n");
; SOURCE LINE # 101
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
LJMP _com_puts
; END OF clock_out_time
; }
;
; /* 设置屏幕时间按"HHMMSS"格式显示 */
; char strtotm ( unsigned long *t, char *s) {
RSEG ?PR?_strtotm?CLOCK
_strtotm:
USING 0
; SOURCE LINE # 105
MOV t?549,R3
MOV t?549+01H,R2
MOV t?549+02H,R1
; char *s2;
; unsigned char tmp;
; if (strlen (s) != 6)
; SOURCE LINE # 108
MOV R3,s?550
MOV R2,s?550+01H
MOV R1,s?550+02H
LCALL _strlen
MOV A,R7
XRL A,#06H
ORL A,R6
JZ ?C0012
; return (-1);
; SOURCE LINE # 109
MOV R7,#0FFH
RET
?C0012:
;
; for (s2 = s; *s2 != '\0'; s2++) {
; SOURCE LINE # 111
MOV s2?551,s?550
MOV s2?551+01H,s?550+01H
MOV s2?551+02H,s?550+02H
?C0014:
MOV R3,s2?551
MOV R2,s2?551+01H
MOV R1,s2?551+02H
LCALL ?C?CLDPTR
MOV R7,A
JZ ?C0015
; if (!isdigit (*s2))
; SOURCE LINE # 112
LCALL _isdigit
JC ?C0016
; return (-1);
; SOURCE LINE # 113
MOV R7,#0FFH
RET
; }
; SOURCE LINE # 114
?C0016:
MOV A,#01H
ADD A,s2?551+02H
MOV s2?551+02H,A
CLR A
ADDC A,s2?551+01H
MOV s2?551+01H,A
SJMP ?C0014
?C0015:
;
; tmp = ((s[0] - '0') * 10) + (s[1] - '0');
; SOURCE LINE # 116
MOV R3,s?550
MOV R2,s?550+01H
MOV R1,s?550+02H
MOV DPTR,#01H
LCALL ?C?CLDOPTR
ADD A,#0D0H
MOV R7,A
LCALL ?C?CLDPTR
ADD A,#0D0H
MOV B,#0AH
MUL AB
ADD A,R7
MOV tmp?552,A
; if (tmp >= 24)
; SOURCE LINE # 117
CLR C
SUBB A,#018H
JC ?C0018
; return (-1);
; SOURCE LINE # 118
MOV R7,#0FFH
RET
?C0018:
; *t = tmp;
; SOURCE LINE # 119
MOV R7,tmp?552
CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R3,t?549
MOV R2,t?549+01H
MOV R1,t?549+02H
LCALL ?C?LSTPTR
; tmp = ((s[0] - '0') * 10) + (s[1] - '0');
; SOURCE LINE # 120
MOV R3,s?550
MOV R2,s?550+01H
MOV R1,s?550+02H
MOV DPTR,#01H
LCALL ?C?CLDOPTR
ADD A,#0D0H
MOV R7,A
LCALL ?C?CLDPTR
ADD A,#0D0H
MOV B,#0AH
MUL AB
ADD A,R7
MOV tmp?552,A
; if (tmp >= 24)
; SOURCE LINE # 121
CLR C
SUBB A,#018H
JC ?C0019
; return (-1);
; SOURCE LINE # 122
MOV R7,#0FFH
RET
?C0019:
; *t = tmp;
; SOURCE LINE # 123
MOV R7,tmp?552
CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R3,t?549
MOV R2,t?549+01H
MOV R1,t?549+02H
LCALL ?C?LSTPTR
; tmp = ((s[2] - '0') * 10) + (s[3] - '0');
; SOURCE LINE # 124
MOV R3,s?550
MOV R2,s?550+01H
MOV R1,s?550+02H
MOV DPTR,#02H
LCALL ?C?CLDOPTR
ADD A,#0D0H
MOV B,#0AH
MUL AB
MOV R7,A
MOV DPTR,#03H
LCALL ?C?CLDOPTR
ADD A,#0D0H
ADD A,R7
MOV tmp?552,A
; if (tmp >= 60)
; SOURCE LINE # 125
CLR C
SUBB A,#03CH
JC ?C0020
; return (-1);
; SOURCE LINE # 126
MOV R7,#0FFH
RET
?C0020:
; *t = (60 * *t) + tmp;
; SOURCE LINE # 127
MOV R3,t?549
MOV R2,t?549+01H
MOV R1,t?549+02H
LCALL ?C?LLDPTR
CLR A
MOV R3,#03CH
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?LMUL
MOV R0,AR4
MOV R1,AR5
MOV R2,AR6
MOV R3,AR7
CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV A,R3
ADD A,tmp?552
MOV R7,A
MOV A,R6
ADDC A,R2
MOV R6,A
MOV A,R5
ADDC A,R1
MOV R5,A
MOV A,R4
ADDC A,R0
MOV R4,A
MOV R3,t?549
MOV R2,t?549+01H
MOV R1,t?549+02H
LCALL ?C?LSTPTR
; tmp = ((s[4] - '0') * 10) + (s[5] - '0');
; SOURCE LINE # 128
MOV R3,s?550
MOV R2,s?550+01H
MOV R1,s?550+02H
MOV DPTR,#04H
LCALL ?C?CLDOPTR
ADD A,#0D0H
MOV B,#0AH
MUL AB
MOV R7,A
MOV DPTR,#05H
LCALL ?C?CLDOPTR
ADD A,#0D0H
ADD A,R7
MOV tmp?552,A
; if (tmp >= 60)
; SOURCE LINE # 129
CLR C
SUBB A,#03CH
JC ?C0021
; return (-1);
; SOURCE LINE # 130
MOV R7,#0FFH
RET
?C0021:
; *t = (60 * *t) + tmp;
; SOURCE LINE # 131
MOV R3,t?549
MOV R2,t?549+01H
MOV R1,t?549+02H
LCALL ?C?LLDPTR
CLR A
MOV R3,#03CH
MOV R2,A
MOV R1,A
MOV R0,A
LCALL ?C?LMUL
MOV R0,AR4
MOV R1,AR5
MOV R2,AR6
MOV R3,AR7
CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV A,R3
ADD A,tmp?552
MOV R7,A
MOV A,R6
ADDC A,R2
MOV R6,A
MOV A,R5
ADDC A,R1
MOV R5,A
MOV A,R4
ADDC A,R0
MOV R4,A
MOV R3,t?549
MOV R2,t?549+01H
MOV R1,t?549+02H
LCALL ?C?LSTPTR
; return (0);
; SOURCE LINE # 132
MOV R7,#00H
; }
; SOURCE LINE # 133
?C0013:
RET
; END OF _strtotm
;
; /* 闹钟设置函数 */
; void alarm_set (unsigned setmins) {
RSEG ?PR?_alarm_set?CLOCK
_alarm_set:
; SOURCE LINE # 136
;---- Variable 'setmins?653' assigned to Register 'R6/R7' ----
; almmins = setmins;
; SOURCE LINE # 137
MOV DPTR,#almmins
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
; alm_flag = 1;
; SOURCE LINE # 138
MOV DPTR,#alm_flag
MOV A,#01H
MOVX @DPTR,A
; }
; SOURCE LINE # 139
RET
; END OF _alarm_set
;
; /* 闹钟清零函数 */
; void alarm_clr (void) {
RSEG ?PR?alarm_clr?CLOCK
alarm_clr:
; SOURCE LINE # 142
; alm_flag = 0;
; SOURCE LINE # 143
CLR A
MOV DPTR,#alm_flag
MOVX @DPTR,A
; }
; SOURCE LINE # 144
RET
; END OF alarm_clr
;
; /* 闹钟时间输出函数 */
; void alarm_out_time (void) {
RSEG ?PR?alarm_out_time?CLOCK
alarm_out_time:
USING 0
; SOURCE LINE # 147
; xdata char buf [21];
; unsigned mins;
; unsigned hours;
; unsigned t;
;
; if (alm_flag == 0) {
; SOURCE LINE # 153
MOV DPTR,#alm_flag
MOVX A,@DPTR
JNZ ?C0024
; com_puts ("\r\nNone\r\n");
; SOURCE LINE # 154
MOV R3,#0FFH
MOV R2,#HIGH (?SC_3)
MOV R1,#LOW (?SC_3)
AJMP ?C0026
; return;
; }
; SOURCE LINE # 156
?C0024:
; t = almmins;
; SOURCE LINE # 157
MOV DPTR,#almmins
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
;---- Variable 't?857' assigned to Register 'R2/R3' ----
MOV R3,A
MOV R2,AR6
; mins = t % 60;
; SOURCE LINE # 158
MOV R4,#00H
MOV R5,#03CH
MOV R7,A
LCALL ?C?UIDIV
MOV mins?855,R4
MOV mins?855+01H,R5
; t /= 60;
; SOURCE LINE # 159
MOV R4,#00H
MOV R5,#03CH
MOV R7,AR3
MOV R6,AR2
LCALL ?C?UIDIV
; hours = t % 24;
; SOURCE LINE # 160
MOV R4,#00H
MOV R5,#018H
LCALL ?C?UIDIV
;---- Variable 'hours?856' assigned to Register 'R2/R3' ----
MOV R3,AR5
MOV R2,AR4
;
; buf [0] = (hours / 10) + '0';
; SOURCE LINE # 162
MOV R4,#00H
MOV R5,#0AH
MOV R7,AR3
MOV R6,AR2
LCALL ?C?UIDIV
MOV A,R7
ADD A,#030H
MOV DPTR,#buf?854
MOVX @DPTR,A
; buf [1] = (hours % 10) + '0';
; SOURCE LINE # 163
MOV R6,AR2
MOV R7,AR3
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R5
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [2] = ':';
; SOURCE LINE # 164
INC DPTR
MOV A,#03AH
MOVX @DPTR,A
; buf [3] = (mins / 10) + '0';
; SOURCE LINE # 165
MOV R6,mins?855
MOV R7,mins?855+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R7
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [4] = (mins % 10) + '0';
; SOURCE LINE # 166
MOV R6,mins?855
MOV R7,mins?855+01H
MOV R4,#00H
MOV R5,#0AH
LCALL ?C?UIDIV
MOV A,R5
ADD A,#030H
INC DPTR
MOVX @DPTR,A
; buf [5] = '\0';
; SOURCE LINE # 167
CLR A
INC DPTR
MOVX @DPTR,A
;
; com_puts ("\r\n");
; SOURCE LINE # 169
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
LCALL _com_puts
; com_puts (buf);
; SOURCE LINE # 170
MOV R3,#01H
MOV R2,#HIGH (buf?854)
MOV R1,#LOW (buf?854)
LCALL _com_puts
; com_puts ("\r\n");
; SOURCE LINE # 171
MOV R3,#0FFH
MOV R2,#HIGH (?SC_0)
MOV R1,#LOW (?SC_0)
?C0026:
LCALL _com_puts
; }
; SOURCE LINE # 172
?C0025:
RET
; END OF alarm_out_time
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -