找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4304|回復: 1
打印 上一主題 下一主題
收起左側

串口控制51單片機的led燈

[復制鏈接]
跳轉到指定樓層
樓主
ID:382214 發(fā)表于 2018-8-2 17:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

#include<reg52.h>
#include<intrins.h>

#define uchar unsigned char
#define uint  unsigned int

uchar PuZh[36] = "廣州匯承信息科技有限公司www*hc01*com";
//--定義使用的IO--//
sbit LED=P2^0;

//--聲明全局函數--//   
void UsartConfiguration();
void Delay_1ms(uint i);


/********************************************************************
* 名稱 : Com_Int()
* 功能 : 串口中斷子函數
* 輸入 : 無 * 輸出 : 無
***********************************************************************/
void Com_Int(void) interrupt 4
{
uchar i;
  uchar receive_data;

  EA = 0;

  if(RI == 1) //當硬件接收到一個數據時,RI會置位
{   
  RI = 0;
  receive_data = SBUF;//接收到的數據
   
  if(receive_data == '1')  
  {
    LED =0;//接收到1亮燈
  }
  else
  {
    LED =1; //其他情況燈滅
  }
  
}
  
  for(i=0; i<36; i++)
  {
   SBUF = PuZh;   //將要發(fā)送的數據放入到發(fā)送寄存器
   while(!TI);      //等待發(fā)送數據完成
   TI=0;           //清除發(fā)送完成標志位
   Delay_1ms(1);
  }
  EA = 1;
}

/*******************************************************************************
* 函 數 名       : main
* 函數功能     : 主函數
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/

void main()
{

UsartConfiguration();//初始化串口

while(1);
}

/*******************************************************************************
* 函 數 名       : UsartConfiguration()
* 函數功能     : 設置串口
* 輸    入       : 無
* 輸    出       : 無
*******************************************************************************/

void UsartConfiguration()
{
SCON=0X50;   //設置為工作方式1,8位數據,可變波特率
TMOD=0X20;   //設置計數器工作方式2
PCON=0X00;   //波特率不加倍
TH1=0XFd;      //計數器初始值設置,9600@11.0592MHz
TL1=0XFd;
TR1=1;     //打開計數器
ES = 1;         //開串口中斷
  EA = 1;         //開總中斷
}


/********************************************************************
* 名稱 : Delay_1ms()
* 功能 : 延時子程序,延時時間為 1ms
* x * 輸入 : x (延時一毫秒的個數)
* 輸出 : 無
***********************************************************************/
void Delay_1ms(uint i)//1ms延時
{
  uchar x,j;
  
  for(j=0;j<i;j++)
    for(x=0;x<=148;x++);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:435095 發(fā)表于 2019-3-12 16:15 | 只看該作者
用什么指令控制呢?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表