?? main._c
字號:
//ICC-AVR application builder : 2007-5-17 下午 09:24:21
// Target : M169
// Crystal: 4.0000Mhz
#define _MAIN_C
#include <iom169v.h>
#include <macros.h>
#include <stdio.h>
//#include "LTC2449.h"
#include "main.h"
#include "uart.h"
#include "cs5532.h"
#define average_quantity 15 //平均個數
void delay_loop(unsigned int i)
{
while(i){i--;}
}
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0xFF;
PORTB = 0x7F;
DDRB = 0x80;
PORTC = 0xFF;
DDRC = 0xFF;
PORTD = 0xFF;
DDRD = 0xFF;
PORTE = 0xA7;
DDRE = 0x58;
PORTF = 0x0F;
DDRF = 0x0F;
PORTG = 0x17;
DDRG = 0x1F;
}
//TIMER1 initialize - prescale:1
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 1mSec
// actual value: 1.000mSec (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0xD4; //setup
TCNT1L = 0xCE;
OCR1AH = 0x2B;
OCR1AL = 0x32;
OCR1BH = 0x2B;
OCR1BL = 0x32;
ICR1H = 0x2B;
ICR1L = 0x32;
TCCR1A = 0x00;
TCCR1C = 0x00;
TCCR1B = 0x01; //start Timer
}
#pragma interrupt_handler timer1_ovf_isr:10
void timer1_ovf_isr(void)
{
TCNT1H = 0xD4; //setup
TCNT1L = 0xCE;
mcu_loop_time++; //主程序20mS循環用
if (load_time <10000)
{
load_time++; //下載數據定時用
}
}
//call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI(); //disable all interrupts
port_init();
timer1_init();
uart0_init();
TIMSK0 = 0x00; //timer interrupt sources
TIMSK1 = 0x01; //timer interrupt sources
TIMSK2 = 0x00; //timer interrupt sources
PCMSK0 = 0x00; //pin change mask
PCMSK1 = 0x00; //pin change mask
EICRA = 0x00; //int0 setup
SEI(); //re-enable interrupts
//all peripherals are now initialized
}
//************讀出8通道AD值*********************
void AD_conversion()
{
unsigned char j, jj, c;//通道號,平均值序號,通道號
unsigned long sum;
static unsigned char average_l=0;//平均值個數
static unsigned int average[8][average_quantity]; //求平均數
unsigned char unlikeliness; //內部循環,1mS檢測
for (j=0; j<5; j++)
{
unlikeliness = mcu_loop_time;
c=j;
//average[j][average_l] = LTC2449_RW(c); //讀取AD值
average[j][average_l] = CS5532_RW(c);
sum = 0;
for (jj=0; jj<average_quantity; jj++) //求平均值
{
sum += average[j][jj];
}
send_data.AD_data[j] = sum/average_quantity;
//send_data.AD_data[j] = average[j][average_l];
while (unlikeliness == mcu_loop_time){;}//等待1ms
}
average_l++;
if (average_l > (average_quantity-1)) average_l = 0;
}
//************取8個按鍵值************************
void pb_check()
{
unsigned char k;
k=PINB;
k=k<<1;
if((PINE&0B01111111)!=0)
k|=1;
else
k&=254;
k ^= 0xff;
send_data.exterior_switch=k;
}
void main(void)
{
init_devices();
//LTC2449_init();
Init5532();
relay_init();
load_init();
updating=0;
while(1)
{
//主程序循環定時
while(mcu_loop_time<20){;}
mcu_loop_time=0;
data_load_manage();
if(updating==1)
{
//**********繼電器刷新****************
RELAY_out(&(Down_load.Relay_out[0]));
//*********上傳數據********************
data_send();
}
pb_check();
AD_sample(void);
//AD_conversion();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -