codevision nefunguje switch

začínám v codevision a mám takový problém
přijímám data přes usart a porovnávám ve switch ale switch nevybere ani jednu možnost

void prijem()
{
pr=UDR;
}

...

while (1)
      {
      
      if (UCSRA.RXC==1) {
          prijem(); 
          #asm("wdr");
          switch (pr) {
          case(0x40):test;
          case(0x41):ads; 
          case(0x42):dac1;
          case(0x43):dac2;
          case(0x44):mux;
          default:nok;
          };

          };


      }
}

Sice tuhle syntaxi neznám (co je např. test, nějaká funkce? volaná bez závorek?), ale větve case se musí ukončovat s break, jinak pokračují další větví.

to test a tak jsou procedury s c začínám a kompilátor na to nic neřekl tak sem myslel že to dělám dobře

on prostě nevybere ani jednu možnost ani to default

takže by to mělo vypadat nějak tak?

while (1) 
      { 
      
      if (UCSRA.RXC==1) { 
          prijem(); 
          #asm("wdr"); 
          switch (pr) { 
          case(0x40):test();
          break; 
          case(0x41):ads(); 
          break; 
          case(0x42):dac1(); 
          break; 
          case(0x43):dac2(); 
          break; 
          case(0x44):mux(); 
          break; 
          default:nok(); 
          }; 

          }; 


      } 
}

Ano, přinejmenším tak (na jiné chyby jsem se nedíval). Překladač při zápisu funkce bez závorky dosadí adresu funkce, což je povolená operace, ale protože to není použité ve výrazu tak ji jen zas zahodí a nic s tím neudělá a proto nic nehlásí.

Neznám jak Codevision umí pracovat s bity registrů (jak používáš UCSRA.RXC==1), u jiných překladačů se to bitově maskuje, např. if(UCSRA & (1<<RXC)), ale to máš zřejmě ověřené že je tak správně.

díval sem se do asm funguje to

void prijem() { pr=UDR; }
Vytvářet funkci pro jeden příkaz je neekonomické.

if (UCSRA.RXC==1)

Tady mi překladač píše “Error: undefined symbol RXC”

A co ten watchdog? Nepřeteče mezi dvěma přijatými znaky?

Když tak ukaž celý kód.

puvodne tam toho bylo vic ale upravil sem to a toto sem zapomel predelat

mě to funguje

ja sem na nej totalne zapomel puvodne sem ho chtel rozbehnout ale pak sem resil program a nejak sem zapomel prozatim ho zrusim
avrdaq.rar (72.4 KB)