No to może zacznijmy od początku,bo niezbyt konkretne te odpowiedzi 😉 :
1.Czy układ reset podany przez raddeon nada się do PIC16F84A?
2.Czy ze względu na programator i tym podobne sprawy znalazłby się współautor projektu który wgrałby program do uC.Program już jest,tylko wgrać,lub ewentualnie zmodyfikować.
3.Macie jakieś pomysły na solidne,proste w wykonaniu,funkcjonalne podwozie do robota,z tym,że odpada raczej opcja laminatu?
** Dodano: 2007-07-31, 02:23 **
ę#pragma CLOCK_FREQ 4000000 //zdefiniowanieprędkościzegarataktującego
asm {
list p=16F84A //zdefiniowanietypuprocesora
configH’3FF1’ //zdefiniowanierejestrukonfiguracyjnego
}
int pwm=100, stan1=0x00, stan2=0x00, i; //zdefiniowaniezmiennychglobalnych
void interrupt( void ) //podprogram przerwania
{
if ( intcon&0x08 && intcon&0x01 ) { //sprawdzenie stanu flag zezwalających na obsługe przerwania
i=portb;
if (i==01110000b){}
if (i==01010000b){ pwm=0; stan1=0x0a; stan2=0x0a; }
if (i==00010000b){ pwm=100; stan1=0x0a; stan2=0x02; }
if (i==00110000b){ pwm=150; stan1=0x0a; stan2=0x02; }
if (i==01100000b){ pwm=150; stan1=0x0a; stan2=0x08; }
if (i==01000000b){ pwm=100; stan1=0x0a; stan2=0x08; }
if (i==00000000b){ pwm=0; porta=0x00; delay_ms(100);
porta=0x06; delay_ms(400); }
clear_bit( intcon, RBIF ); } //zerowanie bitu intcon w rejestrze RBIF
}
main() //program główny
{
option_reg = 0xFF; //
trisa = 0x00; //konfigurowanieportówAjakowyjściowych
porta = 0x00;
trisb = 0xFF; //konfigurowanieportówBjakowejściowych
portb = 0x00;
stan1 = 0x0a;
stan2 = 0x0a;
enable_interrupt( RBIE ); //uaktywnienie maski przerwań z portu B
enable_interrupt( GIE ); //uaktywnienie obsługi przerwań
delay_ms(500); //czekaj 0.5s
for(;😉 //tzw. pętla nieskończona
{
clear_wdt(); //zerowanie wathdoga
porta = stan2; //softwarowa realizacja PWM
delay_us(pwm);
porta = stan1;
delay_us(255-pwm);
}
}
Co prawda nie ja pisałem ten program,ale raczej jest poprawny.To jest Bascom,no nie?