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

📄 h_uart.src

📁 MCS-51系列单片机Keil C语言源程序集
💻 SRC
字号:
; H_UART.SRC generated from: H_UART.C

$NOMOD51

NAME	H_UART

P0	DATA	080H
P1	DATA	090H
P2	DATA	0A0H
P3	DATA	0B0H
T0	BIT	0B0H.4
AC	BIT	0D0H.6
T1	BIT	0B0H.5
EA	BIT	0A8H.7
IE	DATA	0A8H
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
PS	BIT	0B8H.4
SP	DATA	081H
OV	BIT	0D0H.2
WR	BIT	0B0H.6
P10	BIT	090H.0
SBUF	DATA	099H
PCON	DATA	087H
P11	BIT	090H.1
P12	BIT	090H.2
P13	BIT	090H.3
SCON	DATA	098H
P14	BIT	090H.4
TMOD	DATA	089H
TCON	DATA	088H
P15	BIT	090H.5
P34	BIT	0B0H.4
P16	BIT	090H.6
P35	BIT	0B0H.5
P17	BIT	090H.7
IE0	BIT	088H.1
IE1	BIT	088H.3
B	DATA	0F0H
ACC	DATA	0E0H
ET0	BIT	0A8H.1
ET1	BIT	0A8H.3
TF0	BIT	088H.5
TF1	BIT	088H.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
P	BIT	0D0H.0
SM0	BIT	098H.7
TL0	DATA	08AH
SM1	BIT	098H.6
TL1	DATA	08BH
SM2	BIT	098H.5
PT0	BIT	0B8H.1
PT1	BIT	0B8H.3
RS0	BIT	0D0H.3
TR0	BIT	088H.4
RS1	BIT	0D0H.4
TR1	BIT	088H.6
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
DPH	DATA	083H
DPL	DATA	082H
rRXD	BIT	0B0H.2
tTXD	BIT	0B0H.7
REN	BIT	098H.4
RXD	BIT	0B0H.0
TXD	BIT	0B0H.1
F0	BIT	0D0H.5
PSW	DATA	0D0H
?PR?SimuUARTinit?H_UART                  SEGMENT CODE
?PR?IntTH0?H_UART    SEGMENT CODE
?PR?RxdInt0?H_UART   SEGMENT CODE
?PR?IntTL0?H_UART    SEGMENT CODE
?DT?H_UART           SEGMENT DATA
?BI?H_UART           SEGMENT BIT
PUBLIC	TxdCnt
PUBLIC	RxdCnt
PUBLIC	rSBUF0
PUBLIC	tSmpCnt
PUBLIC	rSmpCnt
PUBLIC	tSBUF
PUBLIC	rSBUF
PUBLIC	tTI
PUBLIC	rRI
PUBLIC	TL00
PUBLIC	IntTL0
PUBLIC	RxdInt0
PUBLIC	IntTH0
PUBLIC	SimuUARTinit

	RSEG  ?DT?H_UART
           TL00:   DS   1
          rSBUF:   DS   1
          tSBUF:   DS   1
        rSmpCnt:   DS   1
        tSmpCnt:   DS   1
         rSBUF0:   DS   1
         RxdCnt:   DS   1
         TxdCnt:   DS   1

	RSEG  ?BI?H_UART
            rRI:   DBIT   1
            tTI:   DBIT   1
; #include "REG51.h"
; //-----------------------------------------------------------
; #define	BAUD_RATE	1200
; sbit	tTXD=P3^7;
; sbit	rRXD=P3^2;
; 
; bit	tTI;
; bit	rRI;
; 
; data	unsigned char rSBUF;
; data	unsigned char tSBUF;
; 
; data	unsigned char rSBUF0;
; data	unsigned char RxdCnt;
; data	unsigned char rSmpCnt;
; 
; data	unsigned char TxdCnt;
; data	unsigned char tSmpCnt;
; data	char	TL00;
; 
; //-----------------------------------------------------------
; 
; void	SimuUARTinit(void)

	RSEG  ?PR?SimuUARTinit?H_UART
	USING	0
SimuUARTinit:
			; SOURCE LINE # 23
; {
			; SOURCE LINE # 24
; 	tTI=1;
			; SOURCE LINE # 25
	SETB 	tTI
; 	tTXD=1;
			; SOURCE LINE # 26
	SETB 	tTXD
; 	rRXD=1;
			; SOURCE LINE # 27
	SETB 	rRXD
; 
; 	TMOD&=0xf0;
			; SOURCE LINE # 29
	ANL  	TMOD,#0F0H
; 	TMOD|=0x03;
			; SOURCE LINE # 30
	ORL  	TMOD,#03H
; 	ET0=1;
			; SOURCE LINE # 31
	SETB 	ET0
; 	ET1=1;
			; SOURCE LINE # 32
	SETB 	ET1
; 	TR0=1;
			; SOURCE LINE # 33
	SETB 	TR0
; 	IT0=1;
			; SOURCE LINE # 34
	SETB 	IT0
; 	EX0=1;
			; SOURCE LINE # 35
	SETB 	EX0
; 	TR1=1;
			; SOURCE LINE # 36
	SETB 	TR1
; 	EA=1;
			; SOURCE LINE # 37
	SETB 	EA
; }
			; SOURCE LINE # 38
	RET  	
; END OF SimuUARTinit

CSEG	AT	0001BH
	LJMP	IntTH0

; //-----------------------------------------------------------
; void	IntTH0(void)	interrupt 3

	RSEG  ?PR?IntTH0?H_UART
	USING	0
IntTH0:
	PUSH 	ACC
	PUSH 	PSW
	PUSH 	AR7
			; SOURCE LINE # 40
; {
; 
; #if	BAUD_RATE==2400
; 	TH0+=0x80;
; #endif
; 	if(tSmpCnt-- == 0)
			; SOURCE LINE # 46
	MOV  	R7,tSmpCnt
	DEC  	tSmpCnt
	MOV  	A,R7
	JNZ  	?C0004
; 	{       
			; SOURCE LINE # 47
; 		tSmpCnt=2;
			; SOURCE LINE # 48
	MOV  	tSmpCnt,#02H
; 		if(tTI) return;
			; SOURCE LINE # 49
	JB   	tTI,?C0004
?C0003:
; 		switch(TxdCnt++)
			; SOURCE LINE # 50
	MOV  	R7,TxdCnt
	INC  	TxdCnt
	MOV  	A,R7
	ADD  	A,#0F7H
	JZ   	?C0007
	ADD  	A,#09H
	JNZ  	?C0008
; 		{
			; SOURCE LINE # 51
; 		case	0:
			; SOURCE LINE # 52
?C0006:
; 			tTXD=0;
			; SOURCE LINE # 53
	CLR  	tTXD
; 			break;
			; SOURCE LINE # 54
	SJMP 	?C0004
; 		case	9:
			; SOURCE LINE # 55
?C0007:
; 			tTXD=1;
			; SOURCE LINE # 56
	SETB 	tTXD
; 			tTI=1;
			; SOURCE LINE # 57
	SETB 	tTI
; 			TxdCnt=0;
			; SOURCE LINE # 58
	CLR  	A
	MOV  	TxdCnt,A
; 			break;
			; SOURCE LINE # 59
	SJMP 	?C0004
; 		default:
			; SOURCE LINE # 60
?C0008:
; 			tTXD=tSBUF&0x01;
			; SOURCE LINE # 61
	MOV  	A,tSBUF
	RRC  	A
	MOV  	tTXD,C
; 			tSBUF>>=1;
			; SOURCE LINE # 62
	MOV  	A,tSBUF
	CLR  	C
	RRC  	A
	MOV  	tSBUF,A
; 			break;
			; SOURCE LINE # 63
; 		}
			; SOURCE LINE # 64
; 	}
			; SOURCE LINE # 65
; }
			; SOURCE LINE # 66
?C0004:
	POP  	AR7
	POP  	PSW
	POP  	ACC
	RETI 	
; END OF IntTH0

CSEG	AT	00003H
	LJMP	RxdInt0

; //-----------------------------------------------------------
; void	RxdInt0(void)   interrupt 0

	RSEG  ?PR?RxdInt0?H_UART
	USING	0
RxdInt0:
			; SOURCE LINE # 68
; {
; 	TF0=0;
			; SOURCE LINE # 70
	CLR  	TF0
; 
; #if	BAUD_RATE==2400
; 	TL0=0xbf;
; #else
; 	TL0=0x7f;
			; SOURCE LINE # 75
	MOV  	TL0,#07FH
; #endif
; 	rSmpCnt=1;
			; SOURCE LINE # 77
	MOV  	rSmpCnt,#01H
; }
			; SOURCE LINE # 78
	RETI 	
; END OF RxdInt0

CSEG	AT	0000BH
	LJMP	IntTL0

; //----------------------------------------------------------
; void	IntTL0(void)	interrupt 1

	RSEG  ?PR?IntTL0?H_UART
	USING	0
IntTL0:
	PUSH 	ACC
	PUSH 	PSW
	PUSH 	AR7
			; SOURCE LINE # 80
; {
; 	TL00=TL0;
			; SOURCE LINE # 82
	MOV  	TL00,TL0
; #if	BAUD_RATE==2400
; 	TL0+=0x80;  //0x7f
; #endif
; 	if(rSmpCnt-- == 0)
			; SOURCE LINE # 86
	MOV  	R7,rSmpCnt
	DEC  	rSmpCnt
	MOV  	A,R7
	JNZ  	?C0019
; 	{
			; SOURCE LINE # 87
; 		rSmpCnt=2;
			; SOURCE LINE # 88
	MOV  	rSmpCnt,#02H
; 
; 		switch(RxdCnt++)
			; SOURCE LINE # 90
	MOV  	R7,RxdCnt
	INC  	RxdCnt
	MOV  	A,R7
	ADD  	A,#0F7H
	JZ   	?C0017
	ADD  	A,#09H
	JNZ  	?C0014
; 	      	{
			; SOURCE LINE # 91
; 		case	0:
			; SOURCE LINE # 92
?C0012:
; 			if(rRXD==1) RxdCnt=0;
			; SOURCE LINE # 93
	JNB  	rRXD,?C0019
	CLR  	A
	MOV  	RxdCnt,A
; 			break;
			; SOURCE LINE # 94
	SJMP 	?C0019
; 		default:
			; SOURCE LINE # 95
?C0014:
; 			//if(RxdCnt>9) RxdCnt=0;
; 			rSBUF0>>=1;
			; SOURCE LINE # 97
	MOV  	A,rSBUF0
	CLR  	C
	RRC  	A
	MOV  	rSBUF0,A
; 			rSBUF0|=rRXD?0x80:0;
			; SOURCE LINE # 98
	JNB  	rRXD,?C0015
	MOV  	R7,#080H
	SJMP 	?C0016
?C0015:
	MOV  	R7,#00H
?C0016:
	MOV  	A,R7
	ORL  	rSBUF0,A
; 			break;
			; SOURCE LINE # 99
	SJMP 	?C0019
; 		case	9:
			; SOURCE LINE # 100
?C0017:
; 			RxdCnt=0;
			; SOURCE LINE # 101
	CLR  	A
	MOV  	RxdCnt,A
; 			if(rRXD==0) return;
			; SOURCE LINE # 102
	JNB  	rRXD,?C0019
?C0018:
; 			rSBUF=rSBUF0;
			; SOURCE LINE # 103
	MOV  	rSBUF,rSBUF0
; 			rRI=1;
			; SOURCE LINE # 104
	SETB 	rRI
; 		}
			; SOURCE LINE # 105
; 	}
			; SOURCE LINE # 106
; }
			; SOURCE LINE # 107
?C0019:
	POP  	AR7
	POP  	PSW
	POP  	ACC
	RETI 	
; END OF IntTL0

	END

⌨️ 快捷键说明

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