Присматриваюсь
Сообщений: 70
Зарегистрирован: 30.03.10
Со дня регистрации: 5113
|
adgeziy у тебя AVR , если выбрать PIC то там все гораздо проще, выбрал внутренний генератор а не на внешний такт, все в порядке, все работает=)
Короче говоря на 4MHZ, вот листинг программы.....
void test() {
while (1){
PORTB &= 0xee;
delay_us(56);
PORTB |= 0x11;
if (PORTB & 0x04) delay_ms(200);
else delay_ms(8);
}
}
void main() {
const char tspark[]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 10, 12, 12, 12, 14, 14, 14, 17, 17, 17, 20, 20, 20, 22, 23, 25, 25, 28, 28, 31, 31, 34, 34, 37, 38, 40, 41, 44, 44, 44, 48, 48, 48, 51, 52, 52, 53, 56, 56, 57, 57, 61, 61, 62, 62, 63, 63, 63,
64, 64, 68, 68, 69, 69, 70, 70, 71, 71, 72, 72, 73, 73, 74, 74, 75, 75, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 90, 91, 91, 92, 92, 93, 93, 94, 94, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 106, 106, 107, 107, 108, 108, 109, 110, 110, 111, 111, 112, 112, 113, 113, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 120, 120, 121, 121, 122, 122, 123, 123, 124, 125, 125, 126, 126, 127, 127, 128, 128, 129, 130, 130, 131, 131, 132, 132, 133, 133, 134, 134, 135, 136, 136, 137, 137, 138, 138, 139, 140, 140, 141, 141, 142};
short int spark=0;
unsigned int tspk, t0,t1,low;
unsigned int ofc;
const unsigned int LowDelay=25;
const unsigned int ld=360/LowDelay;
TRISB = 0x0E;
PORTB = 0x11;
OPTION_REG = 0x06;
INTCON = 0x00;
TMR2 = 0;
TMR0 = 0;
PR2 = 255;
T2CON = 0x07;
if (PORTB.F3) test();
while(1){
ofc=0;
INTCON = 0x00;
while(PORTB & 0x02){
if (INTCON&4) {
ofc ;
INTCON = 0x00;
}
spark = 1;
}
if(spark){
t0 = TMR0;
TMR0 = 0;
if(ofc > 0) {
if ( ofc >= 36) ofc=36;
low=ofc*ld;
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
delay_cyc (low);
}
tspk = tspark[t0];
T2CON = 0x07;
TMR2= 0;
while(TMR2 < tspk);
PORTB &= 0xee;
delay_us(56);
PORTB |= 0x11;
spark = 0;
}
}
}
|