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