270 likes | 360 Views
Les 3 - onderwerpen. Het DB026 bordje Programmeren: tellen op de LEDjes Macro’s. USB interface. Wall-wart voeding. programming circuit. target PIC16F688. 8 LEDs. 3 7-segment displays. keypad. LDR (lichtgevoelige weerstand). Potentiometer (instelbare weerstand). Luidsprekertje.
E N D
Les 3 - onderwerpen • Het DB026 bordje • Programmeren: tellen op de LEDjes • Macro’s Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
USB interface Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Wall-wart voeding Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
programming circuit Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
target PIC16F688 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
8 LEDs Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
3 7-segment displays Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
keypad Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
LDR (lichtgevoelige weerstand) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Potentiometer (instelbare weerstand) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Luidsprekertje Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
IR receiver Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
IR transmitter Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
RJ connector Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Dwarf Board connector Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
PIC16F688 memory map:I/O pinnen Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
DB026 bordje – aansturing Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
DB026 bordje – tel op 6 LEDs • Configureer RA en RC als outputs • Zet RA op de juiste waarde voor ’LEDs’ • Loop: • Tel in een variabele • Copieer die naar RC • Wacht 2 ms (gebruik je wacht subroutine) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
uitleg: read-modify-write clrf PORTA bsf PORTA, 0 bsf PORTA, 1 bsf PORTA, 2 bsf PORTA, 3 bsf PORTA, 4 bsf PORTA, 5 bsf PORTA, 6 bsf PORTA, 7 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
subroutine voorbeeld wait addlw 0 skpz return addlw 1 goto wait ... ... movlw D’200’ call wait Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
subroutine • lijkt op een C functie maar veel primitiever • label waar je met een call instructie heen springt • daar een reeks instructies • een return instructie brengt je terug • er is een stack voor de return adressen • die stack is maar 8 niveau’s diep • volgorde van subroutines en main is niet belangrijk • let wel op als je subroutines vooraan staan! Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
wat is een macro • naam voor een aantal regels text, eventueel met parameters • wordt letterlijk ingevoegd bank0 macro bcf STATUS, RP0 bcf STATUS, RP1 endm Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
macro voorbeeld en gebruik bank0 macro clrf STATUS endm bank1 macro bsf STATUS, RP0 bcf STATUS, RP1 endm ; switch to 8 MHz movlw B'01110000' bank1 movwf H'8F' bank0 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Macro – listing (.lst) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Macro Subroutine • marco heeft geen call/return (gebruikt de stack niet) • subroutine aanroep is altijd 1 statement • macro ‘aanroep’ voegt de complete macro in • een macro kan assembly-time argumenten hebben Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
DB026 bordje – tel op 8 LEDs (1) schrijf een macro die een bit copieert: bitcopy_to_from macro dest_byte, dest_bit, source_byte, source_bit ..... endm hoe? [clear destination bit] if [source bit is set] [set destination bit] Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
DB026 bordje – tel op 8 LEDs (2) Schijf ook (telkens) de juiste waarde naar RA. Voeg aan je vorige programma toe: • copieer de ‘hogere’ bits van de teller naar de RA-buffer met behulp van je ‘copieer bit’ macro (en schrijf de RA buffer weg) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren