neoel
Rather a (_E=MC2_) than a (_?_).
hallo, sinds ik een pc op linux heb wil ik mijn microchips met assembler programmeren. alleen nu loop ik tegen een probleem. ik weet niet hoe ik de config bits moet "setten" misschien dat iemand mij hierbij kan helpen. ik wilde graag PWRTE on en een interne oscillator gebruiken.
dit is een proefcode om asm te proberen
; An LED Blinker
; Around 10 times per second
list p=16f648a
include "p16f648a.inc"
small_delay_tmp equ 0x20
long_delay_tmp equ 0x21
goto main
small_delay:
movlw 0xff
movwf small_delay_tmp
small_delay_L1:
decfsz small_delay_tmp, F
goto small_delay_L1
return
; ----------------------------
; W contains count on entry.
; Store it in a temp variable.
; Keep on decrementing and
; calling small_delay
; ----------------------------
long_delay:
movwf long_delay_tmp
long_delay_L1:
call small_delay
decfsz long_delay_tmp, F
goto long_delay_L1
return
; ----------------------------
; Here comes the main LED blinker
; ----------------------------
main:
bsf STATUS, 0
movlw 0x0
movwf TRISB ; All pins outputs
bcf STATUS, 0
infinite:
bcf PORTB, 0
movlw 0x82
call long_delay
bsf PORTB, 0
movlw 0x82
call long_delay
goto infinite
endJeroen Boere
IF you can't convince them, then confuse them!
Doorgaans werkt het op de manier zoals op onderstaande link beschreven:
http://www.sq-1.com/config.html
succes!
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
En als je op zoek gaat naar de include file, waarschijnlijk
C:\Program Files\Microchip\MPASM Suite\p16f648A.inc,
zul je daarin netjes alle symbolische namen aantreffen voor deze PIC.
Jeroen Boere
IF you can't convince them, then confuse them!
Op 8 september 2007 00:51:04 schreef picsels:
En als je op zoek gaat naar de include file, waarschijnlijk
C:\Program Files\Microchip\MPASM Suite\p16f648A.inc,
zul je daarin netjes alle symbolische namen aantreffen voor deze PIC.
linux
uhm..... 
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...
't is al laat.
Maar gelukkig zei ik 'waarschijnlijk' 
Maarre... welke assembler gebruiken we hier dan??
Jeroen Boere
IF you can't convince them, then confuse them!
Op 8 september 2007 01:06:16 schreef picsels:
't is al laat.
Maar gelukkig zei ik 'waarschijnlijk'Maarre... welke assembler gebruiken we hier dan??
Ik vermoed dat je compiler bedoelt?
Wouter van Ooijen
Wouter van Ooijen: VOTI webwinkel, docent HvU (Technische Informatica); C++ on mictrocontrollers blog
Op 8 september 2007 01:25:06 schreef Jeroen Boere:
Ik vermoed dat je compiler bedoelt?
de code van neoel ziet er uit als assembler, dus ik denk dat hij toch echt een assembler gebruikt. als ik me goed herinner werkt MPASM prima onder wine. Of anders gpasm.
en die include file staat genoemd in de code, dus hij zal weinig moeite hebben die te vinden.
Red-E
Gr. Red-E || There are only 10 types of people in the world. Those who understand binary, and those who don't ||
hier is een lijstje met config words voor de 16F628A
_BODEN_ON
_BODEN_OFF
_BOREN_ON
_BOREN_OFF
_CP_ON
_CP_OFF
_DATA_CP_ON
_DATA_CP_OFF
_PWRTE_OFF
_PWRTE_ON
_WDT_ON
_WDT_OFF
_LVP_ON
_LVP_OFF
_MCLRE_ON
_MCLRE_OFF
_RC_OSC_CLKOUT
_RC_OSC_NOCLKOUT
_ER_OSC_CLKOUT
_ER_OSC_NOCLKOUT
_INTOSC_OSC_CLKOUT
_INTOSC_OSC_NOCLKOUT
_INTRC_OSC_CLKOUT
_INTRC_OSC_NOCLKOUT
_EXTCLK_OSC
_HS_OSC
_XT_OSC
_LP_OSC
voor de precieze betekenis van deze config words moet je even in de data sheat kijken van de 16F628A
link naar data sheat
hieronder staat de regel die jij waarschijnlijk nodig zult hebben:
__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF &
_PWRTE_ON & _WDT_OFF & _LVP_OFF &
_MCLRE_OFF & _INTRC_OSC_NOCLKOUT
dit staat voor: brown-output detect enable => aan, code protection => uit, Power-up Timer enable => aan, watchdog timer => uit, low voltage programming => uit,mclr enable => uit en interne oscillator met geen clock out. dit wel allemaal even netjes achter elkaar zetten 
neoel
Rather a (_E=MC2_) than a (_?_).
ik gebruik de compiler/assambler gpasm. (gputils)
bedankt voor de info.. ik ga het direct uitproberen
[Bericht gewijzigd door neoel op (62%)]
Red-E
Gr. Red-E || There are only 10 types of people in the world. Those who understand binary, and those who don't ||
neoel
Rather a (_E=MC2_) than a (_?_).
hmm nee.. ik heb geen idee waar het aan ligt. maar er gaat geen lampje knipperen. de compiler geeft alleen nog maar de waarschuwing dat ik misschien in de vekeerde bank zit (kon ik geloof ik negeren aangezien ik wel van bank switch).
en programmeren gaat goed.. alleen al zet ik de chip aan met een lampje op RB0, dan gaat die niet knipperen.
en het ligt waarschijnlijk wel aan de code.. want als ik de hex van blinkaled van de voti site haal. en die prog.. gaat het lampje (op RA0) wel knipperen.
[Bericht gewijzigd door neoel op (18%)]
Red-E
Gr. Red-E || There are only 10 types of people in the world. Those who understand binary, and those who don't ||
ik zie in jou code ook nergens terug waar het programma begint.
hier even een standaart opmaak voor een ASM-programma:
list p=16f628
#include "p16F628.inc"
__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_OFF & _INTRC_OSC_NOCLKOUT
errorlevel -302
; ***** DEFINES *****
; hier kun je je #define's neer zetten als je die hebt
; ***** EQUATES *****
; hier komen je EQU's
;bijv: VVOORBEELD EQU 0x20 ;0x20 is de eerste vrije geheugenplaats!!
ORG 0x00 ;naar je EQU's altijd ORG 0x00 dit geeft het begin van je programma aan!
ORG 0x04 ; dit is het begin van je interupt routine als je deze nodig mocht hebben
; *********** INITIALISEER DE POORTEN *************
INIT ; hier ga je al je poorten goed zetten
MAIN ; hier begint je "echte" programma
goto main ; zorgt voor een oneindige lus
END ; is nodig om het einde van je programma aan te geven
hoop dat je hier wat aan hebt.
Post anders je code nog een keer, wat je nu hebt bedoel ik dan 
dan kan men er even naar kijken en met je mee denken.
neoel
Rather a (_E=MC2_) than a (_?_).
ik heb de bug gevonden... ik zat inderdaad wel in de verkeerde bank.. ik weet niet hoe hij er in geslopen is.. maar dit is de fout
main:
bsf STATUS, 0
movlw 0x0
movwf TRISB ; All pins outputs
bcf STATUS, 0
in deze regel: bsf STATUS, 0
ik moest hier bit 5 hebben of RP0
bedankt voor de tips.. (die waren wel handig)
picsels
Volgend project: 7-seg gaming displays; dan dec-1982 labvoeding afmaken, dan funcgen met ad9833 afmaken, dan...