Показать сообщение отдельно
Старый 06.12.2007, 19:52   #1
швондер
Member
 
Регистрация: 02.08.2007
Сообщений: 69
Вес репутации: 100/47
швондер will become famous soon enoughшвондер will become famous soon enough
По умолчанию подскажите по Си для

есть проект готовый под протеус на СИ, пытался в нем разобраться
вроде все понятно , но чего не могу понять из программы
к каким пинам микроконтроллера подсоеденяются
светодиоды, подскажитее...
программка для тахометра на трех светодиодах
которыепоказывают допустимые обороты двигателя
Код:
////////////////////////////////////////////////////////////////////////////////
// SCROD.C
//
////////////////////////////////////////////////////////////////////////////////
#include "C:\Program Files\Labcenter Electronics\Proteus 7 Professional\BIN\Work\SkrodM\scrod.h"
/* Определения */
#define ON 0 // Активный уровень включения LED - 0
#define OFF 1
#define YPorog 1500 // 2000 об/мин - порог включения желтого
#define GPorog 600 // 5000 об/мин - порог включения зеленого
#define RPorog 300 // 10000 об/мин - порог включения красного
int16 TxCount,Tacho,YPorog,GPorog,RPorog;
int8 PulseCount, Timer100us=198; 
#int_timer0 // Обработка прерывания от TMR0 каждые 100uS
void Timer0_ISR()
{ 
set_timer0(Timer100us);
++TxCount;
}
#int_ext // Обработка прерывания от сигнала 
void Int0_ISR()
{
++PulseCount;
if(PulseCount==10)
{
Tacho=TxCount;
TxCount=0;
PulseCount=0;
set_timer0(Timer100us);
enable_interrupts(int_timer0);
} 
}
void LedTest(VOID) // Проверка LED на исправность
{
YLed = ON; // Включем все
GLed = ON;
RLed = ON;
delay_ms (1000); // пауза 1сек
YLed = OFF; // Погасим желтый
delay_ms (1000);
GLed = OFF; // Погасим эелёный
delay_ms (1000);
RLed = OFF; // Погасим красный
}
void main()
{
/* Инициализация железа*/
disable_interrupts(global);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
set_tris_a (0x00); // PORTA - Все выход
output_a (0xFF); // гасим все LED
set_tris_B (0xFF); // PORTB - Все вход
LedTest (); // Проверим LED
PulseCount =0;
enable_interrupts(int_ext);
enable_interrupts(global);
 
/* Основной цикл */
WHILE (1)
{
if (Tacho > YPorog) // Обороты < порога желтого?
{
RLed = OFF; 
GLed = OFF;
YLed = OFF;
}
if (Tacho <=YPorog & Tacho > GPorog) // Обороты меньше зеленого?
{
YLed = ON; 
GLed = OFF;
RLed = OFF;
}
if (Tacho <=GPorog & Tacho > RPorog) // Обороты меньше красного?
{
YLed = OFF;
GLed = ON;
RLed = OFF;
}
if (Tacho <= RPorog) // Обороты больше красного?
{
YLed = OFF;
GLed = OFF;
RLed = ON;
}
 
}
}
швондер вне форума   Ответить с цитированием