STC15F2K60S2串口通信的C程序,请教大神

STC15F2K60S2串口通信的C程序,请教大神,第1张

#include<reg51.h>

#define uchar unsigned char

uchar rec,sdat

bit flag=0

void UartInit(void) //9600bps@12MHz

{

PCON &= 0x7f //波特率不倍速

SCON = 0x50 /启岁/8位数据,可变波特率

AUXR |= 0x40 //定时器1时钟为Fosc,即1T

AUXR &= 0xfe //串口1选择定时器1为波特率发拍激生器

TMOD &= 0x0f //清除定时器1模式位

TMOD |= 0x20 //设定定时器1为8位自动悄贺睁重装方式

TL1 = 0xD9 //设定定时初值

TH1 = 0xD9 //设定定时器重装值

ET1 = 0 //禁止定时器1中断

TR1 = 1 //启动定时器1

}

void uart() interrupt 4

{

if(RI)

{

RI=0

rec=SBUF

flag=1

}

if(TI)

{

TI=0

}

}

main()

{

UartInit()

while(1)

{

if(flag)

{

SBUF=rec

flag=0

}

}

}

#include <AT89X51.H>//单片机51头文件,存放着单片机的寄存器

unsigned char dat //用于存储单片机接收发送缓冲寄存器SBUF里面的内容

sbit gewei=P2^2 //个位选通定义

sbit shiwei=P2^3//十位选通定义

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71}

/孝誉/{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,}// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

void Delay(unsigned int tc) //延时程序

{

while( tc != 0 )

{unsigned int i

for(i=0i<100i++)

tc--}

}

void LED()//LED显示接收到的数巧谈段据

{

shiwei=0

P0=~table[dat/16]

Delay(8)

shiwei=1

gewei=0

P0=~table[dat%16]

Delay(5)

gewei=1

}

void Init_Com(void)//功能:串口初始化,波特率9600,方式1

{

TMOD = 0x20

PCON = 0x00

SCON = 0x50

TH1 = 0xFd

TL1 = 0xFd

TR1 = 1

}

void main()//主程序功能:实现接收数据并把接收到的数据原样发送侍岁回去///////

{

Init_Com()//串口初始化

// P1=0xf0

while(1)

{

if ( RI ) //扫描判断是否接收到数据,

{

dat = SBUF //接收数据SBUF赋与dat

RI=0 //RI清零。

SBUF = dat //在原样把数据发送回去

}

LED() //显示接收到的数据

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8274619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存