/*打开串口调试程序,将波特率设置为9600,无奇偶校验
晶振11.0592MHz,发送和接收使用的格式相同
*/
#include <REG52.H>
unsigned char Temp,i,j=0; //定义临时变量
#define INBUF_LEN 1 //数据长度
unsigned char inbuf1[INBUF_LEN]={11};
sbit LED=P1^2;
void Init_Timer0(void)
{
//TMOD=0x01;
TH0=0x3C; /* Init value */
TL0=0xB0;
EA=1; /* interupt enable */
ET0=1; /* enable timer0 interrupt */
TR0=1;
}
//向串口发送一个字符
void send_char_com( unsigned char ch)
{
SBUF=ch;
// P1=SBUF;
while (TI== 0 );
TI= 0 ;
}
//向串口发送一个字符串,strlen为该字符串长度
void send_string_com( unsigned char *str, unsigned int strlen)
{
unsigned int k= 0 ;
do
{
send_char_com(*(str + k));
k++;
} while (k < strlen);
}
/*主程序*/
void main (void)
{
SCON = 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */
TMOD |= 0x21; /* TMOD: timer 1, mode 2, 8-bit reload ;time2,mode 1 ,for timer */
TH1 = 0xFD; /* TH1: reload value for 9600 baud @ 11.0592MHz */
TR1 = 1; /* TR1: timer 1 run */
EA = 1; /*打开总中断*/
ES = 1; /*打开串口中断*/
Init_Timer0();
while (1) /*主循环不做任何动作*/
{
if(i==1)
{
i=0;
send_string_com(inbuf1,INBUF_LEN);
}
}
}
void UART_SER (void) interrupt 4 //串行中断服务程序
{
if(RI) //判断是接收中断产生
{
RI=0; //标志位清零
Temp=SBUF; //读入缓冲区的值
P1=Temp;
i=1;
// Temp=i; //把值输出到P1口,用于观察
// SBUF=Temp; //把接收到的值再发回电脑端
}
// if(TI) //如果是发送标志位,清零
// TI=0;
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x3C; /* Init value */
TL0=0xB0;
j++;
if(j==20)
{
j=0;
i=1;
LED=~LED;//指示灯反相
inbuf1[0]++;
if(inbuf1[0]==255)
{
inbuf1[0]=0;
}
}
}
两单片机之间串口发送数据和接收数据
2星 需积分: 33 148 浏览量
2011-05-01
10:20:19
上传
评论 2
收藏 32KB RAR 举报
tsaiwin
- 粉丝: 0
- 资源: 3
最新资源
- 基于SkyTra-S1216F8-BD模块gps串口模块AD09设计设计硬件(原理图+PCB)文件.zip
- 用OpenGL实现的windows版的魔方,最终会实现N阶魔方的自动还原算法.zip
- Python实现基于CNN+LSTM的网络流量检测系统源码+文档说明(高分课程设计).zip
- opengl+imgui的一个小框架.zip
- 1-楼子沟10000地形地质图.zip
- 基于安国AU6438读卡器PADS9.5设计硬件(原理图+PCB)文件.zip
- 基于python+flask+mysql实现的豆瓣电影可视化系统源代码+数据库(高分项目).zip
- 基于pytorch卷积神经网络算法识别猫狗图片项目源码+模型+数据集+使用说明.zip
- 基于C++ QT实现的学生信息管理系统源码+项目说明.zip
- IMG20240425152027.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈