资源简介
使用CC2530+HCSR04超声波传感器采集距离参数并通过串口发送到上位机
代码片段和文件信息
#include
#include “Ultrasound.h“
#include
#include
uchar RG;
uchar H1;
uchar L1;
uchar H2;
uchar L2;
uchar H3;
uchar L3;
uint data;
uchar TXData;
float distance;
uchar LoadRegBuf[4];//全局数据,用以存储定时计数器的值。
void Delay_1us(uint microSecs)
{ while(microSecs--)
{ /* 32 NOPs == 1 usecs 因为延时还有计算的缘故,用了31个nop*/
asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“);
asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“);
asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“);
asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“);
asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“);
asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“); asm(“nop“);
asm(“nop“);
}
}
void Delay_10us(uint n)
{ /* 320NOPs == 10usecs 因为延时还有计算的缘故,用了310个nop*/
uint ttyy;
for(tt = 0;tt for(yy = 310;yy>0;yy--);
{asm(“NOP“);}
}
void Delay_1s(uint n)
{ uint ulloop=1000;
uint tt;
for(tt =n ;tt>0;tt--);
for( ulloop=1000;ulloop>0;ulloop--)
{
Delay_10us(100);
}
}
void SysClkSet32M()
{
CLKCONCMD &= ~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振稳定
CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ
//此时的CLKCONSTA为0x88。即普通时钟和定时器时钟都是32M。
}
void Init_UltrasoundRanging()
{
P1DIR = 0x08; //0为输入1为输出 00001000 设置TRIG P1_3为输出模式
TRIG=0; //将TRIG 设置为低电平
P0INP &= ~0x80; //有上拉、下拉 有初始化的左右
P0IEN |= 0x80; //P0_7 中断使能
PICTL |= 0x01; //设置P0_7引脚,下降沿触发中断
IEN1 |= 0x20; // P0IE = 1;
P0IFG = 0;
}
void UltrasoundRanging(uchar *ulLoadBufPtr)
{
SysClkSet32M();
Init_UltrasoundRanging();
// T1CC0H = 0x00;
//T1CC0L = 0xfa;
EA = 0;
TRIG =1;
Delay_1us(10); //需要延时10us以上的高电平
TRIG =0;
T1CNTL=0;
T1CNTH=0;
while(!ECHO);
T1CTL = 0x09; //0000 1010
//0000 1001
//通道0中断有效32分频;自动重装模式(0x0000->0xffff);
L1=T1CNTL;
H1=T1CNTH;
*ulLoadBufPtr++=T1CNTL;
*ulLoadBufPtr++=T1CNTH;
EA = 1;
//Delay_10us(60000);
//Delay_10us(60000);
}
/**********串口初始化函数****************************/
void InitUart(void){
PERCFG = 0x00;
P0SEL = 0x0c;
P2DIR &= ~0xc0;
U0CSR |= 0x80;
U0GCR |= 11;
U0BAUD |= 216;
UTX0IF = 0;
}
/**********串口发送函数****************************/
void UartSendString(char *Data int len){
uint i;
for(i=0;i U0DBUF = *Data++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
EA=0;
T1CTL = 0x00;
LoadRegBuf[2]=T1CNTL;
LoadRegBuf
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-08-07 15:05 Timer\
目录 0 2013-07-06 09:38 Timer\Debug\
目录 0 2018-08-05 17:52 Timer\Debug\Exe\
文件 108073 2018-08-07 15:05 Timer\Debug\Exe\Timer.d51
文件 23219 2018-08-07 15:05 Timer\Debug\Exe\Timer.hex
目录 0 2013-07-06 09:38 Timer\Debug\List\
目录 0 2018-08-07 15:07 Timer\Debug\Obj\
文件 31598 2018-08-07 15:05 Timer\Debug\Obj\main.r51
文件 146 2018-08-07 15:05 Timer\Debug\Obj\Timer.pbd
文件 4079 2018-08-07 15:03 Timer\main.c
目录 0 2013-07-06 09:38 Timer\settings\
文件 1521 2018-08-07 15:05 Timer\settings\Timer.cspy.bat
文件 5191 2018-08-07 15:07 Timer\settings\Timer.dbgdt
文件 809 2018-08-07 15:07 Timer\settings\Timer.dni
文件 3299 2018-08-07 15:07 Timer\settings\Timer.wsdt
文件 2469 2018-08-07 15:07 Timer\Timer.dep
文件 34306 2013-07-05 22:17 Timer\Timer.ewd
文件 56287 2018-08-04 15:07 Timer\Timer.ewp
文件 159 2013-07-05 22:17 Timer\Timer.eww
文件 1006 2018-08-07 15:05 Timer\Ultrasound.h
相关资源
- CC2530原理图及PCB封装
- cc2530 ADC例程
- CC2530常用的控制寄存器
- zw_CC2530模块电路原理图和PCB文件.zip
- 详细介绍CC2530开发板电路原理图.pdf
- cc2530原理图
- cc2530 zigbee 智能家居 温湿度dht11 wifi转
- ZigbeeCC2530单片机基础实验 程序代码
- 基于CC2530的SHT11温度传感实验
- zigbee-cc2530 串口收发
- CC2530 I2C 驱动
- 基于CC2530单路PWM控制程序
- DHT11+CC2530 湿度传感器裸机工程源代码
- 基于TI的Z-Stack的延时测试文件
- ZigBeeCC2530最小系统
- cc2530红外接收发射模块代码
- CC2530安防监控系统硬件开发
- CC2530 T1 产生PWM 代码 + 代码文档
- CC2530模块电路原理图和PCB文件
- CC2530实验代码之定时器T1、T3的使用
- CC2530按键控制流水灯
- ZigBee点到点通信源码
- CC2530的随机数发生器
- Zigbee cc2530 组态王
- CC2530_spi通信
- cc2530基础实验代码
- CC2530+OLED电压信号模拟信号显示串口传
- CC2530 DMA读写
- CC2530 的 ZigBee 的温度监控系统 课程设
- CC2530特殊功能寄存器
评论
共有 条评论