11.0592的晶振,如何产生57600的波特率

2025-02-24 15:58:46
推荐回答(3个)
回答1:

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

回答2:

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

回答3:

TMOD=0x25; //定时器1工作方式2,计数器0工作方式1
SCON=0x50; //串口工作方式1
EA=1; //开总中断
ES=1; //开串口中断
TH1=0xfd; //串口波特率57600
TL1=0xfd;
TR1=1; //定时器1工作