📄 h_uart.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 + -