資源簡介
測試在STM8S103K3單片機上可以使用

代碼片段和文件信息
#include
#define?uint?unsigned?int
#define?uchar?unsigned?char
#define?DATA_SET????PA_ODR_bit.ODR2?=?1
#define?DATA_CLR????PA_ODR_bit.ODR2?=?0
#define?DATA_GET????PA_IDR_bit.IDR2
uchar?datatime?=?0;??????????????????????????????//記錄電平寬度
uchar?datareg?=?0;???????????????????????????????//存儲八位數據
uchar?datanum?=?0;???????????????????????????????//獲取當前數據情況,篩選出一字節數據
uchar?dataall[3]?=?{0x00};???????????????????????//儲存所有的數據
uchar?outline;???????????????????????????????????//等待超時重來
uchar?DHTFLAG?=?0;???????????????????????????????//判斷總線讀取狀態的標志位
//先配置時鐘
void?CLK_Config()
{
??CLK_CKDIVR?=?0x00;
}
//IO口配置,PA2??data數據總線
//把PA口的其余管腳設置為高電平,防止誤觸發
/*
void?GPIO_Config()
{
???PA_ODR_bit.ODR1?=?1;
???PA_DDR_bit.DDR1?=?1;
???PA_CR1_bit.C11??=?1;
???PA_CR2_bit.C21??=?1;
???
???PA_ODR_bit.ODR3?=?1;
???PA_DDR_bit.DDR3?=?1;
???PA_CR1_bit.C13??=?1;
???PA_CR2_bit.C23??=?1;
???
}
*/
//參考18B20設置輸出輸入兩種IO模式?????
void?DATA_OUT()
{
???PA_DDR_bit.DDR2?=?1;?????????????????????????????//一開始是輸出模式
???PA_CR1_bit.C12?=?1;??????????????????????????????//使用推挽輸出模式??
???PA_CR2_bit.C22?=?0;?????????????????????????????
}
//輸入模式?
void?DATA_IN()?????????????????????????????????????//中斷上拉輸入模式
{
???PA_DDR_bit.DDR2?=?0;
???PA_CR1_bit.C12?=?1;
???PA_CR2_bit.C22?=?1;
}
//外部中斷的配置
void?EXTI_PA()
{
???EXTI_CR1?=?0X02;????????????????????????????????//PD口對于外部中斷下降沿觸發
}
#pragma?vector?=?0x05???????????????????????????????//PA的中斷向量位
__interrupt?void?GPIOA_IRQHandler()
{
???datatime?=?TIM4_CNTR;?????????//獲取兩次下降沿之間的數據寬度
???TIM4_CNTR?=?0;????????????????//清零,再次獲取下一位
???datareg?<<=?1;????????????????//高位先出,左移操作
???if((datatime>75)&&(datatime<85))???????????//數據0??我就默認高位開始獲取了
???datareg?&=?0xfe;????????????????????????
???if((datatime>120)&&(datatime<130))?????????//數據1
???datareg?|=?0x01;???????????????????????
???if(datanum?==?7)
???dataall[0]?=?datareg;????????????????????????//獲取第一個字節也就是濕度整數位
???if(datanum?==?23)????????????????????????????//獲取第三個字節也就是溫度整數位
???dataall[1]?=?datareg;
???if(datanum?==?39)????????????????????????????//獲取第五個字節也就是校驗(溫度+濕度)位
???dataall[2]?=?datareg;
???datanum++;?????????????????????????????????//每次讀取一位進1
???if(datanum?>=?40)??????????????????????????//數據接收完了結束
???datanum?=?0;
???
}
//定時器設定?使用通用定時器2進行精確地微秒延時
void?TIM2_Config()
{
???TIM2_PSCR?=?0x00;????????????????????????????????//預分頻器設定(該寄存器是四位寄存器)
???TIM2_ARRH?=?0x00;????????????????????????????????//16000?表示為?0x0010?就是說在?16000000的頻率下,1微秒就會溢出
???TIM2_ARRL?=?0x10;
???
???TIM2_CNTRH?=?0x00;???????????????????????????????//計數器清零
???TIM2_CNTRL?=?0x00;
???TIM2_SR1???=?0x00;???????????????????????????????//清除所有標志位
}
//基于以上設定的延時函數??本程序采用了查詢等待方式進行精確延時?不過也的確是完全占用了CPU的時間,也算是一種非常粗暴的延時方式
void?TIM2_Delayus(uint?xus)??????????????????????????//范圍?0~65535毫秒
{
???TIM2_CR1?=?0x81;??????????????????????????????????//打開ARPE自動預裝載使能,使能計數器
???while(xus--)
???{
????while(!(TIM2_SR1&0X01));????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3714??2016-11-20?12:13??DHT11改寫學習\Debug\Exe\STM8_DHT11.hex
?????文件??????37732??2016-11-20?12:13??DHT11改寫學習\Debug\Exe\STM8_DHT11.out
?????文件??????44671??2016-11-20?12:13??DHT11改寫學習\Debug\Obj\main.o
?????文件????????150??2016-11-20?15:55??DHT11改寫學習\Debug\Obj\STM8_DHT11.pbd
?????文件??????11013??2016-11-20?12:13??DHT11改寫學習\main.c
?????文件???????1009??2016-11-20?15:55??DHT11改寫學習\settings\STM8_DHT11.cspy.bat
?????文件???????5627??2016-11-20?16:28??DHT11改寫學習\settings\STM8_DHT11.dbgdt
?????文件????????834??2016-11-20?16:28??DHT11改寫學習\settings\STM8_DHT11.dni
?????文件???????3244??2016-11-20?16:28??DHT11改寫學習\settings\STM8_DHT11.wsdt
?????文件???????2220??2016-11-20?16:28??DHT11改寫學習\STM8_DHT11.dep
?????文件??????41763??2016-11-13?13:26??DHT11改寫學習\STM8_DHT11.ewp
?????文件????????164??2016-11-13?13:26??DHT11改寫學習\STM8_DHT11.eww
?????目錄??????????0??2016-11-20?12:13??DHT11改寫學習\Debug\Exe
?????目錄??????????0??2016-11-13?12:35??DHT11改寫學習\Debug\List
?????目錄??????????0??2016-11-20?16:28??DHT11改寫學習\Debug\Obj
?????目錄??????????0??2016-11-13?12:35??DHT11改寫學習\Debug
?????目錄??????????0??2016-11-13?16:21??DHT11改寫學習\settings
?????目錄??????????0??2016-11-20?15:55??DHT11改寫學習
-----------?---------??----------?-----??----
???????????????152141????????????????????18
- 上一篇:ArcEngine加載地圖
- 下一篇:線性換向,三維多線段變二維
評論
共有 條評論