ORG 0000H
LJMP START
ORG 0023H
LJMP UARTInterrupt
START:
MOV SP,#60H
LCALL InitUART
LOOP:
;add your code here!
LJMP LOOP
InitUART:
MOV TMOD,#20H
MOV SCON,#50H 11.0592时57600
MOV TH1,#0FFH
MOV TL1,TH1
MOV PCON,#80H
SETB EA
SETB ES
SETB TR1
RET
UARTInterrupt:
JB RI,IsUART_Receive
CLR TI
RETI
IsUART_Receive:
CLR RI
PUSH ACC
MOV A,SBUF
;========================
;add your code here!
;========================
POP ACC
RETI
SendOneByte:
CLR ES
CLR TI
MOV SBUF,A
WaitSendFinish:
JNB TI,WaitSendFinish
CLR TI
SETB ES
RET
END
void UART_Init(void) //57600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
PCON=0x80; //SMOD=1波特率翻倍
TMOD = 0x20; //设定定时器1为方式2
TL1 = 0xFF; //设定定时初值
TH1 = 0xFF; //设定定时初值
TR1 = 1; //启动定时器1
EA=1;
}
stc89c52测试可用。这帮人回答的都是什么锤子,还要我自己动手,mmp
TMOD=0x25; //定时器1工作方式2,计数器0工作方式1
SCON=0x50; //串口工作方式1
EA=1; //开总中断
ES=1; //开串口中断
TH1=0xfd; //串口波特率57600
TL1=0xfd;
TR1=1; //定时器1工作