Kul med PIC församling - Episode 20 (2 / 2 steg)
Steg 2: programvara
Två program listor finns nedan. Inledningsvis ändrade jag bara versionen i Episode 19 (lämnar strängarna i RAM-minnet) så att jag kunde få de grundläggande uppdateringarna på plats. Denna version ingår inte här. För det mesta var ändringarna som krävs ändringar av några registrera namn och tillägg av BANKSEL kommandon. Kommandona BANKSEL krävdes eftersom de seriella porten register som finns i Bank0 av 16F688 är nu i Bank3 av 16F1847. Eftersom vi också behöver kontrollera PIR1 registret (som fortfarande finns i Bank0) i de rutinerna måste vi växla mellan Bank0 och Bank3. De frågor jag hade i att göra dessa förändringar var mestadels resultatet bara saknade ett par platser i koden där en BANKSEL behövdes.
När jag hade denna version kommer jag flyttade de strängar som hade kopierats till RAM-minnet till en tabell som definieras i programmet minne (start på adress 1000H). Som liknar vad jag gjorde för att definiera grafik uppgifterna i avsnitt 13. I det här fallet men jag använt DT (definiera tabellen) direktiv för var och en av strängarna i stället för direktivet uppgifter. Som tillät mig att faktiskt ange data som strängar, följt av de enskilda byte för vagnretur, radmatning och slutet av brytpunkt (0x00). Direktiven om DA (definiera ASCII) och DATA också tillåta att ange strängar men de fungerar inte för det här programmet eftersom de packa två 7-bitars ASCII-tecken i varje minnesplats 14-bitars program. DT direktivet sätter ett tecken per minnesplats. Det är vad som behövs för MOVIW (flytta indirekt till W) kommandot arbeta eftersom det endast tar upp de lägre 8-bitarna av data från adresserade minnet.
En av listorna nedan använder samma kommando och budskap strängar som användes i Episode 19 så det fungerar exakt samma. Börsnoteringen använder en noggrannare HTML-direktiv bara för att ge en indikation på vad som kan göras med längre strängar och extra minnesutrymme som tillhandahålls av 16F1847. I det här exemplet används HTML-kommandon för att rita två cirklar som representerar status för fram- och tillbaka sprinkler. Röd = off och grön = på (en skärm skott visas ovanför). Från vad jag har läst på nätet kanske du kan skicka upp till 2048 tecken med ett CIPSEND kommando. Exemplet programvara är för närvarande begränsad till 255 tecken eftersom en enskild 8-bitars RAM plats används för att räkna upp antalet tecken.
Tja, är det det för Episode 20 "Kul med PIC församling". Håll ögonen öppna för ytterligare episoder.