Nybörjare "PIC"

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, då är jag med... :-)

Den där speciella LCD-serien (där 917 ingår) blev populär under ett tag
eftersom de var de första 28 och 40 pinnars PIC16 som hade den 1%-iga
8 Mhz intosc. Själva LCD funktionen går ju att "koppla bort", men det gör
både processorn och databladet lite onödigt komplicerade.

*I dag* har 88x serien i princip tagit deras roll *om* man inte har behov av
just direktdrivninge av LCD paneler, vilket som sagt inte är speciellt vanligt.

Just "x8x" modellerna (d.v.s med en "8" som andra-siffra) som t.ex :
683 (8-pin), 688 (14-pin), 88 (18-pin), 886 (28-pin) och 887 (40-pin)
är en trevlig PIC16-serie med väldigt snarlika egenskaper vilket gör porting
av källkod mellan olika modeller rellativt enkel. De utgör också de
modernaste PIC16 modellerna i dag...

EDIT : Glömde en sak...
Konstigt nog finns det bara *en* leverantör av PIC kretsar (så vitt jag känner
till, och jag tänker inte leta) i Sverige som kan leverera alla modellerna
ovan direkt från lager... 8)
Användarvisningsbild
Andy
Inlägg: 5893
Blev medlem: 26 september 2004, 18:24:52
Ort: Södern

Inlägg av Andy »

Tack för tipsen båda två!
Jag har tänkt ”leka” lite i första hand och kanske lära mig något på samma gång.

Sodjan; vem kan den där leverantören vara som du tänker på?? :lol:
farmer
Inlägg: 10
Blev medlem: 1 oktober 2007, 19:13:18
Ort: Sundsvall

Inlägg av farmer »

Hej igen,

Nu har jag kommit en bit på väg. Men nu skulle jag behöva lite hjälp.

Jag skulle vilja ha lite hjälp med ett assembler program, jag vill INTE ha en helt fungerande kod från er utan bara lite hjälp på vägen.

Jag tänker skriva ett program som kännar av när RA1 går hög då sätter den RB4 hög. Samt kollar om RA2 blir låg då ska den sätta RB5 hög...

Jag använder en PIC16F628A..

Så är det någon som har något tips att dela med sig ???

.M
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

BTFSS eller BTFSC för att testa en pinne.

BSF eller BCF för att sätta en pinne.

Se till att TRIS är korrekt för dina in/ut gångar.

Gör det hela i en loop...
farmer
Inlägg: 10
Blev medlem: 1 oktober 2007, 19:13:18
Ort: Sundsvall

Inlägg av farmer »

Vad gör jag för något fel.???
Med den här koden så kollar jag om statusen på PORTA,0.
Om den är låg så sätter den PORTB,0 hög.
Efter det så kollar den PORTA,1.
Om den är låg så sätter den PORTB,0 låg.
Sen så börjar loopen om...

Men det fungerar inte, det ända som händer är att lysdioden på PORT,0 lyser ca 70% av sin styrkan...

Kod: Markera allt

		processor	pic16f628a
		include		"p16f628a.inc"
		__config	(_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF)

        org     0      

start
		clrf    PORTA
		clrf    PORTB
		bsf		STATUS,RP0		
		movlw   b'00001111'  	
      movwf   TRISA   	
		movlw   b'00000000'    
		movwf   TRISB           
		bcf		STATUS,RP0		

main            
		btfss   PORTA, 0       
       bsf     PORTB, 0       
       btfss   PORTA, 1        
       bcf     PORTB, 0       
       goto    main            

		end
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Vad är kopplat till PORTA pinne 0 och 1 ?

Sen ska du kolla vad som skrivs om analoga pin-funktioner
i databladet om PORTA. MYCKET VIKTIGT !!!! Det brukar vara en
liten grå ruta där det står "Note!"...

Du kan också gärna beskriva vad du har läst.

Se så kommer din kod bara att sätta pinnarna åt ett håll,
så att säga, men det kanske är OK...
farmer
Inlägg: 10
Blev medlem: 1 oktober 2007, 19:13:18
Ort: Sundsvall

Inlägg av farmer »

HAAAA,

Jag la till följade kommandon som jag hittade i en liten grå ruta i databladet.

MOVLW 0x07
MOVWF CMCON

efter det så fungerar det som det ska...
Tack Sodjan, du är en klippa...

Jag har vanliga små switch kopplat till porta 0 & 1 via pullup motstånd på 10k.
Vad menade du med sätta pinnarna åt ett håll ???
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Vad menade du med sätta pinnarna åt ett håll ???

Ingenting, ser jag nu när jag kollar din kod igen... :-)
farmer
Inlägg: 10
Blev medlem: 1 oktober 2007, 19:13:18
Ort: Sundsvall

Inlägg av farmer »

Två skaker....

Går det att använda if-satser i assembler programering ?

Vilket kommando eller vart kan jag hitta lite information om hur man skickar ASCII tecken till en dator via seriella porten ???


.M
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

"Går det att använda if-satser i assembler programering ?"
Det är ju just det du har gjort nu. :)

-----------

btfsc PORTA,1 ;Om porta,1 är hög gå till sub1, annars fortsätt
call sub1
.....

sub1
....
return

------------------


Eller hur?? :)

Mvh.
Tottish
Inlägg: 847
Blev medlem: 30 juni 2007, 19:11:37
Ort: Oslo, Norge

Inlägg av Tottish »

Vad menar du med if-satser? Precis som squiz3r skrev så har du ju i ditt program en typ av if-sats, men den testar ju bara en bit. Vill du "if:a" en hel byte så ska det væl gå att køra XOR på den variabel du vill køra if på med det tal du vill jæmføra med "på andra sidan" før att sedan kolla Z-flaggan i statusregistret. Hur detta går till kan du sækert klura ut sjælv.

Hm, kanske blev lite grøtigt dær, kan læmna ett førtydligande om det blir nødvændigt.

Angående ASCII øver RS232 (COM-port, serie-port, kært barn, du vet =) så kan jag rekomendera min tråd med titel "Simpel RS232 VB(A)<->PIC. Komplicerat?". Du finner den rætt høgt upp i "Microprocessorer" då den ær ganska ny. Dær lænkas det och diskuteras en del om just RS232-kommunikation och VBA-temat ær inget som ær særskilt påtrængande i tråden æn så længe.

Lycka till med allt!
/Tottish
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Går det att använda if-satser i assembler programering

1. Det finns massor av sätt att lösa det på i assembler, det beror på vad som står efter if, d.v.s *vad* som ska testas.

2. Det finns ett IF direktiv. RTFM för mer info. Eller kolla i hjälpen i MPLAB.

> vart kan jag hitta lite information om hur man skickar ASCII tecken till en dator via seriella porten...

I kapitlet om USART i datablad för de processorer som har en USART.
farmer
Inlägg: 10
Blev medlem: 1 oktober 2007, 19:13:18
Ort: Sundsvall

Inlägg av farmer »

Behöver lite hjälp igen, jag har varit inne på sodjans hemsida och nu håller jag på att testa koden för HD44780..
http://www.jescab.se/HD44780.html

Jag får error när jag försöker kompilera koden,
"Directive only allowed when generating an object file"

Den tycker inte om RESET_VECTOR och alla likvärda kommandon.

Kod: Markera allt

RESET_VECTOR    CODE    0x000       ; processor reset vector
     goto    start               ; go to beginning of program
Vad gör jag för något fel, jag använder MPLAB 7.62..

.Micke
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Du har inte lagt till något "Linker Script" (LKR fil) till ditt projekt.
Se : http://www.jescab.se/Info_MPLAB.html
Leta efter "Linker Script".
(Notera att jag har råkat skriva fel på sidan, det heter .LKR, inte .LNK...)
Skriv svar