Resultat display
Nja, funkar gör det inte för jag vet hur man får 7bit, Parity even att bli 8bit, Parity No. Eller på något annat sätt konverterar så att det fungerar.
EDIT: Sökte lite snabbt på nätet och tog reda på hur Even och Odd parity fungerar.
Går det på något sätt att sätta 7 biten till 0 eller ignorera den.
EDIT: Sökte lite snabbt på nätet och tog reda på hur Even och Odd parity fungerar.
Går det på något sätt att sätta 7 biten till 0 eller ignorera den.
Tackar!
Nu fungerar allt som det skall!
Måste tacka alla er två Sodjan och Icecap, som hjälpt mig i detta del projekt.
Det tog en månad och nu har jag lärt mig en del om ASM programmering.
Misstänker att det finns mer att lära.
Nästa del blir att få åkarens start nr. och tid, samt bästa tid och dennes start nr. på en LCD display.
Nu fungerar allt som det skall!
Måste tacka alla er två Sodjan och Icecap, som hjälpt mig i detta del projekt.
Det tog en månad och nu har jag lärt mig en del om ASM programmering.
Misstänker att det finns mer att lära.
Nästa del blir att få åkarens start nr. och tid, samt bästa tid och dennes start nr. på en LCD display.
Idag fortsatte jag med nästa del i detta projekt och det är att få upp tiderna på en HD44780 kompatibel LCD display.
Jag testade displayen med JESCAB´s kod exemplel http://www.jescab.se/HD44780.html och den fungerar.
Så jag har börjat lägga till kod för att få data från tidtagningen att komma upp på lcd displayen,
men det verkar inte gå att skriva på följande sätt för där det står digit_0, digit_1 o.s.v. blir det bara konstiga tecken.
Får inga felmedelande i MPLAB, kan man som nedan?
Jag testade displayen med JESCAB´s kod exemplel http://www.jescab.se/HD44780.html och den fungerar.
Så jag har börjat lägga till kod för att få data från tidtagningen att komma upp på lcd displayen,
men det verkar inte gå att skriva på följande sätt för där det står digit_0, digit_1 o.s.v. blir det bara konstiga tecken.
Får inga felmedelande i MPLAB, kan man som nedan?
Kod: Markera allt
lcd_text1 data d'1', d'1', ' ', ' ', ' ', ' ', h'00'
lcd_text2 data d'1', d'5', digit_7, digit_6, ':', digit_5, digit_4, ':', digit_3, digit_2, ',', digit_1, digit_0, h'00'
lcd_text3 data d'2', d'1', ' ', ' ', ' ', ' ', h'00'
lcd_text4 data d'2', d'5', ' ', ' ', ':',' ', ' ', ':', ' ', ' ', ',', ' ', ' ', h'00'
Du har inte förstått vad som hanteras/beräknas vid "assembly time" resp "run time".
Ett vanligt missförstånd...
Du får inga felmedelanden eftersom det du har skrivit är helt korrekt.
Men det ger inte det resultat som du tror.
Kolla upp "data" (sid 62 i MPASM manualen). Som du ser så skapar
det data till minnesadresser vid *assembly time*. I ditt exempel så
kommer data att lägga in *adresserna* till digit_x som data till LCD'n.
Det ger nog inte förväntat resultat...
Eftersom "data" skapar fasta konstanter i flashminnet, så kan du inte
heller ändra värdet vid run_time.
Du kan använda lcd_text4 för att rensa displayen, men det andra får du
skriva ut på annat sätt. Inget problem alls, bara att skapa en
subrutin som du anropar på lämpliga ställen...
Ett vanligt missförstånd...
Du får inga felmedelanden eftersom det du har skrivit är helt korrekt.
Men det ger inte det resultat som du tror.
Kolla upp "data" (sid 62 i MPASM manualen). Som du ser så skapar
det data till minnesadresser vid *assembly time*. I ditt exempel så
kommer data att lägga in *adresserna* till digit_x som data till LCD'n.
Det ger nog inte förväntat resultat...

Eftersom "data" skapar fasta konstanter i flashminnet, så kan du inte
heller ändra värdet vid run_time.
Du kan använda lcd_text4 för att rensa displayen, men det andra får du
skriva ut på annat sätt. Inget problem alls, bara att skapa en
subrutin som du anropar på lämpliga ställen...
Så åter till detta projekt.
Ja nu förstår jag varför det vart konstiga tecken.
Det man alltså skulle kunna ha nytta av "data" är om man vill t.ex. skriva ut text vid uppstart så som ex. version m.m.
Där efter ha en subrutin som rensar lcd´n och skickar inkomna tecken från resektive Digit_x till rätt pos på lcd´n
Ja nu förstår jag varför det vart konstiga tecken.
Det man alltså skulle kunna ha nytta av "data" är om man vill t.ex. skriva ut text vid uppstart så som ex. version m.m.
Där efter ha en subrutin som rensar lcd´n och skickar inkomna tecken från resektive Digit_x till rätt pos på lcd´n
Det som man definierad med "data" är statiskt och kan inte ändras i run-time.
Sen kan man naturligtsvis kombinera data-strängar med variabler som t.ex
om man vill skriva "Temp:xxx" då "Temp:" kan vara en statisk "data" sträng
och "xxx" skrivs ut dynamiskt.
För att få en snygg struktur på det hela så jobbar man så klart friskt
med subrutiner.
Sen kan man naturligtsvis kombinera data-strängar med variabler som t.ex
om man vill skriva "Temp:xxx" då "Temp:" kan vara en statisk "data" sträng
och "xxx" skrivs ut dynamiskt.
För att få en snygg struktur på det hela så jobbar man så klart friskt
med subrutiner.
Tittade in manualen för Hitachi HD44780U (LCD-II) och såg att man kan välja mellan att köra 8 eller 4 bit överföring. I ditt ex. är det 4 bit. är det någon anledning till att du valde 4-bit eller bara för att vissa ett ex. med 4 bit.
Anledningen till at jag undrar är att det blir ju mindre kod med 8-bit och förmodligen snabbare överföring till lcd´n.
Anledningen till at jag undrar är att det blir ju mindre kod med 8-bit och förmodligen snabbare överföring till lcd´n.
Okej!
Då en fråga angånde koden, för att skicka ett tecken till lcd´n måste man veta vilken rad och position innan man skickar tecknet.
Så om jag förståt allt rätt så skickar man först vilken rad "rad 1" och sedan vilken pos "pos 1" och sedan tecknet.
Skall man sedan börja om med rad och pos innan man skickar nästa tecken eller kan man skicka nästa direkt efter åt?
Då en fråga angånde koden, för att skicka ett tecken till lcd´n måste man veta vilken rad och position innan man skickar tecknet.
Så om jag förståt allt rätt så skickar man först vilken rad "rad 1" och sedan vilken pos "pos 1" och sedan tecknet.
Skall man sedan börja om med rad och pos innan man skickar nästa tecken eller kan man skicka nästa direkt efter åt?