这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 使用8051单片机的串行通信方式1,要求波特率9600bps,请编写初始化程序

共3条 1/1 1 跳转至

使用8051单片机的串行通信方式1,要求波特率9600bps,请编写初始化程序

高工
2011-10-26 10:46:37     打赏

使用8051单片机的串行通信方式1,要求波特率9600bps,请编写初始化程序。




关键词: 使用     单片机     串行     通信     方式     要求     波特率     96    

菜鸟
2011-10-26 10:56:04     打赏
2楼

汇编
    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
    MOV TH1,#0FDH
    MOV TL1,TH1
    MOV PCON,#00H
    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

C51

#include <reg51.h>

void InitUART(void)
{
    TMOD = 0x20;
    SCON = 0x50;
    TH1 = 0xFD;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;
}

void main(void)
{
    InitUART();
}

void UARTInterrupt(void) interrupt 4
{
    if(RI)
    {
        RI = 0;
        //add your code here!
    }
    else
        TI = 0;
}

void SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);
    TI = 0;
}


高工
2011-10-26 22:17:20     打赏
3楼
呵呵,直接上程序了

共3条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]