?? demo.c
字號:
//Write By NCX
//為方便讀本程序,本人采用單文檔。
// 目標板 : ATMEGA16
// 采用板上晶振: 7.3728Mhz
#include <iom16v.h>
#include <macros.h>
/*********************************
設置一些全局變量
**********************************/
#define YES 0xff
#define NO 0x00
#define uchar unsigned char
#define uint16 unsigned short int
//警告距離30cm
#define MIN_DISTANCE 30
//用來標志是否剛開始運行
uchar The_Begin_OR_NOT = YES;
/*********************************
聲明中斷服務子程序
**********************************/
#pragma interrupt_handler ADC_handler:15
/*********************************
端口初始化
*********************************/
void port_init(void)
{
PORTA = 0x00;
DDRA = 0x00;
PORTB = 0x00;
DDRB = 0x03; //輸出口--前進(PORTB.0)和左轉(PORTB.1)IO
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x00;
DDRD = 0x00;
}
/********************************
adc初始化
********************************/
void adc_init(void)
{
ADCSR = 0x00; //首先禁止ADC
ADMUX = 0xc0; //選擇通道0,
//轉換結構左對齊,
//采用內(nèi)部參考電壓2.56v
ACSR = 0x80; //禁止AD比較器
ADCSR = 0x8b; //使能ADC,等待轉換,轉換時間26US
//使能ADC中斷
}
/********************************
關閉看門狗
*********************************/
void WDT_off(void)
{
_WDR();
WDTCR |=(1<<WDTOE)|(1<<WDE);
WDTCR = 0x00;
}
/*********************************
片上設備初始化
*********************************/
void init_devices(void)
{
CLI(); //首先禁止所有中斷
port_init();
WDT_off();
adc_init();
MCUCR = 0x00;//禁止CPU休眠
GICR = 0x00;//中斷向量位于FLASH中
TIMSK = 0x00; //禁止定時器中斷源
SEI(); //開啟所有中斷
}
/*********************************
主程序入口
**********************************/
void main(void)
{
init_devices();
PORTB = 0x00;//停止運行
ADCSR|=(1<<ADSC);//啟動第一次AD轉換
while(1);//等待ADC轉換完成并進行中斷服務處理
}
/**********************************
中斷服務子程序
**********************************/
void ADC_handler(void)
{
uint16 ADC_DATA;
CLI(); //首先禁止所有中斷
ADC_DATA = ADCL;
ADC_DATA += (ADCH&0x03)<<8;
if(ADC_DATA>400)
{
PORTB =0x03;
}
else
{
PORTB =0x01;
}
/*
if(The_Begin_OR_NOT == YES)
{
//(2.56v/1024)*ADC_DATA
//30CM-1v-400
if(ADC_DATA>400)
{
PORTB &=0x02;
}
The_Begin_OR_NOT == NOT;
}
else
{
}
*/
ADCSR|=(1<<ADSC);//再次啟動AD轉換
SEI(); //開啟所有中斷
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -