Vai al contenuto
PLC Forum


Hi-tech Picc Non Funziona - Assembler si C no


takoda

Messaggi consigliati

Salve a tutti ho comprato una demo board pic micro x lavoro allora ho deciso anche di provare HI-TECH PICC per programmare in C e ho creto un file come sotto :

#include<pic1684.h>

main(void)

{

TRISB = 0;

PORTB = 0b00000010;

}

che accende soltanto un led su RB1, quindi compilato il file come descritto quì http://www.jofi.it/fiser/page5.html ma il led non si accende ho provato e riprovato ma niente allora il base a una guida x pic di tanzilli ho preso un codice in assembler che fa lampeggiare un led e lo ho compilato con MPASMWIN e il led si accende perfettamente non capisco perche ma vi mando anche il codice assembler:

PROCESSOR 16F84A

RADIX DEC

INCLUDE "P16F84A.INC"

ERRORLEVEL -302

;Setup of PIC configuration flags

;XT oscillator

;Disable watch dog timer

;Enable power up timer

;Disable code protect

__CONFIG 0x3FF1

LED EQU 0

ORG 0x0C

Count RES 2

;Reset Vector

;Start point at CPU reset

ORG 0x00

bsf STATUS,RP0

movlw B'00011111'

movwf TRISA

movlw B'11111110'

movwf TRISB

bcf STATUS,RP0

bsf PORTB,LED

MainLoop

call Delay

btfsc PORTB,LED

goto SetToZero

bsf PORTB,LED

goto MainLoop

SetToZero

bcf PORTB,LED

goto MainLoop

;Subroutines

;Software delay

Delay

clrf Count

clrf Count+1

DelayLoop

decfsz Count,1

goto DelayLoop

decfsz Count+1,1

goto DelayLoop

return

END

GRAZIE!

Link al commento
Condividi su altri siti


Prova a mettere nell'include pic.h generico perche' il compilatore dovrebbe riconoscere il tipo di pic automaticamente.

Sei sicuro di aver settato i fuses nel modo giusto quando hai usato icprog o epicwin come dice Fiser.

Se usi un quarzo setta XT e power-up timere code prot off.

ciao

Link al commento
Condividi su altri siti

ifachsoftware

Ma la compilazione ti funziona ?

perche' secondo me manca una F

#include<pic16F84.h> o se segui il suo esempio dove seleziona il 16F84A

#include<pic16F84A.h> naturalmente devi scegliere in base al PIC che hai

Ciao :)

Modificato: da ifachsoftware
Link al commento
Condividi su altri siti

grazie ma ho già provato allora provate a confrontare questo:

Che non funziona e dovrebbe far lampeggiare il led su RB0 su pic 16f84:

processor 16F84

INCLUDE "P16F84.INC"

_lshift_left equ 0x20 ;bank 0

_lshift_right equ 0x21 ;bank 0

_rshift_left equ 0x22 ;bank 0

_rshift_right equ 0x23 ;bank 0

_mul_left equ 0x24 ;bank 0

_mul_right equ 0x25 ;bank 0

mul_res equ 0x26 ;bank 0

mul_cntr equ 0x27 ;bank 0

_div_left equ 0x28 ;bank 0

_div_right equ 0x29 ;bank 0

div_buf equ 0x2a ;bank 0

div_cntr equ 0x2b ;bank 0

div_res equ 0x2c ;bank 0

_mod_left equ 0x2d ;bank 0

_mod_right equ 0x2e ;bank 0

mod_buf equ 0x2f ;bank 0

mod_cntr equ 0x30 ;bank 0

_pow_left equ 0x31 ;bank 0

_pow_right equ 0x32 ;bank 0

pow_res equ 0x33 ;bank 0

pow_buf equ 0x34 ;bank 0

pow_cntr equ 0x35 ;bank 0

var_test equ 0x36 ;bank 0

_i equ 0x37 ;bank 0

stack0 equ 0x38 ;bank 0

stack1 equ 0x39 ;bank 0

errorlevel -302

errorlevel -306

org 0x0

goto main

org 0x5

main

label0

movlw 0x1

bcf STATUS, RP0

bcf STATUS, RP1

movwf var_test

movf var_test, f

btfsc STATUS, Z

goto label1

bsf PORTB, 0

clrf _i

movlw 0xff

movwf stack0

label2

bcf STATUS, RP0

bcf STATUS, RP1

movf stack0, w

subwf _i, w

btfsc STATUS, Z

goto label3

btfsc STATUS, C

goto label3

label4

bcf STATUS, RP0

bcf STATUS, RP1

incf _i, f

goto label2

label3

bcf STATUS, RP0

bcf STATUS, RP1

bcf PORTB, 0

clrf _i

movlw 0xff

movwf stack1

label5

bcf STATUS, RP0

bcf STATUS, RP1

movf stack1, w

subwf _i, w

btfsc STATUS, Z

goto label6

btfsc STATUS, C

goto label6

label7

bcf STATUS, RP0

bcf STATUS, RP1

incf _i, f

goto label5

label6

goto label0

label1

goto $

end

Link al commento
Condividi su altri siti

si è vero non ho settato la porta ma questo file è generato dal compilatore c!

un altra cosa sapete che cosa è questo errore:

Error[129] LED_BLINK.ASM 2 : Expected (END)

L' END c'e in fonto al sorgente!

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...