作者wcylifes (Chu)
站内MATLAB
标题[讨论] 如何用下列这些程式码改成超音波红外线
时间Thu Jan 9 22:35:11 2014
//**********************************************************
//* 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
1F:嘘 jatj:作业自己做 01/10 12:36