Beste co'ers
Ik wou eens wat in asm gaan programmeren. Dus ik wat tuts en datasheets gelezen. En ik wil dt programma gebruiken om een ledje op porta.1 aan te zetten. En hij werkt niet. Hoe kan dat. Ik heb de adressen en bits van de trisa en porta overgenomen uit een tut over een 16f84. Maar in de datsheet zie ik geen verschil
;****Set up the port****
bsf 0x03,5 ;Switch to Bank 1
movlw 0x00 ;Set the Port A pins
movwf 0x85 ;to output.
bcf 0x03,5 ;Switch back to Bank 0
;****Turn the LED on****
Start movlw 0x01 ;Turn the LED on by first putting
movwf 0x05 ;it into the w register and then
Je schrijft nu het getal '1' naar de poort, dan wordt dus A0 geset.
Het leest een stuk makkelijker als je de namen van de registers gebruikt i.p.v. de adressen.
Je moet dan wel even in je progje verwijzen naar de include-file.
Maar a0 doet het ook niet. Ik heb op alles ledjes
Oeps edit sorry
[Bericht gewijzigd door pientertje op (16%)]
Adhy
Probeer niet jezelf te zijn, je bent ut al...
Deze tutorial is verschrikkelijk goed: http://www.gooligum.com.au/tutorials.html
succes ermee!
Daan Timmer
Ik ben programmeur! geen electronicus! http://www.daantimmer.nl/ Er is een ontwerp! nu nog inhoud :-)
je mist een stukje code?
En maak eens gebruik van symbolen ipv hex waardes. Dat leest een stuk duidelijker.
De fuses van de pic. Wat voor xtal je gebruik, of je mclr gebruik, WDT, POR etc.
Zoals in picbasic
DEVICE 16F877A
CONFIG CP_OFF, DEBUG_OFF, WRT_OFF, CPD_OFF, LVP_OFF, BODEN_ON, PWRTE_OFF, WDT_OFF, HS_OSC
Door niet zo lui te zijn en een tutorial te lezen. Er is al een link gegeven in dit topic. Kom op, beetje zelf wat doen.
Lui, Lui, gelijk zo'n groot woord 
Ik ben wel degelijk bezig gewesst met de functie config bits in mplab. maar ik weet niet op wat ik oscillator moet zetten voor de interne oscillator.
Je moet de config bits niet in mplab instellen maar gewoon in je code. Dan is altijd duidelijk wat je hebt ingesteld want het zit in je code.
Bij de interne osc kan je niks instellen volgens mij. Je kan alleen verschillende osc's kiezen, intern of extern. Extern kan je opdelen in LP, XT, HS en nog meer bij sommige pic's.
In die link die iemand boven mij geeft staat een asm cursus. Open deel 1 en wat staat boven in?
list p=12F509
#include <p12F509.inc>
; ext reset, no code protect, no watchdog, 4Mhz int clock
__CONFIG _MCLRE_ON & _CP_OFF & _WDT_OFF & _IntRC_OSC
Gebruikte pic = 12f509
Bjpassend include om het leven makkelijker te maken.
Config instellingen
[Bericht gewijzigd door Bas Smit op (39%)]
Ik lijk lui maar dan krijg ik toch echt dit:
Debug build of project `C:\Documents and Settings\willem\Mijn documenten\pic\l1.mcp' started.
Preprocessor symbol `__DEBUG' is defined.
Fri Dec 05 18:11:38 2008
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F628A "1.asm" /l"1.lst" /e"1.err" /d__DEBUG=1
Warning[205] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 1 : Found directive in column 1. (list)
Warning[205] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 3 : Found directive in column 1. (__CONFIG)
Error[113] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 3 : Symbol not previously defined (_IntRC_OSC)
Error[149] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 5 : Directive only allowed when generating an object file
Error[149] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 8 : Directive only allowed when generating an object file
Error[113] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 9 : Symbol not previously defined (OSCCAL)
Warning[224] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 14 : Use of this instruction is not recommended.
Error[113] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 14 : Symbol not previously defined (GPIO)
Error[126] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 14 : Argument out of range (0000 not between 0005 and 0007)
Error[113] C:\DOCUMENTS AND SETTINGS\WILLEM\MIJN DOCUMENTEN\1.ASM 16 : Symbol not previously defined (GPIO)
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `C:\Documents and Settings\willem\Mijn documenten\pic\l1.mcp' failed.
Preprocessor symbol `__DEBUG' is defined.
Fri Dec 05 18:11:38 2008
----------------------------------------------------------------------
BUILD FAILED
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Ik vind die errors niet zo vreemd. De 16F628A heeft geen OSCCAL of GPIO registers... 
(_IntRC_OSC fuse bestaat ook niet trouwens)
[Bericht gewijzigd door Arco op (21%)]
Nou wordt ie mooi
Zeggen z eerst dat ik lui ben en dat ik het uit die tut moet kopiëren en dan is het nog niet goed. Er zit wel degelijk een include. En de include is ook toegevoegd aan het project.
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Het ledje gaat nu aan met deze config. Maar hij moet ook nog uit. Wat is er fout?
__config 0x3D1C ;sets the configuration settings
;(oscillator type etc.)
org 0x0000 ;org sets the origin, 0x0000 for the 16F628,
;this is where the program starts running
;*****Set up the Constants****
STATUS equ 03h ;Address of the STATUS register
TRISA equ 85h ;Address of the tristate register for port A
PORTA equ 05h ;Address of Port A
COUNT1 equ 08h ;First counter for our delay loops
COUNT2 equ 09h ;Second counter for our delay loops
;****Set up the port****
bsf STATUS,5 ;Switch to Bank 1
movlw 00h ;Set the Port A pins
movwf TRISA ;to output.
bcf STATUS,5 ;Switch back to Bank 0
;****Turn the LED on****
Start movlw 02h ;Turn the LED on by first putting
movwf PORTA ;it into the w register and then
;on the port
;****Start of the delay loop 1****
Loop1 decfsz COUNT1,1 ;Subtract 1 from 255
goto Loop1 ;If COUNT is zero, carry on.
decfsz COUNT2,1 ;Subtract 1 from 255
goto Loop1 ;Go back to the start of our loop.
;This delay counts down from
;255 to zero, 255 times
;****Delay finished, now turn the LED off****
movlw 00h ;Turn the LED off by first putting
movwf PORTA ;it into the w register and then on
;the port
;****Add another delay****
Loop2 decfsz COUNT1,1 ;This second loop keeps the
goto Loop2 ;LED turned off long enough for
decfsz COUNT2,1 ;us to see it turned off
goto Loop2 ;
;****Now go back to the start of the program
goto Start ;go back to Start and turn LED
;on again
;****End of the program****
end ;Needed by some compilers
;and also just in case we miss ;the goto instruction.
Sorry voor de slechte opmaak. Kijk hier voor een betere:
http://www.mstracey.btinternet.co.uk/pictutorial/progtut4.htm
Fantomaz
Ik moet hier weer vaker komen... Wat kun je zo'n forum als deze gaan missen. :-)
Los van de gaande discussie:
Op 5 december 2008 17:26:27 schreef pientertje:
85 hex=133 dec = 10000101
Sla gerust de moeilijke stap naar DEC over... 
85
8 = 1000
5 = 0101
dus 1000 0101
Niet dat je het fout had, maar je leek het heel omlachtig te doen. 
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
We zullen de gebruikelijke dingen maar weer eens afgaan...
- Gebruik geen losse equate voor de SFR's, maar gewoon de include file voor de processor
- Niet rommelen met status register maar banksel gebruiken
- Geen hex notation van het config word. (Want dat begrijpt geen hond; gebruik de equates uit de include file)
De eigenlijke fout is COUNT1 & 2. Memory locations 0x08 en 0x09 bestaan niet. Begint bij 0x20. Zie datasheet.