pic dimmer?
Har inte mplab ide på den här datorn är inte hemma än. Å det är inte min dator som jag sitter på. Lyckades bara hitta den demo filen, men hittade även assembel programmet och den funkade inte där, hittade 25 errors men jag kan kolla över den mer senare, å se om jag hittar dem. Vad som jag har gjort fel med andra ord.
Kod: Markera allt
processor pic16f267
include <P16F627.inc>
__CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC
;==========================================================================
; Variable Definition
;==========================================================================
TIMER1 EQU H'20' ;Used in delay routine
TIMER2 EQU H'21' ; " " "
PATERN EQU H'22' ;Pattern data for effect's
ORG 0 ;Reset vector address
GOTO RESET ;goto RESET routine when boot.
; *********************************************
; * Example of a delay routine *
; *********************************************
DELAY_ROUTINE MOVLW D'255' ;54 Generate approx 10mS delay at 4Mhz CLK
MOVWF TIMER2
DEL_LOOP1 MOVLW D'255' ;60
MOVWF TIMER1
DEL_LOOP2 DECFSZ TIMER1,F
GOTO DEL_LOOP2
DECFSZ TIMER2,F
GOTO DEL_LOOP1
RETURN
; **********************************
; ** RESET : main boot routine **
; **********************************
RESET MOVLW B'00000111' ;Disable Comparator module's
MOVWF CMCON
;
BANKSEL 0006 ;Switch to register bank 1
;Disable pull-ups
;INT on rising edge
;TMR0 to CLKOUT
;TMR0 Incr low2high trans.
;Prescaler assign to Timer0
;Prescaler rate is 1:256
MOVLW B'11010111' ;Set PIC options (See datasheet).
MOVWF OPTION_REG ;Write the OPTION register.
;
CLRF INTCON ;Disable interrupts
MOVLW B'11000000'
MOVWF TRISB ;RB7 & RB6 are inputs.
;RB5...RB0 are outputs.
MOVLW B'11111111' ;all RA ports are inputs
MOVWF TRISA
BANKSEL 0005 ;Switch Back to reg. Bank 0
CLRF PORTB
;
EFFECT_1 MOVLW B'00000001' ;Activate LD1 (RB0)
MOVWF PORTB
CALL DELAY_ROUTINE
MOVLW B'00000010' ;Activate LD2 (RB1)
MOVWF PORTB
CALL DELAY_ROUTINE
MOVLW B'00000100' ;Activate LD3 (RB2)
MOVWF PORTB
CALL DELAY_ROUTINE
MOVLW B'00001000' ;Activate LD4 (RB3)
MOVWF PORTB
CALL DELAY_ROUTINE
MOVLW B'00010000' ;Activate LD5 (RB4)
MOVWF PORTB
CALL DELAY_ROUTINE
MOVLW B'00100000' ;Activate LD6 (RB5)
MOVWF PORTB
CALL DELAY_ROUTINE
GOTO EFFECT_1
END
Är det ngt mer med den koden som är "fel"?
Att skriva kod för en microprocessor utan att kunna testa mot hårdvaran är inget *jag* skulle göra eller rekkomendera.
Visst, man kan ju simulera i mplab men även det är ganska segjobbat jämfört med test IRL.
Jag förstår inte ens hur du kan försöka lära dig detta utan att kunna testa det ordentligt, hur skall du hitta eventuella fel om du skriver all kod utan att testa någon gång på vägen?
Visst, man kan ju simulera i mplab men även det är ganska segjobbat jämfört med test IRL.
Jag förstår inte ens hur du kan försöka lära dig detta utan att kunna testa det ordentligt, hur skall du hitta eventuella fel om du skriver all kod utan att testa någon gång på vägen?
> Är det ngt mer med den koden som är "fel"?
Det enda jag reflekterar över är att banksel används lite underligt. Jag använder inte banksel på det viset, men det kanske funkar. Sedan är processor definitionen på första raden fel. Det står "pic16f267" jag antar att du igentligen menar "pic16f627".
Om det sedan fungerar får du prova själv, ingen utvecklare med självbevarelsedrift skulle med säkerhet konstatera att din kod kommer att funka utan problem bara genom att läsa den, oavsett hur många gånger man läst och kontrollerat koden. Det är bättre att be om hjälp att läsa koden efter det du konstaterat att det *inte* funkar, och tillhandahållit en noggran utförlig felbeskrivning för den som skall lägga tid på detta.
Och redan nu kan jag ju ge exempel på hur en felbeskrivning inte ska se ut och hur den bör se ut (enligt mitt tycke):
Hur en felbeskriving INTE skall se ut
Det funkar inte, vad är felet? (bifogar 2000 rader okommenterad kod, alternativt ingenting)
Hur en felbeskrivning BÖR se ut
Jag räknade med att LED1 skulle lysa i 10 ms och vara släckt i 20ms, men den lyser i 40 ms och är släckt i 10 ms. Det här tror jag är de relevanta avsnitten i min kod (bifogar väl utvalda ej skrymmande stycken av kod där felet tros ligga). I ditt fall här är dock koden så liten att det inte är mycket att stycka upp.
För att kunna hjälpa behöver man veta:
1. Vad förväntade du dig skulle hända?
2. Vad hände istället?
Det enda jag reflekterar över är att banksel används lite underligt. Jag använder inte banksel på det viset, men det kanske funkar. Sedan är processor definitionen på första raden fel. Det står "pic16f267" jag antar att du igentligen menar "pic16f627".
Om det sedan fungerar får du prova själv, ingen utvecklare med självbevarelsedrift skulle med säkerhet konstatera att din kod kommer att funka utan problem bara genom att läsa den, oavsett hur många gånger man läst och kontrollerat koden. Det är bättre att be om hjälp att läsa koden efter det du konstaterat att det *inte* funkar, och tillhandahållit en noggran utförlig felbeskrivning för den som skall lägga tid på detta.
Och redan nu kan jag ju ge exempel på hur en felbeskrivning inte ska se ut och hur den bör se ut (enligt mitt tycke):
Hur en felbeskriving INTE skall se ut
Det funkar inte, vad är felet? (bifogar 2000 rader okommenterad kod, alternativt ingenting)
Hur en felbeskrivning BÖR se ut
Jag räknade med att LED1 skulle lysa i 10 ms och vara släckt i 20ms, men den lyser i 40 ms och är släckt i 10 ms. Det här tror jag är de relevanta avsnitten i min kod (bifogar väl utvalda ej skrymmande stycken av kod där felet tros ligga). I ditt fall här är dock koden så liten att det inte är mycket att stycka upp.
För att kunna hjälpa behöver man veta:
1. Vad förväntade du dig skulle hända?
2. Vad hände istället?
> Sedan är processor definitionen på första raden fel. Det står "pic16f267"
Jag har bestämt för mig att MPLAB säger ifrån om "processor" inte
stämmer överens med "device" inställningen i menyerna...
Nä, basmicke får nog göra sin hemläxa lite bättre och återkomma då det
finns mer att gå på. Att korrekturläsa källkod finns ingen anledning till,
det gör MPLAB/MPASM utan problem.
Jag har bestämt för mig att MPLAB säger ifrån om "processor" inte
stämmer överens med "device" inställningen i menyerna...
Nä, basmicke får nog göra sin hemläxa lite bättre och återkomma då det
finns mer att gå på. Att korrekturläsa källkod finns ingen anledning till,
det gör MPLAB/MPASM utan problem.
Nej nej nej...
ANVÄND BANKSEL !!
Men gör det på korrekt sätt.
T.exO.s.v....

ANVÄND BANKSEL !!
Men gör det på korrekt sätt.
T.ex
Kod: Markera allt
BANKSEL PORTB ;Switch Back to reg. Bank 0
CLRF PORTB