求51单片机双机通信C程序(中断方式)
如题
这是我写的一段成熟的串行全功能通信程序,中断或非中断方式收发均可,多少机都可以,直接调用就可以,display是测试用的。
#include "stdio。h"
#include "reg52。
h"
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned long uint32;
typedef char int8;
typedef short int16;
typedef long int32;
uint8 tx_buf,rx_buf;//YYF
void delays()//延时若干秒,不精确
{
uint16 i,j;
for ( i=100; i!=0; i--)
{for(j=2000;j!=0;j--)
;}//YYF
}
void delayms()/*延时若干毫秒,不精确YYF*/
{
uint8 i,j;
for ( i=40; i!=0; i--)
{for(j=200;j!=0;j--)
;}
}
//YYF
void uart_interrupt (void) interrupt 4 using 1
{
if(RI==1)
{
RI=0;
ACC=SBUF;
// nop();
// nop();
rx_buf=ACC;
delayms();
P1=rx_buf;//**********************************8
}
else{TI=0;}
}
void uart_init()
{
SCON=0xd0;
TMOD=0x20;//YYF
TH1=0xfd;
TL1=0xfd;
TR1=1;
TI=0;
RI=0;
ES=1;
EA=1;
}
void uart_tx(uint8 tx_data)
{
ES=0;
TI=0;//YYF
ACC=tx_data;
TB8=1;
SBUF=ACC;
// nop();
// nop();
while(TI==0){};
TI=0;
ES=1;
delayms();
}
void uart_rx()
{
RI=0;
while(RI==0)
{}
ACC=SBUF;
// nop();//YYF
// nop();
// nop();
rx_buf=ACC;
RI=0;
}
main()
{
delays();//YYF
P1=0x02;//****************************
uart_init();
uart_tx(0x16);
uart_rx();
while(1);
}
更多电子问题请关注我!zhidao_ceo竭诚为您解答!。
答:详情>>
问:请围绕“无忧科技”写一段话。主要在网络技术、IT、电脑技术方面的。谢谢!!!
答:今天,老师布置了一篇作文。要求是:把今天教的这篇课文读给爸爸或妈妈听,请他们说说科技发展带来的发展,再把他们的话写下来。 一回到家,我就放开嗓门大声嚷嚷道:“妈...详情>>
问:有一个二百台电脑的网络,服务器只有一台,怎样将它们分成两个不同的网络,不能相互访...
答:服务器上安装2个网卡A和B 将A的Ip地址设定为 B的IP地址设置成 。 200台电脑的IP分成C、D两组设置 C组100台的IP设置为 - 网关设置成 ...详情>>