Stap 2: Software
Een van de redenen ik assembler voor microcontrollers is omdat ik graag praat rechtstreeks met de hardware. Zodra u begrijpt dat controle van de hardware meestal gewoon is lezen en naar geheugenlocaties schrijven (genaamd
registers), beginnen de instructies om steek te houden. De instructieset is ook vrij klein, dus het neemt niet veel tijd om te sorteren via hen. Het harde deel, als je gewend bent aan het hogere niveau talen, is dat het duurt een beetje wennen aan het feit dat eenvoudige constructies zoals IF-THEN-ELSE moeten worden opgebouwd uit diverse montage-instructies. En wiskunde kan een nachtmerrie worden dus eenvoudige logica gebaseerde projecten meestal het beste zijn. Maar hey, is niet uitdagen altijd deel van het plezier?
Hieronder vindt u de link van de software. Terwijl het wordt gericht voor de 12F683, is het eenvoudig geport naar grotere versies van de PIC. Persoonlijk, ik heb het gebruikt met zowel de 16F688 als de 16F627. Meestal vereist het te wijzigen in namen, zoals TRISIO TRISA, en GPIO naar PORTA. U zult ook moeten veranderen de regel waarmee de PIC-versie (lijst =) en het INCLUDE-bestand, maar die zijn intuïtieve veranderingen. De __CONFIG lijn wellicht ook tweaken alleen maar omdat een of twee van de gebruikte etiketten zijn anders gespeld in sommige van de INCLUDE-bestanden.
De LCD_Init-routine voldoet vrijwel aan de opgegeven initialisatie sequentie voor de 1602-chip. De twee Test_Code-routines uitgang de zinsnede "Hallo" op regel een van de LCD en "CAROL" op regel twee van het LCD-scherm. Het
oorspronkelijk zei "HELLO WORLD" maar mijn vrouw was niet onder de indruk dus mij gewijzigde op voor het gebruik van haar naam. Ze was nog niet onder de indruk, maar ik kreeg punten voor het proberen. De truc van de software die eerder gezegd is in de Send_Byte-routine. Ik gebruik het feit dat de verschuiving klokken op een lage tot hoge rand registreren en dat de Clock lijn heeft achtergelaten in de hoge Braziliaanse nadat het laatste stukje werd geklokt. Een geheugenlocatie Reg_Select is eerder ingesteld op 0 of 1 afhankelijk van wel of niet de byte worden verzonden een opdracht of gegevens is. Als er een opdracht, is dan de Clock lijn laag ingesteld voordat u het LCD-scherm inschakelt. Een korte puls op de regel van de LCD inschakelen klokken de shift register byte in de LCD.
Nou, dat is het voor aflevering 1 van "Fun met PIC vergadering". Stay tuned voor meer afleveringen als ik rond om mijn diverse projectnotities in een samenhangend formaat.