проблема с HT PICC закроспостю, так как сахара и микрочип.су очень мало пересекаются:
PIC16F916, HTPICC 9.60 PL2
 - такое впечатление, что линкер на каком-то этапе перестает строить дерево вызовов и из-за этого портит параметры, передаваемые в функцию:
(1) - вызываем функцию с параметром, параметр передается через W
1431:                      hs_ret = Handshake_Proc(HS_TYPE_PRG_REQ);
  1D17    3000     MOVLW 0
  1D18    160A     BSF 0xa, 0x4
  1D19    118A     BCF 0xa, 0x3
  1D1A    243F     CALL 0x43f
(2) - вызываемая функция... извращался по всякому с локальными переменными..
185:               HS_RET Handshake_Proc (HS_TYPE type)
186:               {
187:                   #define HS_ASSERT(a)        if ((a)) goto hs_return
188:                   #define HS_SUCCESS()        to = 1;  goto hs_return
189:               
190:                   static HS_RET        ret;
191:                   static U08           to;
192:               
193:                   ret          = HS_RET_ERR;
(3) - переданный параметр сохраняется по адресу 0x41 ->>>>>>
  143F    0183     CLRF 0x3
  1440    00C1     MOVWF 0x41
  1441    30FF     MOVLW 0xff
  1442    00BF     MOVWF 0x3f
194:                   HS_Stat.type = 0;
  1443    1703     BSF 0x3, 0x6
  1444    01BF     CLRF 0x3f
195:               
196:                   bsp_rf_en();
  1445    160A     BSF 0xa, 0x4
  1446    158A     BSF 0xa, 0x3
  1447    215E     CALL 0x15e
  1448    160A     BSF 0xa, 0x4
  1449    118A     BCF 0xa, 0x3
197:               
198:                   to = (type & HS_TYPE_ACK_BIT || type & HS_TYPE_DATA_BIT) ? HS_REPLY_PRG_NUM : HS_REPLY_NOR_NUM;
  144A    1D41     BTFSS 0x41, 0x2
  144B    18C1     BTFSC 0x41, 0x1
  144C    2C4F     GOTO 0x44f
  144D    3001     MOVLW 0x1
  144E    2C50     GOTO 0x450
  144F    301E     MOVLW 0x1e
  1450    00C0     MOVWF 0x40
199:               
200:                   do
201:                   {
202:                       rf_strobe(SIDLE);
(4) - в функцию передается параметр через W - константа 0x36
  1451    3036     MOVLW 0x36
  1452    160A     BSF 0xa, 0x4
  1453    158A     BSF 0xa, 0x3
  1454    21C6     CALL 0x1c6
(5) - вызванная функция (листинг хай-тековский)
   143  19C6                     _rf_strobe
   144                           ;    _data assigned to ?a_rf_strobe+0
   145  0000                     _rf_strobe$data    set    ?a_rf_strobe
   146                           ;_data stored from w
   147  19C6  0183                   clrf    3    ;select bank 0
   148  19C7  00C1                   movwf    ?a_rf_strobe
   149                           ;bsp_rf.c: 74: void rf_strobe (U08 data)
   150  19C8  1285                   bcf    5,5    ;volatile
   151  19C9  0841                   movf    ?a_rf_strobe,w
   152  19CA  0093                   movwf    19    ;volatile
(6) - что самое интересное:
           ?a_rf_strobe 0041
т.е. переданный параметр так же сохраняется по адресу 0x41, как и в функции-родителе.
 
И такое на каждом шагу. Есть еще веселее:
(1) - вызывается функция с двумя параметрами. Один передается через W, другой через 0x41
224:                       Handshake_Rec(HS_OUT1_SIZE, 0);
  1497    01C1     CLRF 0x41
  1498    300A     MOVLW 0xa
  1499    120A     BCF 0xa, 0x4
  149A    118A     BCF 0xa, 0x3
  149B    2780     CALL 0x780
(2) - вызываемая функция - параметр передаваемый через W сохраняется в 0x41:
130:               static BOOL Handshake_Rec (U08 size_pr, BOOL to_pr)
131:               {
132:                   static bank1 U08  i;
133:                   static bank1 U08  size;
134:                   static bank1 BOOL to;
135:               
136:                   size = size_pr;
  0780    0183     CLRF 0x3
  0781    00C1     MOVWF 0x41           // <<<<<<<<<<<<<<<<<
  0782    1683     BSF 0x3, 0x5
  0783    00E7     MOVWF 0x67
 
В чем причина не могу понять... Проблема появилась, когда объем кода перевалил за 90%.
На микрочипе говорят, что что-то такое слышали. Можт отсюда кто слышал?
http://www.microch …/showthread.php?t=5202
Согласуйте импеданс!
- 
	- Проблема успешно разрешилась - Alex B.(26.02.2009 11:48, ссылка)