首页 分享 CC2530开发板实验笔记

CC2530开发板实验笔记

来源:花匠小妙招 时间:2025-01-05 03:08

最新推荐文章于 2024-11-27 23:08:30 发布

爱FC的捷哥 于 2018-07-13 08:21:46 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

#include <ioCC2530.h>

#include <string.h>

#include <stdio.h>

typedef unsigned char u8;

typedef unsigned int u16;

#define ENABLE 1

#define DISABLE 0

#define LED1 P1_0

#define LED2 P1_1

#define S1 (P0_1 == 0 ? 1 : 0)

#define S2 (P2_0 == 0 ? 1 : 0)

u8 SysSleep = 0;

u8 USARTFlag = 0;

u8 USARTCount = 0;

char UsartBuff[50];

float ADC_ConvTem(void);

void Delay_MS(u16 time)

{

u16 i,j;

for(i=0;i<time;i++)

for(j=0;j<1070;j++);

}

__near_func int putchar(int c)

{

UTX0IF = 0;

U0DBUF = (char)c;

while(UTX0IF == 0);

return(c);

}

void LED_Init(void)

{

P1SEL &= ~0x03;

P1DIR |= 0x03;

}

void KEY_Init(void)

{

P0SEL &= ~0X02;

P0DIR &= ~0X02;

P0INP &= ~0X02;

P0IFG &= 0;

P0IF = 0;

PICTL |= 0x01;

P0IEN |= 0x02;

P0IE = 1;

EA = 1;

P2SEL &= ~0x01;

P2DIR &= ~0x01;

P2INP &= ~0xa1;

}

void TIM3_Init(void)

{

T3CTL |= 0x08;

T3CTL |= 0xe0;

T3CTL &= ~0x03;

T3IE = 1;

EA = 1;

T3CTL |= 0x10;

}

void USART_Init(void)

{

PERCFG &= ~0x01;

P0SEL |= 0x0c;

P0DIR |= 0x0c;

P0INP &= ~0x0c;

P2INP &= ~0x20;

U0CSR |= 0x80;

U0CSR |= 0x40;

U0UCR &= ~0x10;

U0UCR &= ~0x08;

U0UCR &= ~0x04;

U0GCR |= 11;

U0BAUD |= 216;

URX0IE = 1;

EA = 1;

}

void ADC_Init(void)

{

ADCIE = 0;

ADCIF = 0;

ADCCON1 &= ~0x30;

ADCCON1 |= 0x30;

ADC_ConvTem();

Delay_MS(10);

ADC_ConvTem();

}

void SysPowerMode(u8 mode)

{

if(mode < 4 && mode > 0)

{

SLEEPCMD |= mode;

PCON = 0X01;

}

else PCON = 0;

}

void USART_Send(u8 dat)

{

U0DBUF = dat;

URX0IF = 0;

while(UTX0IF==0);

UTX0IF = 0;

}

void USART_LED(void)

{

if(USARTFlag)

{

if(!strcmp(UsartBuff,"LED_ON@"))

LED1 = 0;

if(!strcmp(UsartBuff,"LED_OFF@"))

LED1 = 1;

for(u8 i=0;i<USARTCount;i++)

{

printf("%c",UsartBuff[i]);

UsartBuff[i] = 0;

}

printf("rn");

USARTFlag = DISABLE;

USARTCount = 0;

}

}

float ADC_ConvTem(void)

{

float temp;

P0IE = 0;

P0IEN &= ~0x02;

TR0 =1;

ATEST = 1;

ADCCON2 = 0X3E;

ADCCON1 |= 0x30;

for(char i =0;i<2;i++)

{

ADCCON1 |= 0x40;

while(ADCCON1&0x80 == 0);

temp = ADCH<<4 | ADCL>>4;

temp = (temp - 1367.5)/4.5;

}

TR0 =0;

ATEST = 0;

P0IFG = 0;

P0IE = 1;

P0IEN |= 0x02;

return temp;

}

void SetCLK32M(void)

{

CLKCONCMD &= ~0x40;

while(CLKCONSTA&0x40);

CLKCONCMD &= ~0x47;

}

int main(void)

{

LED_Init();

TIM3_Init();

USART_Init();

ADC_Init();

SetCLK32M();

KEY_Init();

while(1)

{

if(SysSleep)

{

printf("进入睡眠模式rn");

Delay_MS(1);

SysPowerMode(3);

Delay_MS(1);

printf("进入正常模式rn");

}

if(S2)

{

while(S2);

printf("芯片温度为:%2.2f度rn",ADC_ConvTem());

}

USART_LED();

Delay_MS(100);

}

}

#pragma vector = P0INT_VECTOR

__interrupt void P0_ISR(void)

{

SysSleep = !SysSleep;

if(!SysSleep)

{

SysPowerMode(4);

}

P0IFG = 0;

P0IF = 0;

}

#pragma vector = T3_VECTOR

__interrupt void T3_ISR(void)

{

static unsigned int i = 0;

i++;

if(i>244)

{

LED2 = ~LED2;

i=0;

}

}

#pragma vector = URX0_VECTOR

__interrupt void U0Rx_ISR(void)

{

unsigned char RxBuff;

RxBuff = U0DBUF;

if(USARTCount<50 && USARTFlag == DISABLE)

{

UsartBuff[USARTCount] = RxBuff;

USARTCount++;

if(RxBuff == '@')

{

USARTFlag = ENABLE;

}

}

else

{

USARTFlag = ENABLE;

}

}

以上程序在开发板上正常运行:


相关知识

基于CC2530单片机智能大棚土壤温湿度光照液位检测设计18
基于Zigbee的智能温室大棚系统(附详细使用教程+完整代码+原理图+完整课设报告)
实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值
cc2530:<3>ADC采集光照度案例
arm开发板 qt5.6.0 qt使用文泉驿字体
物联网开发笔记(27)
使用Arduino Uno开发板制作自动灌溉系统
ESP32 LVGL开发板例程使用记录:更改字体及显示内容
“物联网开发实战”学习笔记
嵌入式linux与ARM开发板的入门建议

网址: CC2530开发板实验笔记 https://www.huajiangbk.com/newsview1451072.html

所属分类:花卉
上一篇: 上周学校购买了一批水龙头,据商家
下一篇: 男子没钱花坐村口拦车,一辆车只要

推荐分享