亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
CC2530超聲波串口打印 源程序
[打印本頁]
作者:
IOT_SZH
時(shí)間:
2020-7-26 19:55
標(biāo)題:
CC2530超聲波串口打印 源程序
通過CC2530驅(qū)動(dòng)超聲波模塊,測量距離,并在串口中打印出來。
單片機(jī)源程序如下:
#include <ioCC2530.h>
#include "Ultrasound.h"
#include <stdio.h>
#include <string.h>
uchar RG;
uchar H1;
uchar L1;
uchar H2;
uchar L2;
uchar H3;
uchar L3;
uint data;
uchar TXData;
float distance;
uchar LoadRegBuf[4];//全局?jǐn)?shù)據(jù),用以存儲定時(shí)計(jì)數(shù)器的值。
void Delay_1us(uint microSecs)
{ while(microSecs--)
{ /* 32 NOPs == 1 usecs 因?yàn)檠訒r(shí)還有計(jì)算的緣故,用了31個(gè)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 因?yàn)檠訒r(shí)還有計(jì)算的緣故,用了310個(gè)nop*/
uint tt,yy;
for(tt = 0;tt<n;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; //設(shè)置系統(tǒng)時(shí)鐘源為32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振穩(wěn)定
CLKCONCMD &= ~0x47; //設(shè)置系統(tǒng)主時(shí)鐘頻率為32MHZ
//此時(shí)的CLKCONSTA為0x88。即普通時(shí)鐘和定時(shí)器時(shí)鐘都是32M。
}
void Init_UltrasoundRanging()
{
P1DIR = 0x08; //0為輸入1為輸出 00001000 設(shè)置TRIG P1_3為輸出模式
TRIG=0; //將TRIG 設(shè)置為低電平
P0INP &= ~0x80; //有上拉、下拉 有初始化的左右
P0IEN |= 0x80; //P0_7 中斷使能
PICTL |= 0x01; //設(shè)置P0_7引腳,下降沿觸發(fā)中斷
IEN1 |= 0x20; // P0IE = 1;
P0IFG = 0;
}
void UltrasoundRanging(uchar *ulLoadBufPtr)
{
SysClkSet32M();
Init_UltrasoundRanging();
// T1CC0H = 0x00;
//T1CC0L = 0xfa;
EA = 0;
TRIG =1;
Delay_1us(10); //需要延時(shí)10us以上的高電平
TRIG =0;
T1CNTL=0;
T1CNTH=0;
while(!ECHO);
T1CTL = 0x09; //0000 1010
//0000 1001
//通道0,中斷有效,32分頻;自動(dòng)重裝模式(0x0000->0xffff);
L1=T1CNTL;
H1=T1CNTH;
*ulLoadBufPtr++=T1CNTL;
*ulLoadBufPtr++=T1CNTH;
EA = 1;
//Delay_10us(60000);
//Delay_10us(60000);
}
/**********串口初始化函數(shù)****************************/
void InitUart(void){
PERCFG = 0x00;
P0SEL = 0x0c;
P2DIR &= ~0xc0;
U0CSR |= 0x80;
U0GCR |= 11;
U0BAUD |= 216;
UTX0IF = 0;
}
/**********串口發(fā)送函數(shù)****************************/
void UartSendString(char *Data, int len){
uint i;
for(i=0;i<len;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[3]=T1CNTH;
L2=T1CNTL;
H2=T1CNTH;
if(P0IFG&0x080) //外部ECHO反饋信號
{
P0IFG = 0;
}
T1CTL = 0x09;
T1CNTL=0;
T1CNTH=0;
P0IF = 0; //清中斷標(biāo)志
EA=1;
}
void InitLed(void){
P1DIR |= 0x01;
LED1 = 0;
}
void main(void)
{
InitUart();
InitLed();
char strTemp[6];
while(1)
{
UltrasoundRanging(LoadRegBuf);
Delay_1s(1);
data=256*H2+L2-L1-256*H1;
distance=(float)data*340/10000;
memset(strTemp, 0, 6);
sprintf(strTemp,"%.02f", distance);//將浮點(diǎn)數(shù)轉(zhuǎn)成字符串
UartSendString(strTemp, 5);
UartSendString("CM",2);
UartSendString("\r\n",2);
if((int)distance<=20){
LED1 = 1;
}else{
LED1 = 0;
}
distance=0;
Delay_1s(2);
};
}
復(fù)制代碼
所有資料51hei提供下載:
超聲波+串口.zip
(48.48 KB, 下載次數(shù): 14)
2020-7-26 19:54 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1