| Микроконтроллеры | не подключается макрос к pic17c756a в MPASMе | 
|
|---|---|---|
Сколько не мучался, какие только директивы не подключал, все равно не замечает макрос, точнее замечает, но ничего не выполнив , идет далее. листинг. list   P=17c756, x=ON TEST    EQU   H'50' PROBA MACRO VAL1 CLRF VAL,f ORG 0000h ORG 0030h RESET: MOVLW H'01' PROBA TEST GOTO RESET END  | 
  | 
|
Попробуйте так: PROBA MACRO VAL1 Этот макрос предписывает контроллеру очистить тот регистр, который будет указан программистом вместо VAL1 при вызове макроса.  | 
  | 
|
Спасибо, огромное, все идет!  | 
  | 
|
Ребят, еще один вопрос. Листинг. list   P=17c756, x=ON TEST    EQU   H'50' ORG 0000h ORG 0030h RESET: CLRF VAL1,f IF !(VAL1<=0x01) INCF VAL3,f               ; Почему-то он сюда попадает GOTO RESET END  | 
  | 
|
Еще в тему: если писать if, потом еще if, еще if , а потом else, то к какому ifу он будет относиться и хватит ли одного endifа?  | 
  | 
|
Макрос выполняется (разворачивается) во время компиляции. Он понятия не имеет, какое значение занесено в какой регистр mirn: IF !(VAL1<=0x01) INCF VAL3,f ; Почему-то он сюда попадает  | 
  | 
|
  | 
  | 
|
Как сравнивать значения регистров? например так: IFLT macro f, k ;Перейти к метке k, если значение в регистре f меньше чем значение в аккумуляторе W subwf f, W btfss STATUS, C goto k endm IFGE macro f, k ;Перейти к метке k, если значение в регистре f больше либо равно W subwf f, W btfsc STATUS, C goto k endm Ну и погнали: movlw #0 IFGE VAL1, skip ; идём на skip, если VAL1 > 0 INCF VAL3,F skip: movlw #8 IFGE VAL3, skip2 ; идём на skip, если VAL3 > 8 И так далее...  | 
  | 
|
Спасибо огромное!!!  | 
  | 
| 
 Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь  | 
© 2003—2025  | 
|||