前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CC2530基础实验之继电器实验(双联)

CC2530基础实验之继电器实验(双联)

作者头像
w候人兮猗
发布2020-07-01 17:33:42
9080
发布2020-07-01 17:33:42
举报
代码语言:javascript
复制
/*
  串口控制继电器
  发送11/10 打开/关闭继电器1  
  发送21/20 打开/关闭继电器2
  继电器在P2_0  和  P1_7(双联继电器)

*/
#include <iocc2530.h>
#define LED1 P1_0
#define LED2 P1_1
#define JD1 P2_0
#define JD2 P1_7

#define ON 1
#define OFF 0



int counter = 0;
unsigned char dat;
int i=0;

void initGPIO()   //初始化LED
{

  P2DIR = 0x01;
  P2SEL =0x00;

  P1DIR |=0x80;  // P1_7
  P1DIR |= 0x1b;
  P1SEL |=0x00;
  JD1=0;
  JD2=0;
  P1=0;
}

void init_T1()   //初始化定时器1
{
  CLKCONCMD &= ~0X40;
  while(CLKCONSTA & 0x40);
  CLKCONCMD &= ~0X47;
}

void init_UART0()
{
  PERCFG=0X00;  //外设控制寄存器 这里使用串口0位置1
  P0SEL=0X0C;   //0_2 0_3设置特殊端口
  U0CSR |=0X80;//0100 0000  0x80 串口通信的语言这里使用USART

  U0BAUD =216;  
  U0GCR=10  ;   //波特率

  U0UCR |=0x80; //流控制禁止
  U0CSR |=0x40;  //允许接受数据
  UTX0IF = 0;       //接受标志位
  URX0IF = 0;       //发送标志位

  URX0IE=1;   //使能中断
  EA=1;      //中断总开关

}
void SendString(char *str)
{
  while(1)
  {
    if(*str=='\0')
      break;
    U0DBUF = *str++;
    while(!UTX0IF);
    UTX0IF = 0;
  }
}

#pragma vector = URX0_VECTOR
__interrupt void URX0_function()
{
  URX0IF = 0;
  dat=U0DBUF;

    if(dat==0x11)
    {
      JD1=ON;
      LED1=ON;
      SendString("继电器1打开\r\n");
    }
    if(dat==0x10)
    {
      JD1=OFF;
      LED1=OFF;
      SendString("继电器1关闭\r\n");
    }
    if(dat==0x21)
    { 
      JD2=ON;
      LED2=ON;
      SendString("继电器2打开\r\n");
    }
    if(dat==0x20)
    {  
      JD2=OFF;
      LED2=OFF;
      SendString("继电器2关闭\r\n");
    }

}

void main()
{
  initGPIO();
  init_T1();
  init_UART0();
  SendString("串口打开成功\r\n");

  while(1);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年3月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档