MikroC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
xezer
Inlägg: 65
Blev medlem: 8 mars 2005, 20:41:21

MikroC

Inlägg av xezer »

Hej,
Nu har jag pysslat med assambler en hel och ville testa på ett nytt språk, mikroC.
Jag testade lcd-biblioteket och allt fungerar toppen, men toppen var inte mycket högre än så.

Vanliga enkla exempel som

Kod: Markera allt

do {
  if (Button(&PORTB, 0, 1, 1)) oldstate = 1;
  if (oldstate && Button(&PORTB, 0, 1, 0)) {
    PORTD = ~PORTD;
    oldstate = 0;
  }
} while(1);
Fungerar inte alls, ingen reaktion i picen. USARTen fungerar inte heller med exempelkoden.

Nu börjar jag fundera på om mikroC bara är till för labb-korten från Mikroelektronika ?
Det är en PIC18F452.
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Och hur är TRISD satt? TRISB? Vad gör "Button(...)"?
xezer
Inlägg: 65
Blev medlem: 8 mars 2005, 20:41:21

Inlägg av xezer »

TRISB = 0xff;
TRISD = 0;

Det är inget fel i det vad jag kan se :?
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag använder MikroC till en del, jag är inte obetingad nöjd men den gör oftast vad den ska och den är ju billig (gratis faktisk) så till det pris klagar jag inte.

Då jag inte har insyn i vad dessa färdiga rutiner gör använder jag dom inte alls, jag gör egna och det kanske är där du har lite strul?
xezer
Inlägg: 65
Blev medlem: 8 mars 2005, 20:41:21

Inlägg av xezer »

Oj, såg inte att du frågade efter Button(),
den läser av vilken "state" en knapp har, dvs om den får en spänning eller inte.

Jag tycker det borde gå göra
if(PORTB.RB0 == 1){...}

för att kolla om den får signal eller inte? Men det fungerar inte heller :/
Användarvisningsbild
Icecap
Inlägg: 26632
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Det finns ett problem med detta "if(PORTB.RB0 == 1)" och det är att den bara kollar bit'en, alltså ska du skriva "if(PORTB.F0)" för vad är RB0? Ska du ange bits på det vis är det "F0"-"F7" som gäller....
xezer
Inlägg: 65
Blev medlem: 8 mars 2005, 20:41:21

Inlägg av xezer »

Läste i manualen att man både kunde skriva F0-F7 och bitens namn, så båda fungerar.

PORTB.F0 blir konstigt nog alltid sant :?
Jag har ett motstånd mellan knappen och spänningen.

Den koden jag har nu:

Kod: Markera allt

  TRISB = 0xff;

do {
   if(PORTB.F0){
        Lcd_Chr(2,1, 'P');
      }else{
       Lcd_Chr(2,1, ' ');
       }
} while(1);

Lcd_Chr() skriver ut ett tecken på LCDn.
Skriv svar