Ik heb het volgende programma geschreven om het een en ander even te proberen. Kheb namelijk een experimenteerbord met led's en schakelaars, maar wil ik met dit programma tot 5 tellen en dit rechtstreeks op led's laten zien (binair) met het commando ANDLW, maar dit lukt niet. Hij laat maar een led lichten en dat is alles. Ik kan met de schakelaar niet verder tellen.
Wie weet wat ik verkeerd doe.
LIST p=16F627
include "P16F627.inc"
__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC
CBLOCK 20h
RAM1 ;tbv timer
RAM2 ;tbv timer
RAM3 ;tbv teller
ENDC
ORG 0
GOTO RESET
RESET MOVLW B'00000111' ;Zet comparators uit
MOVWF CMCON
BSF STATUS,RP0 ;Ga naar bank 1
CLRF INTCON ;Zet interrupts uit
MOVLW B'00000000' ;Maak alle RB poorten uitgangen
MOVWF TRISB
MOVLW B'11111111' ;Maak alle RA poorten ingangen
MOVWF TRISA
BCF STATUS,RP0 ;Ga terug naar bank 0
BEGIN CLRF RAM3 ;RAM3 leeg maken
LOOP3 BTFSS PORTA,00h
GOTO LOOP3
GOTO LED
TIMER1 MOVLW D'255' ;Zet waarde 255 in werk-register
MOVWF RAM1
LOOP2 MOVLW D'255' ;Zet waarde 255 in werk-register
MOVWF RAM2
LOOP1 DECFSZ RAM2,1 ;Waarde in RAM2 verlagen tot 0
GOTO LOOP1
DECFSZ RAM1,1 ;Waarde in RAM1 verlagen tot 0
GOTO LOOP2
RETURN ;Terug naar programma
LED INCF RAM3,F
MOVF RAM3,W
MOVWF PORTB
MOVF RAM3,W
ANDLW D'5'
BTFSC STATUS,Z
GOTO LED
GOTO BEGIN
END
Dit gaat niet lukken met de ANDLW instructie, dit is namelijk een logische AND bewerking.
Om te zien of je al bij 5 bent moet je vijf van het getal aftrekken en kijken naar de Zero-flag.
SUBLW D5 dus i.p.v ANDLW D5
[Bericht gewijzigd door Zonnepaneeltje op ]
Bedankt voor de snelle reactie. Is dat ook weer duidelijk.
Ik heb namelijk een lijst met instructies. De meeste instructies weet ik wat ze doen, alleen van de instructies ANDLW,ANDWF,IORLW,IORWF,XORLW en XORWF weet ik niet wat ze doen. Kan iemand mij vertellen wat ze doen?
Jeroen Boere
IF you can't convince them, then confuse them!
Op 4 maart 2007 18:41:44 schreef Bert Huizinga:
Bedankt voor de snelle reactie. Is dat ook weer duidelijk.Ik heb namelijk een lijst met instructies. De meeste instructies weet ik wat ze doen, alleen van de instructies ANDLW,ANDWF,IORLW,IORWF,XORLW en XORWF weet ik niet wat ze doen. Kan iemand mij vertellen wat ze doen?
lees de datasheet van microchip door, daar staat een heel groot gedeelte wat gaat over de "instruction set"
hier worden ALLE mogelijke instructies voor de betreffende controller uitgebreid besproken inclusief .asm en soms .c voorbeelden.
succes d'r mee, mocht je er niet aan uitkomen dan horen we het wel 
Monster_Henry
My brain's all broken, but I'm feelin' alright, I feel like I'm chokin', but I'm feelin' alright, I'm goin' down fast, but I'm feelin alright, I'm not gonna last,but I'm feelin ALRIGHT! Oh Henry
ANDLW logische and tussen "L-waarde" en het W-register
ANDWF logische and tussen W-register en F-register
IORLW OR tussen L-waarde en W register
XORLW exclusieve OR tussen L-waarde en W-register
XORWF exclusieve OR tussen W-register en F-register
Daarna moet je je register kiezen en zeggen of je de uitkomst in het w reg wilt of in een F-register
Voorbehouden van eventuele foutjes (is al een tijdje geleden, ben het ook terug aan het opfrissen)
Ik ben wel een beetje bekend met de logica. Alleen nog snap ik het niet. Zou het dan betekenen dat als in w dit staat: B'00001001' en in je gebruikt de instructie ANDLW B'01000001' dat de uitkomst B'00000001' is?
ja, precies. Op elk bitje wordt een AND actie gedaan, Bij een AND moeten beide bits 1 zijn, wil de uitgang 1 worden, dat houdt dus hier in dat alleen 'bit0' 1 wordt.
[Bericht gewijzigd door Zonnepaneeltje op ]
Monster_Henry
My brain's all broken, but I'm feelin' alright, I feel like I'm chokin', but I'm feelin' alright, I'm goin' down fast, but I'm feelin alright, I'm not gonna last,but I'm feelin ALRIGHT! Oh Henry
dit hangt ervan af welke waarde je L geeft
dit is het literal register, kun je ter plekke een waarde geven...
is hetzelfde als je zegt
movlw b'00001111' 'zet '00001111' in het w-register
movwf locvoorgetal 'zet w(00001111) in f-register "locvoorgetal"Monster_Henry
My brain's all broken, but I'm feelin' alright, I feel like I'm chokin', but I'm feelin' alright, I'm goin' down fast, but I'm feelin alright, I'm not gonna last,but I'm feelin ALRIGHT! Oh Henry
is gewoon een exclusieve OR, een waarheidstabel zegt nog steeds meer als 1000 woorden
http://nl.wikipedia.org/wiki/XOR-poort