PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
marcla
Inlägg: 311 Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved
Inlägg
av marcla » 19 juni 2008, 19:31:23
Hej har skrivit mitt första program i asm för pic men det vill inte funka...
Kod: Markera allt
processor 16f676
include <p16f676.inc>
__CONFIG _BODEN_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _MCLRE_ON
STATUS equ 03h
PORTC equ 07h
TRISC equ 87h
K equ 1Eh
MAIN BSF STATUS,5
MOVLW 00h
MOVWF TRISC
BCF STATUS,5
LOOP MOVLW b'11111'
MOVWF PORTC
call DELAY
MOVLW 00h
MOVWF PORTC
call DELAY
GOTO LOOP
DELAY
MOVLW D'255'
MOVWF K
DO DECFSZ K, 1
GOTO DO
RETURN
end
Det händer inget när jag kör programmet...
Där emot om jag nuddar kristallen då tänds dioderna en liten stund sedan släcks dem...
Är det något fel med min konfig av kristallen var görs konfigureringen i MPLAB?
När jag kör programeraren får jag varningen: "No config word in file"
Senast redigerad av
marcla 20 juni 2008, 13:17:25, redigerad totalt 4 gånger.
vfr
EF Sponsor
Inlägg: 3515 Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka
Inlägg
av vfr » 19 juni 2008, 21:20:25
Gör man det på rätt sätt så gör man det med assemblerdirektiv i källkoden. Läs på i manualen till MPASM. Fördelen är då att inställningarna finns med i hexfilen till den färdiga applikationen, och behöver inte ställas in i programmeraren.
marcla
Inlägg: 311 Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved
Inlägg
av marcla » 20 juni 2008, 11:07:33
Gjorde ett nytt program:
Kod: Markera allt
processor 16f676
include <p16f676.inc>
__config _RC_OSC & _WDT_OFF & _PWRTE_ON
org 0
movlw B'00000000'
tris PORTC
movlw B'00000001'
movwf PORTC
fin: goto fin
end
men då får jag följande fel:
Kod: Markera allt
Error[113] C:\USERS\MARTIN\DESKTOP\PIC\ASM\BLINK A LED\LED.ASM 3 : Symbol not previously defined (_RC_OSC)
Vad är fel?
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 20 juni 2008, 11:29:12
Varför _RC_OSC ???
Varför tror du att det skulle fungera ?
Se databladet samt (slutet av) p16f676.inc.
marcla
Inlägg: 311 Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved
Inlägg
av marcla » 20 juni 2008, 13:12:03
Ok ändrade till _XT_OSC och då tännds dioderna men när jag det första programmet som blinkar led då tänds bara dioderna och inget mer????
vfr
EF Sponsor
Inlägg: 3515 Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka
Inlägg
av vfr » 20 juni 2008, 13:20:58
Vad har du för kristall?
På högre frekvenser (kommer inte ihåg var gräsen går) så skall man använda HS-oscillator.
marcla
Inlägg: 311 Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved
Inlägg
av marcla » 20 juni 2008, 13:26:23
Kör 4mhz
Och enl. datablad så skall det vara XT
Icecap
Inlägg: 26659 Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark
Inlägg
av Icecap » 20 juni 2008, 14:01:19
Ditt delay är kort, det kan mycket väl vara att LED'n blinkar men så snabbt att du inte ser det.
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 20 juni 2008, 14:13:08
Kör i MPSIM och sätt på "stopwatch" så ser du vilken blinkfrekvens du får.
Eller bara räkna ut den, det är ju bara 1 instruktion i delay-loopen...
> DO DECFSZ K, 1
Srkiv *aldrig* "0" eller "1", använd alltid "F" eller "W"...
> MOVLW b'11111'
> MOVWF PORTC
Ange alltid 8 bitar.
> BCF STATUS,5
Använd alltid symbolerna som är definierade, aldrig bara en siffra.
> MOVLW 00h
> MOVWF TRISC
Samma sak som "CLRF TRISC"...
marcla
Inlägg: 311 Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved
Inlägg
av marcla » 20 juni 2008, 16:00:15
Ok!
Dioden blinkade men för snabbt för att se...
SODJAN: Så hur skall man skriva BCF STATUS,5 så att det blir rätt?
BMI
Gått bort
Inlägg: 496 Blev medlem: 31 juli 2006, 22:29:08
Ort: Halmstad
Inlägg
av BMI » 20 juni 2008, 16:29:25
BCF STATUS,RP0
Enligt Inc filen för P16F676
Kod: Markera allt
;----- STATUS Bits --------------------------------------------------------
IRP EQU H'0007'
RP1 EQU H'0006'
RP0 EQU H'0005'
NOT_TO EQU H'0004'
NOT_PD EQU H'0003'
Z EQU H'0002'
DC EQU H'0001'
C EQU H'0000'
Senast redigerad av
BMI 20 juni 2008, 16:34:22, redigerad totalt 1 gång.
marcla
Inlägg: 311 Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved
Inlägg
av marcla » 20 juni 2008, 16:33:17
ok!
tack
Icecap
Inlägg: 26659 Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark
Inlägg
av Icecap » 20 juni 2008, 21:13:50
Grejen med det är att OM man använder de "rätta" bitnamn kan samma mjukvara kompileras i ett annat projekt där bitsen heter det samma men kan vara flyttat i placering.
Dessutom är det mycket enklare att läsa programmet, det blir mer logisk.
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 21 juni 2008, 01:55:59
> Dessutom är det mycket enklare att läsa programmet,...
Jag skulle säga att det *primärt* är för kunna läsa koden
utan att sida med databladet i handen varje gång.
Står det bara "5", så måste jag kolla att det är rätt.
Står det "RP0" så vet jag att det är rätt...