180 likes | 341 Views
Les 6 - onderwerpen. Uitleg schema END directive herhaling PC / PCLATH Indirect adresseren Read analog inputs EEPROM Zend en ontvang een IR signaal Muziek Geef door wat je ‘eigen’opdracht is!. END directive.
E N D
Les 6 - onderwerpen • Uitleg schema • END directive • herhaling PC / PCLATH • Indirect adresseren • Read analog inputs • EEPROM • Zend en ontvang een IR signaal • Muziek • Geef door wat je ‘eigen’opdracht is! Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
END directive • Puur voor de assembler om het einde van de source aan te geven (stamt uit de tijd van papertape en punch-cards) • Twee manieren om de processor te laten ‘stoppen’: sleep ; speciale instructie klaar ; eeuwige lus goto klaar Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
PC (1) • De laagste 8 bits van de PC kan je lezen en schrijven via PCL • 4k PC is 12 bits • Hoogste 6 bits komen uit PCLATH • Waarvoor gebruik je dit? Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
PC (2) ; data table Get_Data: addwf PCL, f retlw 0x11 retlw 0x21 retlw 0x44 … Let op: • PCLATH bits • Onverwachte waarden in W Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
PC (3) GOTO label GOSUB label De instructie bevat slechts 11 bits, het hoogste 2 bit komen wederom uit PCLATH. PCLATH start op 0x00, dus hier heb je pas mee te maken als je meer dan 2k code schrijft. Datasheet p21 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Indirect adresseren X = *A: movfw A movwf FSR movfw INDF movwf X FSR is een soort pointer, INDF is dan het ‘venster’ naar het aangewezen file register FSR is 8 bits, dus het hoogste bit is page bit 0. Page bit 1 komt uit SATUS:IRP. Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Read an analog input (1) • Zet de juiste code op RA0 .. RA2 en RC0 .. RC2 voor de potentiometer of de LDR • Zet de RC3 pin op input • Zet ANSEL op 0x80 (AN7 == RC3 is de analoge input) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Read an analog input (2) • Zet ADCON1 0x50 • Zet ADCON0 op 0x1D • Wacht >= 100 us Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Read an analog input (3) • Zet het A/D start/busy bit aan • Wacht tot het A/D start/busy bit uit staat • Lees de waarde uit ADRESH Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
EEPROM - read • 256 bytes data EEPROM • Read: EEADR = <address>; EECON1 = 0; EECON1 = EECON1 | 1; /* bsf EECON1,0 */ While( eecon1 & 1 ); <data> = EEDAT; Datasheet p73 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
EEPROM - write EEADR = <address>; EECON1 = 4; EECON2 = 0x55; EECON2 = 0xAA; EECON1 = EECON1 | 2; /* bsf EECON1,1 */ While( eecon1 & 2 ); EECON1 = 0; <data> = EEDAT; Datasheet p73 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
De IR ontvanger (1) • (alleen) gevoelig voor een 36 kHz signaal. • Dat signaal mag niet continu zijn Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
De IR ontvanger (2) (alleen) gevoelig voor een 36 kHz signaal. Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
De IR ontvanger (3) Aanbevolen: puls >= 400uS, periode =< 0.4 Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
De IR ontvanger (4) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Eenvoudig IR zenden en ontvangen • 36 kHz 28 us per puls 28 instructies per fase (hoog of laag) • 400 us / 28 us minimaal 14 pulsen, neem bv 30 pulsen • Onmiddelijk daarna de IR ingang lezen (laag == signaal gedetecteerd) • Pauze! • herhaal Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren
Muziek • Octaaf = verdubbeling van de frequentie • ‘centrale A’ = 440 Hz • Octaaf is verdeeld in 12 gelijke stappen • Dus stap^12 = 2 stap = 12√ 2 • Klopt niet helemaal (‘gelijkzwevend’) • Niet uitrekenen, gewoon een tabel gebruiken (zelf samenstellen of googelen) Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren