📄 stimer.src
字号:
RETI
; END OF IntSysTimer
;
; void beep(unsigned char times, unsigned char tick)
RSEG ?PR?_beep?STIMER
_beep:
USING 0
; SOURCE LINE # 128
;---- Variable 'times?240' assigned to Register 'R7' ----
;---- Variable 'tick?241' assigned to Register 'R5' ----
; {
; SOURCE LINE # 129
; fSetting = 1;
; SOURCE LINE # 130
SETB fSetting
; BuzzerTick = tick;
; SOURCE LINE # 131
XCH A,R6
MOV A,R5
XCH A,R6
MOV BuzzerTick,R6
; BuzzerTimes = times;
; SOURCE LINE # 132
MOV BuzzerTimes,R7
; if(times)
; SOURCE LINE # 133
MOV A,R7
JZ ?C0009
; {
; SOURCE LINE # 134
; BUZZER = BUZZERON;
; SOURCE LINE # 135
CLR P3_5
; }
; SOURCE LINE # 136
SJMP ?C0010
?C0009:
; else
; {
; SOURCE LINE # 138
; BUZZER = BUZZEROFF;
; SOURCE LINE # 139
SETB P3_5
; }
; SOURCE LINE # 140
?C0010:
; fSetting = 0;
; SOURCE LINE # 141
CLR fSetting
; }
; SOURCE LINE # 142
RET
; END OF _beep
;
; void delay( unsigned int time )
RSEG ?PR?_delay?STIMER
_delay:
USING 0
; SOURCE LINE # 144
MOV DPTR,#time?342
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
; {
; SOURCE LINE # 145
; unsigned int data startms;
;
; startms = GetTickCount();
; SOURCE LINE # 148
LCALL GetTickCount
MOV startms?343,R6
MOV startms?343+01H,R7
?C0012:
;
; while((GetTickCount() - startms) < time)
; SOURCE LINE # 150
LCALL GetTickCount
CLR C
MOV A,R7
SUBB A,startms?343+01H
MOV R7,A
MOV A,R6
SUBB A,startms?343
MOV R6,A
SETB C
MOV DPTR,#time?342+01H
MOVX A,@DPTR
SUBB A,R7
MOV DPTR,#time?342
MOVX A,@DPTR
SUBB A,R6
JNC ?C0012
; {
; SOURCE LINE # 151
; }
; SOURCE LINE # 152
; }
; SOURCE LINE # 153
?C0014:
RET
; END OF _delay
;
; unsigned int GetTickCount(void)
RSEG ?PR?GetTickCount?STIMER
GetTickCount:
USING 0
; SOURCE LINE # 155
; {
; SOURCE LINE # 156
; unsigned int data cyl, ms;
;
; #ifdef WATCHDOG
; ResetWDT();
; SOURCE LINE # 160
LCALL ResetWDT
; #endif
;
; ET1 = 0;
; SOURCE LINE # 163
CLR ET1
; ms = TStatus.ms;
; SOURCE LINE # 164
MOV ms?445,TStatus+02H
MOV ms?445+01H,TStatus+03H
; cyl = TStatus.Tick.cycles;
; SOURCE LINE # 165
MOV cyl?444,TStatus
MOV cyl?444+01H,TStatus+01H
; ET1 = 1;
; SOURCE LINE # 166
SETB ET1
;
; return cyl / Interval.mscycles + ms;
; SOURCE LINE # 168
MOV R4,Interval
MOV R5,Interval+01H
MOV R6,cyl?444
MOV R7,cyl?444+01H
LCALL ?C?UIDIV
MOV A,ms?445+01H
ADD A,R7
MOV R7,A
MOV A,ms?445
ADDC A,R6
MOV R6,A
; }
; SOURCE LINE # 169
?C0015:
RET
; END OF GetTickCount
;
; unsigned int GetTenTickCount(void)
RSEG ?PR?GetTenTickCount?STIMER
GetTenTickCount:
USING 0
; SOURCE LINE # 171
; {
; SOURCE LINE # 172
; unsigned int data tmp;
;
; #ifdef WATCHDOG
; ResetWDT();
; SOURCE LINE # 176
LCALL ResetWDT
; #endif
;
; ET1 = 0;
; SOURCE LINE # 179
CLR ET1
; tmp = TStatus.ms;
; SOURCE LINE # 180
MOV tmp?546,TStatus+02H
MOV tmp?546+01H,TStatus+03H
; ET1 = 1;
; SOURCE LINE # 181
SETB ET1
;
; return tmp;
; SOURCE LINE # 183
MOV R6,tmp?546
MOV R7,tmp?546+01H
; }
; SOURCE LINE # 184
?C0016:
RET
; END OF GetTenTickCount
;
; void InitTimer( unsigned long sysclk )
RSEG ?PR?_InitTimer?STIMER
_InitTimer:
USING 0
; SOURCE LINE # 186
MOV DPTR,#sysclk?647
LCALL ?C?LSTXDATA
; {
; SOURCE LINE # 187
; unsigned long data ltmp;
;
; if((TMOD & 0xf0) != 0x03)
; SOURCE LINE # 190
MOV A,TMOD
ANL A,#0F0H
XRL A,#03H
JZ ?C0017
; {
; SOURCE LINE # 191
; TMOD &= 0xf0;
; SOURCE LINE # 192
ANL TMOD,#0F0H
; TMOD |= 0x03;
; SOURCE LINE # 193
ORL TMOD,#03H
; }
; SOURCE LINE # 194
?C0017:
;
; SysClk = sysclk;
; SOURCE LINE # 196
MOV DPTR,#sysclk?647
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#SysClk
LCALL ?C?LSTXDATA
; ltmp = SysClk / 100;
; SOURCE LINE # 197
CLR A
MOV R3,#064H
MOV R2,A
MOV R1,A
MOV R0,A
MOV DPTR,#SysClk
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL ?C?ULDIV
MOV ltmp?648+03H,R7
MOV ltmp?648+02H,R6
MOV ltmp?648+01H,R5
MOV ltmp?648,R4
; Interval.tenmsloops = (unsigned char)(ltmp >> 8);
; SOURCE LINE # 198
MOV R0,#08H
LCALL ?C?ULSHR
MOV Interval+02H,R7
; Interval.mscycles = ltmp / 10;
; SOURCE LINE # 199
CLR A
MOV R3,#0AH
MOV R2,A
MOV R1,A
MOV R0,A
MOV R7,ltmp?648+03H
MOV R6,ltmp?648+02H
MOV R5,ltmp?648+01H
MOV R4,ltmp?648
LCALL ?C?ULDIV
MOV Interval,R6
MOV Interval+01H,R7
;
; SetIntPri(TF1_VECTOR, 0);
; SOURCE LINE # 201
CLR A
MOV R5,A
MOV R7,#03H
LCALL _SetIntPri
; SetIntPri(TF0_VECTOR, 3);
; SOURCE LINE # 202
MOV R5,#03H
MOV R7,#01H
LCALL _SetIntPri
;
; TH0=0;
; SOURCE LINE # 204
CLR A
MOV TH0,A
; TR1=1;
; SOURCE LINE # 205
SETB TR1
; ET1=1;
; SOURCE LINE # 206
SETB ET1
; enable();
; SOURCE LINE # 207
SETB EA
; }
; SOURCE LINE # 208
RET
; END OF _InitTimer
;
; void InitUserTimer(unsigned char rldval, unsigned char startval)
RSEG ?PR?_InitUserTimer?STIMER
_InitUserTimer:
USING 0
; SOURCE LINE # 210
;---- Variable 'startval?750' assigned to Register 'R5' ----
;---- Variable 'rldval?749' assigned to Register 'R7' ----
; {
; SOURCE LINE # 211
; UserReload = rldval;
; SOURCE LINE # 212
MOV UserReload,R7
; TL0 = startval;
; SOURCE LINE # 213
XCH A,R7
MOV A,R5
XCH A,R7
MOV TL0,R7
; TF0 = 0;
; SOURCE LINE # 214
CLR TF0
; TR0 = 1;
; SOURCE LINE # 215
SETB TR0
; ET0 = 1;
; SOURCE LINE # 216
SETB ET0
; }
; SOURCE LINE # 217
RET
; END OF _InitUserTimer
;
; void led(unsigned char ltick)
RSEG ?PR?_led?STIMER
_led:
; SOURCE LINE # 219
;---- Variable 'ltick?851' assigned to Register 'R7' ----
; {
; SOURCE LINE # 220
; if(ltick == 0)
; SOURCE LINE # 221
MOV A,R7
JNZ ?C0020
; {
; SOURCE LINE # 222
; LedFlash = 0;
; SOURCE LINE # 223
CLR LedFlash
; LED = LEDOFF;
; SOURCE LINE # 224
SETB P1_3
; }
; SOURCE LINE # 225
RET
?C0020:
; else if(ltick == 0xff)
; SOURCE LINE # 226
MOV A,R7
CJNE A,#0FFH,?C0022
; {
; SOURCE LINE # 227
; LedFlash = 0;
; SOURCE LINE # 228
CLR LedFlash
; LED = LEDON;
; SOURCE LINE # 229
CLR P1_3
; }
; SOURCE LINE # 230
RET
?C0022:
; else
; {
; SOURCE LINE # 232
; LedTick = ltick;
; SOURCE LINE # 233
MOV LedTick,R7
; LedFlash = 1;
; SOURCE LINE # 234
SETB LedFlash
; }
; SOURCE LINE # 235
; }
; SOURCE LINE # 236
?C0024:
RET
; END OF _led
;
; /*
; void led1(unsigned char ltick)
; {
; if(ltick == 0)
; {
; Led1Flash = 0;
; LED1 = LEDOFF;
; }
; else if(ltick == 0xff)
; {
; Led1Flash = 0;
; LED1 = LEDON;
; }
; else
; {
; Led1Tick = ltick;
; Led1Flash = 1;
; }
; }
; */
;
; void StartCLKO(unsigned int div)
RSEG ?PR?_StartCLKO?STIMER
_StartCLKO:
; SOURCE LINE # 259
;---- Variable 'div?952' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 260
; unsigned int data rld;
;
; P1_0 = 1;
; SOURCE LINE # 263
SETB P1_0
;
; ET2 = 0;
; SOURCE LINE # 265
CLR ET2
;
; T2CON = 0;
; SOURCE LINE # 267
CLR A
MOV T2CON,A
; T2MOD = 0x02;
; SOURCE LINE # 268
MOV T2MOD,#02H
;
; rld = 65536 - div;
; SOURCE LINE # 270
CLR C
SUBB A,R7
MOV rld?953+01H,A
CLR A
SUBB A,R6
MOV rld?953,A
; RCAP2H = rld >> 8;
; SOURCE LINE # 271
MOV RCAP2H,A
; RCAP2L = rld & 0xff;
; SOURCE LINE # 272
MOV A,rld?953+01H
MOV RCAP2L,A
;
; TH2 = 0xff;
; SOURCE LINE # 274
MOV TH2,#0FFH
; TL2 = 0xff;
; SOURCE LINE # 275
MOV TL2,#0FFH
;
; TR2 = 1;
; SOURCE LINE # 277
SETB TR2
; }
; SOURCE LINE # 278
RET
; END OF _StartCLKO
;
; void dummy(void)
RSEG ?PR?dummy?STIMER
dummy:
; SOURCE LINE # 280
; {
; SOURCE LINE # 281
;
; }
; SOURCE LINE # 283
RET
; END OF dummy
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -