[討論] 如何用下列這些程式碼改成超音波紅外線
//**********************************************************
//* Ex10_1_ADC.c
//**********************************************************
#include <p18f4520.h> //納入微控制器定義檔
#include <delays.h> //納入時間延遲函式庫定義檔
#include <adc.h> //納入類比訊號轉換函式庫定義檔
// 結構位元定義
#pragma config OSC=HS, WDT=OFF, LVP=OFF
void main () {
PORTD = 0x00; // 將PORTD清除關閉LED
TRISD = 0; // 將TRISD設為0,PORTD設定為輸出
// 開啟類比訊號轉換模組
//OpenADC(ADC_FOSC_32 & ADC_LEFT_JUST & ADC_20_TAD,
//ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD &
//ADC_VREFMINUS_VSS, 14);
//OpenADC(ADC_FOSC_32 & ADC_LEFT_JUST & ADC_1ANA_0REF, ADC_CH0 & ADC_INT_OFF);
ADCON0=0x01; // 選擇AN0通道轉換,開啟ADC模組
ADCON1=0x0E; // 使用VDD,VSS為參考電壓,設定AN0為類比輸入
ADCON2=0x3A; // 結果向左靠齊並設定轉換時間為Fosc/32,採樣時間為20TAD
Delay10TCYx(5); //時間延遲以完成採樣
ConvertADC() ; //進行訊號轉換
while(BusyADC()); //等待轉換完成
PORTD = ADRESH ; //將高位元組結果傳至LED
}
}
#include <p18f4520.h>
#include<portb.h>
#pragma config OSC=HS,PWRT=ON, WDT=OFF, LVP=OFF
void F_Initial (void);
void main (void)
{
F_Initial();
PORTB=0;
LATD=0;
ADCON1=0x0E;
while ( 1 )
{
if(PORTB==0b01000000) //紅外線010
LATD=0b00000101; //馬達(左)(右)前轉
if(PORTB==0b10000000) //紅外線100
LATD=0b00001001; //馬達(左)後轉(右)前轉
if (PORTB==0b00100000) //紅外線001
LATD=0b00000110; //馬達(左)前轉(右)後轉
if (PORTB==0b00000000) //紅外線000
LATD=0b00001010; //馬達(左)後轉(右)後轉
if (PORTB==0b11000000) //紅外線110
LATD=0b00000001; //馬達(左)不動(右)前轉
if (PORTB==0b01100000) //紅外線011
LATD=0b00000100; //馬達(左)前轉(右)不動
if (PORTB==0b11100000) //紅外線111
LATD=0b00000000; //馬達(左)(右)前轉
}
}
void F_Initial ()
{
TRISD=0;
TRISB=0xff;
EnablePullups ();
}
(^X)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.245.175
噓
01/10 12:36, , 1F
01/10 12:36, 1F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章