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

📄 timer0_overflow.src

📁 很好用的c语言软件UART程序
💻 SRC
字号:
; .\Timer0_overflow.SRC generated from: Timer0_overflow.c
; COMPILER INVOKED BY:
;        e:\Keil\C51\BIN\C51.EXE Timer0_overflow.c LARGE BROWSE DEBUG OBJECTEXTEND SRC(.\Timer0_overflow.SRC)

$NOMOD51

NAME	TIMER0_OVERFLOW

P10	BIT	090H.0
ET0	BIT	0A8H.1
TF0	BIT	088H.5
TH0	DATA	08CH
TL0	DATA	08AH
?PR?Timer0_Overflow?TIMER0_OVERFLOW      SEGMENT CODE 
	EXTRN	BIT (nTxNextBit)
	EXTRN	XDATA (nTxIndex)
	EXTRN	BIT (UartBusy)
	EXTRN	XDATA (TxByte)
	PUBLIC	Timer0_Overflow
; sfr TH0  = 0x8C;
; sfr TL0  = 0x8A;
; sbit TF0  = 0x8D;
; sbit ET0  = 0xA9;
; sbit P10 = 0x90;
; extern xdata unsigned char TxByte;/*要发送的字节数据*/
; extern unsigned char nTxIndex;/*发送单个字符的位指针*/
; extern bit nTxNextBit;/* 单个字符数据位*/
; extern  bit UartBusy;
; 
CSEG	AT	0000BH
	LJMP	Timer0_Overflow

; void Timer0_Overflow() interrupt 1 using 0

	RSEG  ?PR?Timer0_Overflow?TIMER0_OVERFLOW
	USING	0
Timer0_Overflow:
	PUSH 	ACC		;2个机器周期
	PUSH 	DPH		;2个机器周期
	PUSH 	DPL		;2个机器周期
	PUSH 	PSW		;2个机器周期
	USING	0
	MOV  	PSW,#00H	;2个机器周期	
			; SOURCE LINE # 11
; {	
; 			{
			; SOURCE LINE # 13
; 	 		P10=nTxNextBit;/* 产生数据位 */
			; SOURCE LINE # 14
	MOV  	C,nTxNextBit	;1个机器周期
	MOV  	P10,C
; 			TH0=0xFF;	/* 写入计数初值到TH0 */
			; SOURCE LINE # 15
	MOV  	TH0,#0FFH
; 			TL0=0x97;	/* 写入计数初值到TL0 */
			; SOURCE LINE # 16
	MOV  	TL0,#0A5H
; 			nTxIndex++;
			; SOURCE LINE # 17
	MOV  	DPTR,#nTxIndex
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
; 			nTxNextBit=(TxByte>>nTxIndex)&0x01;
			; SOURCE LINE # 18
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#TxByte
	MOVX 	A,@DPTR
	MOV  	R6,A
	MOV  	R0,AR7
	INC  	R0
	SJMP 	?C0005
?C0004:
	CLR  	C
	RRC  	A
?C0005:
	DJNZ 	R0,?C0004
	RRC  	A
	MOV  	nTxNextBit,C
; 				//计算下一位
; 			}
			; SOURCE LINE # 20
; 	if(nTxIndex==7)
			; SOURCE LINE # 21
	MOV  	A,R7
	CJNE 	A,#07H,?C0001
; 			nTxNextBit=1;/* 下一位停止位 */ 
			; SOURCE LINE # 22
	SETB 	nTxNextBit
?C0001:
; 					/* 1T后溢出 */	
; 		TF0=0;		/* 定时器0中断标志位清0 */
			; SOURCE LINE # 24
	CLR  	TF0
; if(nTxIndex==8)			//发送完毕
			; SOURCE LINE # 25
	MOV  	DPTR,#nTxIndex
	MOVX 	A,@DPTR
	CJNE 	A,#08H,?C0003
; 	{ET0=0;		/*关闭定时器0中断*/
			; SOURCE LINE # 26
	CLR  	ET0
; 	UartBusy=0;	/*Uart发送完毕*/
			; SOURCE LINE # 27
	CLR  	UartBusy
; 	nTxIndex=0;	/* 发送下一个数据的D0位 */
			; SOURCE LINE # 28
	CLR  	A
	MOVX 	@DPTR,A
; 	}
			; SOURCE LINE # 29
; }			; SOURCE LINE # 30
?C0003:
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	ACC
	RETI 	
; END OF Timer0_Overflow

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -