⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test013.c

📁 51单片机全套学习资料 提供电路原理图 各种C语言实验程序 包括LED流水灯,数码管显示,中断,定时器,串口通信,DS18B20温度显示,液晶1602,12864显示,看门狗,按键检测,音乐播放等程序
💻 C
字号:
/********************************************************************************************
* 文 件 名:test013.c
* 功    能:UART接收实验(中断方式)。
* 硬件条件:1.CPU型号:AT89S52
*           2.晶振:11.0592MHz
*           3.用跳线帽短接RXD__P3.0
*           4.用跳线帽短接TXD__P3.1
*           5.用跳线帽短接LED11__P1.7
* 上位机软件:串口调试软件(斯凯科技),波特率为4800
* 作    者:POWER
* 日    期:2006年12月12号
* 斯凯科技主页:www.armsky.net
* 斯凯科技论坛:www.armsky.net/bbs
*********************************************************************************************/
#include "reg52.h"                               // 包含头文件    

/* 与编译器无关的数据类型定义 */
/********************************************************************************************/
typedef unsigned char      uint8;                // 无符号8位整型变量
typedef signed   char      int8;                 // 有符号8位整型变量
typedef unsigned short     uint16;               // 无符号16位整型变量
typedef signed   short     int16;                // 有符号16位整型变量
typedef unsigned int       uint32;               // 无符号32位整型变量
typedef signed   int       int32;                // 有符号32位整型变量
typedef float              fp32;                 // 单精度浮点数(32位长度)
typedef double             fp64;                 // 双精度浮点数(64位长度)
/********************************************************************************************/

sbit P1_7 = P1 ^ 7;                              // 定义位变量 

#define LED11_ON()   (P1_7=0)                    // 定义"LED11_ON()"为AT89S52的P1.7脚输出低电
                                                 // 平使LED11点亮

#define LED11_OFF()  (P1_7=1)                    // 定义"LED11_OFF()"为AT89S52的P1.7脚输出高电
                                                 // 平使LED11熄灭

/********************************************************************************************
* 函数名称:UART_Init()
* 功    能:UART初始化
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void UART_Init(void)
{
  SCON=0x50;                                     // 串口工作方式1,即10位异步收发器(8位数据),波特率可变

  TMOD|=0x20;                                    // 定时器1:工作方式2(8位自动重装定时/计数器)

  PCON|=0x80;                                    // SMOD=1,即波特率提高一倍

  TH1=0xF4;                                      // 晶振频率为11.0592MHz时,波特率为4800

  IE=0x90;                                       // 允许UART中断

  TR1=1;                                         // 启动定时器/计数器1
}


/********************************************************************************************
* 函数名称:UART_Receive_Server()
* 功    能:UART接收中断服务程序.若接收到上位机发来的十六进制值0xAA,则点亮LED11;若接收到上位
*           机发来的十六进制值0x55,则熄灭LED11。
* 入口参数:无
* 出口参数:无
*********************************************************************************************/
void UART_Receive_Server(void) interrupt 4
{
  if(RI)                                         // 若产生UART接收中断
    {
	  uint8 ReceiveData;                         // 定义接收变量

	  RI=0;                                      // 清零UART的接收中断标记
	  ReceiveData=SBUF;                          // 从接收缓冲区读出数据
	  
	  switch(ReceiveData)                        // 对收到的数据进行判断
	        {
			  case 0xAA:                         // 若接收到的数据为0xAA,则点亮LED11
			            LED11_ON();
			            break;
			  case 0x55:                         // 若接收到的数据为0x55,则熄灭LED11  
                        LED11_OFF();
			            break;
			  default:
			            break;
			
			}
    }
}

/********************************************************************************************
* 函数名称:main()
* 功    能:UART接收实验(中断方式)。当接收到上位机发来的十六进制值0xAA时,LED11亮;当接收到
*           上位机发来的十六进制值0x55时,LED11灭。
*********************************************************************************************/   	
void main (void)                
{
  UART_Init();                                   // UART初始化
  LED11_OFF();                                   // AT89S52的P1.7脚输出高电平来熄灭LED11

  while(1);                                      // 死循环,等待UART接收中断
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -