C pro PIC

Michal Gregor a2x1nptda8 na email.cz
Sobota Únor 26 08:50:05 CET 2011


Zdravim,
zkousim po delsi dobe PIC18PRO. Par veci nefunguje jak ma a jine funguji 
perfektne.

Tady se ztraci znemenko (+/-) a je tam nejak moc instrukci MOVLB 0x1:
(Ve verzi PIC18 STD funguje jak ma.)
s32 X2;
X2 = X2 >>16;
  08C4    0101     MOVLB 0x1
  08C6    0101     MOVLB 0x1
  08C8    C11F     MOVFF 0x11f, 0x11d
  08CA    F11D     NOP
  08CC    0101     MOVLB 0x1
  08CE    0101     MOVLB 0x1
  08D0    C120     MOVFF 0x120, 0x11e
  08D2    F11E     NOP
  08D4    0101     MOVLB 0x1
  08D6    0101     MOVLB 0x1
  08D8    6B1F     CLRF 0x1f, BANKED
  08DA    0101     MOVLB 0x1
  08DC    6B20     CLRF 0x20, BANKED


2)

   TMR3IF = 0;
  // Ručně upravit časovač 3
  TMR3ON = 0;
  TMR3 +=  0x1F00;
  TMR3ON = 1;

Tady naopak optimalizace funguje vyborne - vynechano ve vypoctu spodni 
nulovy byte :
146:                 TMR3ON = 0;
  30F6    90B1     BCF 0xfb1, 0, ACCESS
147:                 TMR3 += 0x1F00;
  30F8    0E1F     MOVLW 0x1f
  30FA    26B3     ADDWF 0xfb3, F, ACCESS
148:                 TMR3ON = 1;
  30FC    80B1     BSF 0xfb1, 0, ACCESS


3)
A tohle se kouse na C pro 24 - program se nekam zabehne. Na PIC18 to 
funguje. Nevim jestli tam nemam nejakou skrytou chybu, kterou PIC18 
ignoruje:

  printf("%d\ttVypocet: %d\tVysledek: %d\t\pVypocet: %ld\tpVysledek: 
%ld\r\n",iTest, Test_VysledekTeplota[iTest],Teplota_100mC, 
Test_VysledekTlak[iTest], Tlak_Pa);

Michal Gregor 



Další informace o konferenci Hw-list