📄 timer.src
字号:
; .\Timer.SRC generated from: ..\SourceFile\Timer.c
; COMPILER INVOKED BY:
; C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\Timer.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\Timer.lst) SRC(.\Timer.SRC)
$NOMOD51
NAME TIMER
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
T2 BIT 090H.0
EA BIT 0A8H.7
IE DATA 0A8H
EXF2 BIT 0C8H.6
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
T2EX BIT 090H.1
OV BIT 0D0H.2
RCAP2L DATA 0CAH
C_T2 BIT 0C8H.1
WR BIT 0B0H.6
RCLK BIT 0C8H.5
TCLK BIT 0C8H.4
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
AUXR DATA 08EH
B DATA 0F0H
CP_RL2 BIT 0C8H.0
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
TF2 BIT 0C8H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TH2 DATA 0CDH
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
PT2 BIT 0B8H.5
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
IPH DATA 0B7H
EXEN2 BIT 0C8H.3
REN BIT 098H.4
T2MOD DATA 0C9H
T2CON DATA 0C8H
SADEN DATA 0B9H
RXD BIT 0B0H.0
SADDR DATA 0A9H
CKCON DATA 08FH
TXD BIT 0B0H.1
AUXR1 DATA 0A2H
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?timer0?TIMER SEGMENT CODE
?XD?timer0?TIMER SEGMENT XDATA OVERLAYABLE
?BI?timer0?TIMER SEGMENT BIT OVERLAYABLE
?PR?timer2?TIMER SEGMENT CODE
?XD?timer2?TIMER SEGMENT XDATA OVERLAYABLE
?BI?timer2?TIMER SEGMENT BIT OVERLAYABLE
PUBLIC ?timer2?BIT
PUBLIC ?timer2?BYTE
PUBLIC timer2
PUBLIC ?timer0?BIT
PUBLIC ?timer0?BYTE
PUBLIC timer0
RSEG ?XD?timer0?TIMER
?timer0?BYTE:
WorkMode?044: DS 1
TH0Data?045: DS 1
TL0Data?046: DS 1
RSEG ?BI?timer0?TIMER
?timer0?BIT:
bStart?040: DBIT 1
bInt0Relation?041: DBIT 1
bTimerMode?042: DBIT 1
bInterruptEnable?043: DBIT 1
RSEG ?XD?timer2?TIMER
?timer2?BYTE:
TH2Data?148: DS 1
RSEG ?BI?timer2?TIMER
?timer2?BIT:
bStart?147: DBIT 1
; /*************************************************/
;
; /****************定时器************************/
;
; /*************2003年2月9日*********************/
;
; /************WROTE BY WANGSW********************/
; /*
; 寄存器说明:
; 1 TCON:中断标志寄存器
; TF1(8F) T1中断标志位
; TR1(8E) T1启停位
; TF0(8D) T0中断标志位
; TR0(8C) T0启停位
; 2 TMOD:定时器方式寄存器
; GATE | C/~T | M1,M0 |GATE | C/~T | M1,M0 |
; \______________________________/ 0 ~INT0 0 定时器 0 , 0 -----方式0
; T1 无关 1 计数器 0 , 1 -----方式1
; 对应 1 ~INT0 模式 1 , 0 -----方式2
; INT1 有关 1 , 1 -----方式3
;
;
; 3 工作方式:
; 方式0:13位计数器TL的搞三位不用
; 方式1:16位计数器
; 方式2:可循环8位计数器,适用于UART
; 方式3:T0与T1不同
; 定时器1 只能按不需要中断的方式2工作
; 此模式下定时器0 的TL0 及TH0 作为两个独立的8 位计数器/定时器
; TL0 占用定时器0 的TF0 TH0
; TL1 占用定时器1 的TR1和TF1
;
; */
;
; #include "reg52x2.h"
;
; #include "define.h"
;
; #include "timer.h"
;
;
;
;
;
;
;
; /******************************************************************************************
; *函数名: timer0
; *参数: bStart 设置定时/计数器0是否开始工作
; bInt0Relation 定时/计数器0是否与INT0有关,此位设置即影响TMOD
; 中关于定时/计数器0的GATE位
; bTimerMode 定时/计数器0是否是定时器模式,bTimerMode=1,即进入
; 定时器模式;bTimerMode=0,即进入计数器模式
; bInterruptEnable 定时/计数器0中断使能
; WorkMode 定时/计数器0工作模式设定
; TH0Data 定时/计数器0高8位定时计数器数据
; TL0Data 定时/计数器0低8位定时计数器数据
; *返回值: 无
; *描述: 对定时/计数器0的工作模式以及一些设置进行设定,并可以
; 启动定时/计数器0开始工作
; *编写: 王绍伟
; *版本信息: V1.0 2003年8月15日
; ******************************************************************************************/
; extern void timer0(bool bStart,
RSEG ?PR?timer0?TIMER
timer0:
USING 0
; SOURCE LINE # 64
; bool bInt0Relation,
; bool bTimerMode,
; bool bInterruptEnable,
; byte WorkMode,
; byte TH0Data,
; byte TL0Data)
; {
; SOURCE LINE # 71
; TF0 = 0; /*定时器中断标志位*/
; SOURCE LINE # 72
CLR TF0
;
; if(bInt0Relation) /*是否受INT0控制*/
; SOURCE LINE # 74
JNB bInt0Relation?041,?C0001
; {
; SOURCE LINE # 75
; SETBIT(TMOD, 3);
; SOURCE LINE # 76
ORL TMOD,#08H
; }
; SOURCE LINE # 77
SJMP ?C0002
?C0001:
; else
; {
; SOURCE LINE # 79
; RESETBIT(TMOD, 3);
; SOURCE LINE # 80
ANL TMOD,#0F7H
; }
; SOURCE LINE # 81
?C0002:
; if(bTimerMode) /*定时器计数器模式,TRUE为定时器,FALSE为计数器*/
; SOURCE LINE # 82
JNB bTimerMode?042,?C0003
; {
; SOURCE LINE # 83
; RESETBIT(TMOD, 2);
; SOURCE LINE # 84
ANL TMOD,#0FBH
; }
; SOURCE LINE # 85
SJMP ?C0004
?C0003:
; else
; {
; SOURCE LINE # 87
; SETBIT(TMOD, 2);
; SOURCE LINE # 88
ORL TMOD,#04H
; }
; SOURCE LINE # 89
?C0004:
; if(WorkMode & 0x02) /*定时/计数器0工作方式设定*/
; SOURCE LINE # 90
MOV DPTR,#WorkMode?044
MOVX A,@DPTR
MOV R7,A
JNB ACC.1,?C0005
; {
; SOURCE LINE # 91
; SETBIT(TMOD, 1);
; SOURCE LINE # 92
ORL TMOD,#02H
; }
; SOURCE LINE # 93
SJMP ?C0006
?C0005:
; else
; {
; SOURCE LINE # 95
; RESETBIT(TMOD, 1);
; SOURCE LINE # 96
ANL TMOD,#0FDH
; }
; SOURCE LINE # 97
?C0006:
; if(WorkMode & 0x01)
; SOURCE LINE # 98
MOV A,R7
JNB ACC.0,?C0007
; {
; SOURCE LINE # 99
; SETBIT(TMOD, 0);
; SOURCE LINE # 100
ORL TMOD,#01H
; }
; SOURCE LINE # 101
SJMP ?C0008
?C0007:
; else
; {
; SOURCE LINE # 103
; RESETBIT(TMOD, 0);
; SOURCE LINE # 104
ANL TMOD,#0FEH
; }
; SOURCE LINE # 105
?C0008:
; TH0 = TH0Data;
; SOURCE LINE # 106
MOV DPTR,#TH0Data?045
MOVX A,@DPTR
MOV TH0,A
; TL0 = TL0Data;
; SOURCE LINE # 107
INC DPTR
MOVX A,@DPTR
MOV TL0,A
;
; ET0 = bInterruptEnable;
; SOURCE LINE # 109
MOV C,bInterruptEnable?043
MOV ET0,C
; TR0 = bStart;
; SOURCE LINE # 110
MOV C,bStart?040
MOV TR0,C
;
; }
; SOURCE LINE # 112
RET
; END OF timer0
;
;
;
; /******************************************************************************************
; *函数名: timer2
; *参数: bStart 设置定时/计数器2是否开始工作
; TH2Data 定时器2初值设置
; *返回值: 无
; *描述: 定时器2设置程序,在这里定时/计数器2为可重复装载递增
; 16位定时器,设置为每5ms产生一次溢出中断
; *编写: 王绍伟
; *版本信息: V1.0 2003年8月15日
; ******************************************************************************************/
; extern void timer2(bool bStart, byte TH2Data)
RSEG ?PR?timer2?TIMER
timer2:
USING 0
; SOURCE LINE # 126
; {
; SOURCE LINE # 127
;
; #ifdef SPEEDUP
; TH2 = TH2Data;
; SOURCE LINE # 130
MOV DPTR,#TH2Data?148
MOVX A,@DPTR
MOV R7,A
MOV TH2,A
; RCAP2H = TH2Data;
; SOURCE LINE # 131
MOV RCAP2H,R7
; #else
; /*
; 当非加速模式时,让至溢出的定时计数次
; 数为原来加速模式的一半
; */
; byte temp;
; temp = 0x100 - TH2Data;
; temp = (temp >> 1) + TH2Data;
; TH2 = temp;
; RCAP2H = temp;
; #endif
; ET2 = 1;
; SOURCE LINE # 143
SETB ET2
; TL2 = 0x00;
; SOURCE LINE # 144
CLR A
MOV TL2,A
; RCAP2L = 0x00;
; SOURCE LINE # 145
MOV RCAP2L,A
; T2MOD = 0x00;
; SOURCE LINE # 146
MOV T2MOD,A
; if(bStart)
; SOURCE LINE # 147
JNB bStart?147,?C0010
; {
; SOURCE LINE # 148
; T2CON = 0x04;
; SOURCE LINE # 149
MOV T2CON,#04H
; }
; SOURCE LINE # 150
RET
?C0010:
; else
; {
; SOURCE LINE # 152
; T2CON = 0x00;
; SOURCE LINE # 153
CLR A
MOV T2CON,A
; }
; SOURCE LINE # 154
; }
; SOURCE LINE # 155
?C0012:
RET
; END OF timer2
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -