330 likes | 469 Views
Les 4 - onderwerpen. DB036 schema: Luidsprekertje read-modify-write / shadow registers macro’s DB036 schema: LEDs en 7-segment displays opdrachten: Beep Tellen op een enkel 7-segment display Multiplexen (tellen op meerdere displays) verzin je eigen opdracht. DB036 circuit – luidspreker.
E N D
Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
Les 4 - onderwerpen • DB036 schema: Luidsprekertje • read-modify-write / shadow registers • macro’s • DB036 schema: LEDs en 7-segment displays • opdrachten: • Beep • Tellen op een enkel 7-segment display • Multiplexen (tellen op meerdere displays) • verzin je eigen opdracht Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB036 circuit – luidspreker Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB036 circuit – luidspreker Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
PIC16F917 memory map Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
read-modify-write : IO pin Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
read-modify-write (fout) 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 Utrecht / Institute for Computer, Communication and Media Technology
read-modify-write (goed) clrf PORTA_SHADOW call PORTA_FLUSH bsf PORTA_SHADOW, 0 call PORTA_FLUSH bsf PORTA_SHADOW, 1 call PORTA_FLUSH bsf PORTA_SHADOW, 2 call PORTA_FLUSH ... PORTA_FLUSH movfw PORTA_SHADOW movwf PORTA return Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
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 Utrecht / Institute for Computer, Communication and Media Technology
macro voorbeeld en gebruik FLUSH_ MACRO MACRO Shadow, Port CBLOCK Shadow ENDC MOVFW Shadow MOVWF Port RETURN ENDM PORTA_FLUSH FLUSH_MACRO PORTA_SHADOW, PORTA PORTB_FLUSH FLUSH_MACRO PORTB_SHADOW, PORTB PORTC_FLUSH FLUSH_MACRO PORTC_SHADOW, PORTC PORTD_FLUSH FLUSH_MACRO PORTD_SHADOW, PORTD PORTE_FLUSH FLUSH_MACRO PORTE_SHADOW, PORTE Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
Macro – listing (.lst) Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
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 Utrecht / Institute for Computer, Communication and Media Technology
DB036 circuit – 74HC259 adresseable latch S0 .. S2 G CLR D Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB036 circuit – 74HC259 adresseable latch CLR G Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB036 circuit – 74HC259 adresseable latch Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
DB036 circuit – displays and LEDs Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
LatchWrite (1) ;================================================================ ; ; segments.asm ; ;================================================================ ; initialisation etc for DB036 #include <DB036-01.INC> GOTO MAIN Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
LatchWrite (2) ;================================================================ ; ; Shadow Registers and Flush subroutines ; ;================================================================ FLUSH_MACRO MACRO Shadow, Port CBLOCK Shadow ENDC MOVFW Shadow MOVWF Port RETURN ENDM PORTA_FLUSH FLUSH_MACRO PORTA_SHADOW, PORTA PORTB_FLUSH FLUSH_MACRO PORTB_SHADOW, PORTB PORTC_FLUSH FLUSH_MACRO PORTC_SHADOW, PORTC PORTD_FLUSH FLUSH_MACRO PORTD_SHADOW, PORTD PORTE_FLUSH FLUSH_MACRO PORTE_SHADOW, PORTE Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
LatchWrite (3) ;================================================================ ; ; LatchWrite ; ; set outputs of the 74HC259 adresseable latch ; according to the value in W ; ;================================================================ CBLOCK LatchWritePattern ENDC LatchWrite ; save outputs to be activated MOVWF LatchWritePattern ; make gate line high (= inactive) BSF PORTB_SHADOW, 5 CALL PORTB_FLUSH ; make address and data 0 movlw 0xF0 andwf PORTD_SHADOW, f Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
LatchWrite (4) LatchWriteNext ; assume data line low, set to high only when ; the (next) bit of LatchWritePattern is 1 RRF LatchWritePattern, f SKPNC BSF PORTD_SHADOW, 3 ; output address and data CALL PORTD_FLUSH CALL LatchWriteReturn ; toggle gate line BCF PORTB_SHADOW, 5 CALL PORTB_FLUSH CALL LatchWriteReturn BSF PORTB_SHADOW, 5 CALL PORTB_FLUSH CALL LatchWriteReturn Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
LatchWrite (5) ; clear bit 3 and increment address BCF PORTD_SHADOW, 3 INCF PORTD_SHADOW, F ; if carry into bit 3 we are done BTFSS PORTD_SHADOW, 3 GOTO LatchWriteNext LatchWriteReturn RETURN Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
LatchWrite (6) MAIN MOVLW 0x02 CALL LatchWrite MOVLW 0xAA MOVWF PORTD SLEEP ;================================================================ ; end of assembler source ;================================================================ END Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
segment letters A B F G E C DF DP http://en.wikipedia.org/wiki/Seven-segment_display Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
segment letters let op: active low ! Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
multiplexen Laat Digit 1 zien (wacht) Laat Digit 2 zien (wacht) Laat Digit 3 zien (wacht) Laat Digit 4 zien (wacht) Doe eventueel ander werk Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
multiplexen Laat het volgende Digit zien Doe eentueel ander werk eventueel (extra) vertraging Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
opdrachten les 4 - 1: beep Maak een programma dat 1 keer een piep laat horen (bv 1/4 seconde op 1 kHz) Piepen is niets anders dan knipperen, maar dan met een luidspreker in plaats van een LED, en wat sneller. 1 kHz = 1ms per puls = 500 us hoog / 500 us laag 500 us = 1000 instructies bij 8 MHz 1/4 seconde = 250 pulsen Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
opdrachten les 4 - 2 : tellen tel op de 1 cijfer van het 7-segment display van 0 tot F (en dan weer opnieuw, bv 1 tikken per seconde) Gebruik een sprongtabel om te vertalen van een getal (0..F) naar het bitpatroon van de segmenten. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
opdrachten les 4 - 3 : tellen + Kitt tel op de 3 cijfer van de 7-segment displays van 0 tot 999 (en dan weer opnieuw, bv 5 tikken per seconde), en laat tegelijk het Kitt patroon zien op de LEDs. Gebruik voor het tellen voor ieder digit een aparte RAM locatie. Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
opdrachten les 4 - 4 : verzin je vrije opdracht (voorzover je dat nog niet hebt gedaan) De laatste twee/drie lessen (en thuis!) ga je werken aan een vrije opdracht. Verzin zelf een project(je). Stem af. Schijf zelf de opdracht. citeria: • niet te makkelijk • niet te moeilijk • hardware gebruiken is een plus, externe hardware plus plus Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
Mogelijke onderwerpen voor les 5/6 • Schakelaartjes uitlezen (dender) • Muziek • A/D converter uitlezen (potmeter, M335, LDR) • UART (serieel naar PC via de 2e USB connector) • Werking IR afstandsbedieningen • Interfacen van een PC keyboard en/of muis Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
een paar suggesties: • Muziekjes (Fur Elise, Jingle Bells, etc) • rekenmachine • beat detector + patroon • licht => geluid • (random?) RC5 IR zender; RC5 ontvanger • voorwerp-detector (IR zender + ontvanger) • Reactiesnelheid tester • spelletjes • ‘Kitt’ display met 10 verschillende patronen (selecteer mbv de knoppen, sla op in de EEPROM) • iets externs, bv een motor aansturen, PC keyboard, TV, iets loggen naar een PC en daar iets mee doen Hogeschool Utrecht / Institute for Computer, Communication and Media Technology
TL431 Voltage Reference chip Hogeschool Utrecht / Institute for Computer, Communication and Media Technology