?? main.c.bak
字號:
/***********************************************************************
* main.c
*文件功能: 主函數
*相關說明:
*編寫時間: 2007年7月13日
*編寫作者: 勞永彬
***********************************************************************/
#include <avr/io.h>
#include <avr/interrupt.h>
#include "UART.h"
#include "ADCurrent.h"
volatile uint16_t Timer;
/***************************************************
函數名稱:PortInit()
函數功能:初始化IO口
輸入參數:無
返回參數:無
影響的全局變量:無
***************************************************/
void PortInit(void)
{
PORTA = 0x00; //關閉上拉電阻
DDRA = 0x00; //AD輸入
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00; //繼電器輸出為低電平
DDRC = 0xFF; //繼電器輸出
PORTD = 0x00;
DDRD = 0x00;
TIMSK = 0x00; //清中斷允許寄存器
}
/***************************************************
函數名稱:void TimerInit(void)
函數功能:初始化定時時鐘,T2,CTC模式,5ms自動重載
輸入參數:無
返回參數:無
影響的全局變量:無
***************************************************/
void TimerInit(void)
{
TCNT2 = 0x00;
OCR2 = 77;
TIFR |= (1<<OCF2); //清匹配中斷標志位
TIMSK |= (1<<OCIE2); //允許匹配中斷
TCCR2 = (1<<WGM21)|(1<<CS20)|(1<<CS21)|(1<<CS22); //1024分頻,CTC模式
/*
Fi = F_CPU(16000) / (OCR0(77+1) * n(1024) ) = 0.2KHz
Ti = 1/Fi = 1/0.2 = 5ms
*/
}
/***************************************************
函數名稱:SIGNAL(SIG_OUTPUT_COMPARE2)
函數功能:定時器匹配中斷,5ms定時中斷
輸入參數:無
返回參數:無
影響的全局變量:刷新各采樣間隔和各任務延時以及系統時鐘
***************************************************/
SIGNAL(SIG_OUTPUT_COMPARE2)
{
if (Timer > 0) //如果電機運行
{
Timer --; //電機運行時間減1
}
}
/***************************************************
函數名稱:main()
函數功能:主函數
輸入參數:無
返回參數:無
影響的全局變量:無
***************************************************/
int main(void)
{
PortInit();
TimerInit();
ADInit();
UARTInit();
PORTC = (0x01<<4); //啟動電機2
SampleList = 0x02; //AD2作為正差分輸入
/**以下兩行是采用中斷方式采樣,如果采用查詢方式進行則不需要這兩行**/
ADCSRA |= (1<<ADIE); //開ADC中斷
SetADC(); //第一次轉換
/******************************************************************/
sei();
while(1)
{
Timer = 200; //1秒定時,每一秒發送一次數據
while (Timer != 0) ;
/**以下三行是采用查詢方式采樣,如果采用中斷方式進行則不需要這三行***/
// Current[2] = ReadVoltage(SampleList+2);
// Current[1] = ReadVoltage(SampleList+1);
// Current[0] = ReadVoltage(SampleList);
/*******************************************************************/
cli();
PutByte((uint8_t)(Current[0]>>8));
PutByte((uint8_t)(Current[0]));
PutByte((uint8_t)(Current[1]>>8));
PutByte((uint8_t)(Current[1]));
PutByte((uint8_t)(Current[2]>>8));
PutByte((uint8_t)(Current[2]));
PutByte('\r');
PutByte('\n');
Current[0] = 0;
Current[1] = 0;
Current[2] = 0;
sei();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -