📄 urat.c
字号:
/*
***************************************************************************
*
* (C) Copyright 2007,单片机初学者园地
* All Rights reserved.
*
*项目名称: 51单片机学习开发系统
*
*本文件名称:URAT.c
*
* 完成作者 : 单片机初学者 http://blog.ednchina.com/ahai0306/ qq:464976346
* 当前版本 : V1.0
* 完成日期 : 2007年5月1日
* 描 述 :
* 单片机上电后向串口数据0XAA,接收到数据后,然后向串口发送接收到的数据
* 使初学者领略使用中断进行数据通信,传输方式为RS485
*
****************************************************************************
*/
#include <reg52.h> //调用头文件(单片机内部的寄存器定义)
/******本段为硬件I/O口定义********/
sbit LED0 = P0 ^ 0; //KEY和发光管复用,请将4个跳线插到KEY端
sbit LED1 = P0 ^ 1;
sbit LED2 = P0 ^ 2;
sbit LED3 = P0 ^ 3;
sbit DIG0 = P0 ^ 4; //数码管位0
sbit DIG1 = P0 ^ 5; //数码管位1
//sbit BUZZ = P3 ^ 3; //蜂鸣器
sbit RS485_CON=P0 ^ 0; //485控制线
/**************************************************
** 函数名称: dellay
** 入口参数:h(unsigned int型)
** 出口参数:无
** 功能描述: 短暂延时,使用11.0592晶体,约0.01MS
****************************************************/
void dellay(unsigned int h)
{
while(h--); //0.01MS
}
unsigned char data2;
/************主程序**************/
main()
{
TMOD=0x20; //定时器1,方式2
SCON=0x50; //方式1,允许接收
PCON=0;
TL1=0xfd; //波特率:9600,晶体:11.0592M
TH1=0xfd;
TR1=1; //启动定时器1
ES=1; //开串口中断
RS485_CON=0;//485 RECEIVE
EA=1;
LED0=0;
dellay(100);
data2=0xaa;
while(1)
{
dellay(10000);
RS485_CON=1;
SBUF=data2;
dellay(30);
}; //单片机待机
}
/**************************************************
** 函数名称: uart0_ISR
** 入口参数:无
** 出口参数:无
** 功能描述: 串口接收1字节数据,然后发送出去1字节,传输方式为RS485
****************************************************/
void uart0_ISR (void) interrupt 4
{
// LED1=!LED1; //发送数据LED1闪烁
EA = 0;
if(TI) //接受
{
LED0=!LED0; //接收数据LED0闪烁
TI=0; //中断接收标志清除
RS485_CON=0;//485 SEND
}
else
{
data2=SBUF;
RI=0;
}
EA = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -