#include <REG52H> / special function register declarations /
#include <stdioh> / standard I/O h-file /
#include <stdlibh> / standard library h-file /
#include <ctypeh> / character functions /
#include <intrinsh>
#include <stringh>
void send(void);
void delay(unsigned int j);
unsigned char sendbuff[1];
unsigned char temp;
unsigned char temp1;
bit key_flag;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
//
//延时时间=(J13)us 11059MHZ
void delay(unsigned int j)
{
unsigned int data i;
for(i=0;i<j;i++)
{}
}
//
#pragma REGISTERBANK (3)
void send(void)
{
unsigned int i;
for(i=0;i<1;i++)
{
temp1=sendbuff[i];
SBUF=temp1;
// SBUF=sendbuff[i];
while(TI==0);
TI=0;
}
}
//
// main programm
#pragma REGISTERBANK (0)
void main( void ) {
IE = 0x00;
TMOD = 0x20;
TCON = 0x00;
TH1 = 0xfd; //110592MHZ 9600BPS
TL1 = 0xfd;
SCON = 0x58;
TR1 = 1;
IE = 0x90;
key_flag=0;
while(1)
{
P0_4=0; //第一列
temp=P1&0x03;
if(temp!=0x03)
delay(10);
temp=P1&0x03;
if(temp!=0x03)
{
switch(temp)
{
case 0x07: //+ 2BH P10
key_flag=1;
sendbuff[0]=0x2B;
break;
case 0x0b: //- 2DH P11
key_flag=1;
sendbuff[1]=0x2D;
break;
default: break;
}
if(key_flag==1)
{
key_flag=0;
send();
delay(10000);
delay(10000);
delay(10000);
delay(10000);
delay(10000);
delay(10000);
}
}
}
}
这是A
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV TMOD,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
SETB TR1
MOV SCON,#50H
MOV R0,#50H
MOV R2,#16
LOOP:
JNB RI,$
CLR RI
MOV A,SBUF
MOV @R0,A
INC R0
DJNZ R2,LOOP
SJMP $
END
这个电路很简单不需要买的,就是基本的串口通信电路max232加上几个电容。在宏晶的官网上下载一个叫stc—isp的软件,他们网站也有相关的下载电路图。这样的问题可以直接参考官网网站!
以上就是关于关于两单片机串行通信的,需要C语言(麻烦了,恳请能给予帮助,谢谢)全部的内容,包括:关于两单片机串行通信的,需要C语言(麻烦了,恳请能给予帮助,谢谢)、设计一串行通信接收程序,将接收的16个数据存入片内50H~5FH中,串行口为方式1,波特率为120、我先做一个stc89c52的串行通信的程序啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)