標(biāo)題:
CC2530超聲波測距程序
[打印本頁]
作者:
huahua1001
時間:
2019-12-15 13:53
標(biāo)題:
CC2530超聲波測距程序
/**************************************/
/*描述:超聲波HC-SR04實驗
**************************************/
//如果使用彩屏,請定義此宏
#define OLED_1331
#include <ioCC2530.h>
#ifdef OLED_1331
#include "LCD1331.h"
#else
#include "LCD.h"
#define uint unsigned int
#define uchar unsigned char
#endif
//定義控制LED燈的端口
#define LED1 P1_0 //定義LED1為P10口控制
#define LED2 P1_1 //定義LED2為P11口控制
#define LED3 P1_4 //定義LED3為P14口控制
#define Trig P0_4 //產(chǎn)生脈沖引腳
#define Echo P0_5 //回波引腳
uchar TxBuff[15]={0};
void UartTX_Send_String(uchar *Data,int len);
void PrintfDistance();
//函數(shù)聲明
void Delayms(uint); //延時函數(shù)
void InitLed(void); //初始化P1口
void KeyInit(); //按鍵初始化
uchar KeyValue=0;
uchar outcomeH,outcomeL; //記錄產(chǎn)生中斷時定時器1的計數(shù)值
uchar succeed_flag=0; //測量成功標(biāo)志 1:成功
/****************************
//延時函數(shù)
*****************************/
void Delayms(uint xms) //i=xms 即延時i毫秒
{
uint i,j;
for(i=xms;i>0;i--)
for(j=587;j>0;j--);
}
void MicroWait( int timeout )
{
while (timeout--)
{
asm("NOP");
asm("NOP");
asm("NOP");
}
}
void delay_20us(void) //20 us延時
{
MicroWait(20);
}
/****************************
LED初始化程序
*****************************/
void InitLed(void)
{
P1DIR = 0x13; //P10 P11 P14為輸出
LED1 = 1; //LED1燈熄滅
LED2 = 1; //LED2燈熄滅
LED3 = 1; //LED3燈熄滅
}
/****************************
KEY初始化程序--外部中斷方式
*****************************/
void InitKey()
{
P0IEN |= 0X2; //P01設(shè)置為中斷方式
PICTL |= 0X2; // 下降沿觸發(fā)
IEN1 |= 0X20; // 允許P0口中斷;
P0IFG = 0x00; // 初始化中斷標(biāo)志位
EA = 1;
}
void initClkTo32M()
{
CLKCONCMD &= ~0x40; //設(shè)置系統(tǒng)時鐘源為32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振穩(wěn)定
CLKCONCMD &= ~0x47; //設(shè)置系統(tǒng)主時鐘頻率為32MHZ
//定時器使用32M時鐘
CLKCONCMD &= ~0x3F;
}
/****************************
中斷處理函數(shù)
*****************************/
#pragma vector = P0INT_VECTOR //格式:#pragma vector = 中斷向量,緊接著是中斷處理程序
__interrupt void P0_ISR(void)
{
//P0_5產(chǎn)生中斷
if((P0IFG&0x20)==0x20)
{
IEN1 &=~0X20; // 關(guān)閉P0口中斷
outcomeL =T1CNTL; //取出定時器的值
outcomeH =T1CNTH; //取出定時器的值
succeed_flag=1; //置成功測量的標(biāo)志
LED2=!LED2;
LED1=1;
// UartTX_Send_String("P0_ISR\r\n", 7);
PrintfDistance();
}
P0IFG = 0; //清中斷標(biāo)志
P0IF = 0; //清中斷標(biāo)志
LED3=!LED3;
}
部分代碼;
28.超聲波測距資料(HC-SR04).rar
2019-12-15 13:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
647.6 KB, 下載次數(shù): 37, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1