Sida 2 av 4
Postat: 16 mars 2007, 19:37:46
av sodjan
> Men jag vill köra med intosc men eriikh's kod är för kristall,
Justera delay rutinerna, om du vill ha samma fördröjningar vid 4 Mhz
som vid 20 Mhz.
> Movlw 0x45
> movlw a'E'
Samma sak (om nu ascii koden för "E" = "45" i hex, jag har inte kollat...)
> Och vad menas med "ISR Equ 0x004 " ?
Bara för att kunna skriva "Org isr".
"ORG h'004' " går lika bra. Lite onödigt med en symbol där igentligen...
Postat: 16 mars 2007, 19:45:47
av squiz3r
Jag hadde tänkt använda en "look up tabel" och då ska man ju ändra värdet i program counter, Men när jag kollar i data bladet för PIC16F628A så finns där ett register som heter "PCL" är det den som jag ska ändra? Och desutom så finns det en i varje bank, en på 02h en på 82h en på 102h och en på 182h, vilken av dem är det i så fall? och värdet jag lägger till i PC ska det vara i hex?
Så här tänkte jag göra:
Kod: Markera allt
PC equ 02h ; är det 02h????
movlw 03 (h ? ) ;Ska det vara 'h' är eller är det 'd'????
call table
:
table addwf PC
retlw d'10'
retlw d'20'
retlw d'30'
retlw d'2'
retlw d'1'
retlw d'40'
retlw d'60'
return
//Daniel A
Postat: 16 mars 2007, 20:00:30
av sodjan
PCL är "un-banked", d.v.s det är tillgängligt från alla banker.
Precis som t.ex STATUS t.ex.
PCL finns definierat i INC filen, så plocka bort din EQU.
> och värdet jag lägger till i PC ska det vara i hex?
Förstår inte frågan. Ett värde är ett värde är ett värde.
Hur du väljer att representera värdet (dec/hex/oct) i din kod
spelar ingen roll.
Dessutom har ju '03' samma "värde" oavsett om det är hex eller decimalt.
Notera också att tabellen inte får passera en 256 bytes gräns med den
enkla lösningen du har. Antingen tvingar man tabellen till en "säker"
plats, eller så får man lägga till kod för att hantera PCLATH. Det finns
en del info om detta i databladet samt i en app-note (minns inte numret,
men leta efter "table lookup").
Postat: 16 mars 2007, 20:11:11
av squiz3r
>Förstår inte frågan. Ett värde är ett värde är ett värde.
Hur du väljer att representera värdet (dec/hex/oct) i din kod
spelar ingen roll.
>Dessutom har ju '03' samma "värde" oavsett om det är hex eller decimalt.
Aha! Så blir det ju!Jag tänkte bara lite fel.
Jag får kolla upp det med 256 bytes, så jag förstår det också.
//Daniel A
Postat: 16 mars 2007, 20:13:54
av squiz3r
sodjan skrev:> Men jag vill köra med intosc men eriikh's kod är för kristall,
Justera delay rutinerna, om du vill ha samma fördröjningar vid 4 Mhz
som vid 20 Mhz.
> Movlw 0x45
> movlw a'E'
Samma sak (om nu ascii koden för "E" = "45" i hex, jag har inte kollat...)
> Och vad menas med "ISR Equ 0x004 " ?
Bara för att kunna skriva "Org isr".
"ORG h'004' " går lika bra. Lite onödigt med en symbol där igentligen...
Okej,Tack så myket! Då kan jag nog börja labba lite med den
//Daniel A
Postat: 16 mars 2007, 21:54:36
av squiz3r
Hur ändrar jag om MPLAB ska reagera på stor och liten bokstav? Eriikh's kod funkar inte på min, det är säkert 100 fel pga. storbokstav...
Tacksam för snabb hjälp!
//Daniel A
Postat: 16 mars 2007, 22:28:09
av sodjan
Kryssa i "case usensitive" i konfigurationen för MPLAB.
Projekt -> Build Options -> Projekts. MPASM fliken...
Postat: 16 mars 2007, 22:44:32
av squiz3r
Tack så mycket! då va det fixat, fasst innan jag fick svaret tog jag mig tiden att rätta tillalla till stor eller liten bokstav.
När jag kör programmet kommer det upp svarta rutor i alla "matriser" på översta raden men inte mera sen... Vad kan det bero på?
Och min BKL funkar inte heller. När jag kollade hur banorna gick på den, gick det till tomma "rutor" för ytmonterade komponenter. Eftersom dem komponenterna inte finns där kan jag inte se att dem tvåpinnarna (BKL 0v och BKL +4,2V) skulle kunna gå någonstans... Det är ju rätt vanligt att det är tumma såna "rutor" men dem här pinnarna värkar inte junna gå någonstans utan dem...

dem kan väll inte glömt att sätta på dem? Det är bla. en som det står R7 på o sen är det J1, J2, J4 och J4. minus sidan kommer bara till två av "rutorna" J3 och J2. Och + sidan kommer bara till ena sidan av den tomma motståndsrutan(R7)...
//Daniel A
Postat: 16 mars 2007, 22:50:09
av sodjan
*ÄR* det någon BL överhuvudtaget på modulen ??
> När jag kör programmet kommer det upp svarta rutor i alla "matriser"
> på översta raden men inte mera sen... Vad kan det bero på?
Felkoppling ?? Fel i programmet ??
Ärligt talat, hur fasen ska någon kunna veta det...

Översta raden blir väl så efter power-on har jag för mig...
Postat: 17 mars 2007, 08:22:35
av squiz3r
Ja, det ska vara BL på den...konstigta att programmet funkade för han men inte för mig

Jag får ta olabba vidare lite...
Eriikh: Vad var det för problem du hadde med din ibörjan?
Tack!
//Daniel A
Postat: 17 mars 2007, 10:02:17
av squiz3r
Eriikh: Jag fick inte ditt program att fungera så jag gjorde ett eget med hjälp av PDF'erna som sodjan länkade till.
Det är bara min första version, men den funkar för att skriva text med

, Jag ska lägga det som subrotiner m.m. och se om jag kan få det till 4-bit mode.
Kod: Markera allt
;***************** LCD-writer 1.0 ***************
;This program write "Hallo!" on a 16 x 2 LCD with 5x7 dots,
;in 8-bit mode, from at PIC16F628A.
;
;Pinnout:
;RS = PORTA,3
;EN = PORTA,2
;Data 1-8 = PORTB,0-7
;
;*******
;Writen by Daniel Andersson, Daniel(at)crazycasemod(dot)se
;for www.crazycasemod.se.
;*******
;********* Start off program **********
; Assign your microcontroller
LIST P=16F628A
; This include file makes programming more understandeble
include <P16F628A.INC>
__CONFIG _CP_OFF & _DATA_CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _LVP_OFF
; save on free ram in bank0
delay_var1 equ 20h
delay_var2 equ 21h
delay_var3 equ 22h
pause1 equ 23h
;define pinouts
#define EN PORTA,2
#define RS PORTA,3
#define LCD PORTB
;startadres of the controller
org 0x0000
; For using A0-A3 as digital I/O
movlw D'7' ;
movwf CMCON ; Comparators off, all pins digital I/O
; Reset Port values
clrf PORTA
clrf PORTB
; define your pin direction (input/output)
bsf STATUS, RP0 ; Switch to bank 1
movlw b'00000000' ;
movwf TRISA ; PORTA = 1,2,3,4,5 & 7 out, 6 in
movlw b'00000000' ;
movwf TRISB ; PORTB = all outputs
bcf STATUS, RP0 ; Switch to bank 0
; main loop
main
call delay ;*************
call delay ;Wait for display to start
call delay ;*************
;*************
movlw b'00001111' ;display on, blinkin krusor
movwf LCD ;*************
call delay ;*************
bsf EN ;press enable
call pause ;
bcf EN ;
call pause ;**************
call delay
;*************
movlw b'00111000' ;8-bit 5x7 dots, 2 lines
movwf LCD ;*************
call delay ;*************
bsf EN ;press enable
call pause ;
bcf EN ;
call pause ;**************
bsf RS ;switch to character mode
call delay
movlw a'H' ;**************
movwf LCD ;Send "A" to LCD
call delay ;
bsf EN ;press enable
call pause ;
bcf EN ;
call pause ;**************
movlw a'a' ;**************
movwf LCD ;Send "A" to LCD
call delay ;
bsf EN ;press enable
call pause ;
bcf EN ;
call pause ;**************
movlw a'l' ;**************
movwf LCD ;Send "A" to LCD
call delay ;
bsf EN ;press enable
call pause ;
bcf EN ;
call pause ;**************
movlw a'l' ;**************
movwf LCD ;Send "A" to LCD
call delay ;
bsf EN ;press enable
call pause ;
bcf EN ;
call pause ;**************
movlw a'o' ;**************
movwf LCD ;Send "A" to LCD
call delay ;
bsf EN ;press enable
call pause ;
bcf EN ;
call pause ;**************
movlw a'!' ;**************
movwf LCD ;Send "A" to LCD
call delay ;
bsf EN ;press enable
call pause ;
bcf EN ;
call pause ;**************
stop
goto stop
; Delay routine
delay movlw D'10'
movwf delay_var3
delay1 movlw 0x82
movwf delay_var2
delay2 movlw 0xFF
movwf delay_var1
delay3 decfsz delay_var1, f
goto delay3
decfsz delay_var2, f
goto delay2
decfsz delay_var3, f
goto delay1
return
pause movlw D'100'
movwf pause1
pause2 decfsz pause1, 1
goto pause2
return
END
//Daniel A
Postat: 17 mars 2007, 14:13:46
av squiz3r
Har nu suttit i många många timmar för att få igång backlight, jag har läst på alla sidor som herr google visade mig. På allaställen står det att man bara ska koppla plus via antingen en 100Ω pot eller en 1Ω resistor. Men hur jag än gör lyser det inte... Jag har mätt med en multimeter(eller vad det nu heter) och det var ingen kontakt mellan dem två.
Och desutom, härär bilden som var på dems hemsida:
Men min har inte vita bokstäver utan det är en grön-grå bakrund med svart-gråa bokstäver... o det kan väll inte ändras om man lyser med bakrunsbelysningen?
Tack!
//Daniel A
Postat: 17 mars 2007, 14:37:31
av squiz3r
Här kommer några bilder på min:
så här står det på påsen jag fick den i.
framsidan
baksidan
här sitter LED'n på bilden, men här är inte ens en öppning till glaset...
men på denna sidan är det hål i metalen in till glaset, och det sitter någon "klutt" där, som skulle kunna va lim.
så här ser den ut när den är igång
Kan det vara så illa så att dem tog en utan BL till mig o la i en påse som det stog med BL på..
//Daniel A
Postat: 17 mars 2007, 15:10:54
av BEEP
Det kanske är så att du måste löda dit ett motstånd till anoden på backlighten

Postat: 17 mars 2007, 15:14:15
av squiz3r
BEEP: Har funderat på det, men då är frågan om det överhuvodtaget finns någon LED, och om jag löder på ett motstånd där så kommer det inte längre än till dem tumma lödpungterna för J1 -> J4...
//Daniel A