⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.src

📁 F040 的一些软件学习
💻 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 + -