Jelle Aarnoudse pe1eam@amsat.org Beginnen met PIC's Jelle Aarnoudse pe1eam@amsat.org
Inleiding Wat is een microcontroller? Wat kun je ermee? Hoe doe je dat dan? Wat heb je daarvoor nodig? Hoe kom je daaraan? Programmeren Voorbeeldprojecten Tips en valkuilen PE1EAM 13 oktober 2006
Basale opbouw computersysteem I / O PE1EAM 13 oktober 2006
CPU / ALU + - AND OR XOR RLF RRF Swap PE1EAM 13 oktober 2006
Microcontroller PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
Wat is een microcontroller? Wat kun je ermee? Hoe doe je dat dan? Wat heb je daarvoor nodig? Hoe kom je daaraan? Programmeren Voorbeeldprojecten Tips en valkuilen PE1EAM 13 oktober 2006
Data manipulatie add, sub, AND, OR, XOR, rlf, rrf, swap W = File + W, W = Literal + W File = File + W let op SUBWF : W = File – W SUBLW : W = Literal - W inc, dec : File only PE1EAM 13 oktober 2006
Rotate Left C Register Dec Hex 0 0000 0010 2 2 RLF 0 0000 0100 4 4 0 0000 0010 2 2 RLF 0 0000 0100 4 4 0 0000 1000 8 8 0 0001 0000 16 10 0 0010 0000 32 20 PE1EAM 13 oktober 2006
Rotate Left (vervolg) C Register Dec Hex 0 0010 0000 32 20 RLF 0 0010 0000 32 20 RLF 0 0100 0000 64 40 0 1000 0000 128 80 1 0000 0000 0 0 0 0000 0001 1 1 PE1EAM 13 oktober 2006
Bit manipulatie en Skip BCF (bit clear), BSF (bit set) BTFSC (bit test skip if clear), BTFSS (...) flags zitten in het geheugen increment / decrement met skip PE1EAM 13 oktober 2006
BCF / BSF PORTB Hex Dec 0000 1111 0F 15 BCF PORTB,2 0000 1011 0B 11 PE1EAM 13 oktober 2006
BTFSC / BTFSS btfsc PORTA,0 ;Input ! bsf PORTB,0 ;Output! PE1EAM 13 oktober 2006
INCFSZ / DECFSZ movlw 5 movwf TELLER Lab1 doe iets ……….. decfsz TELLER,F goto Lab1 ga verder PE1EAM 13 oktober 2006
Flow control goto call, return, retlw retfie sleep clrwdt (clear watchdog counter) PE1EAM 13 oktober 2006
Memory Map 12C509 PE1EAM 13 oktober 2006
16F877 PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
Wat is een microcontroller? Wat kun je ermee? Hoe doe je dat dan? Wat heb je daarvoor nodig? Hoe kom je daaraan? Programmeren Voorbeeldprojecten Tips en valkuilen PE1EAM 13 oktober 2006
Wat heb je nodig een doel microcontroller target circuit + voeding assembler of compiler PC met internet en printer (datasheets!) Programmer-hardware en -software PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
Programmers: 3 soorten low-cost serious serial-port powered parallel port, extern powered serious serial or USB power from USB, target or external PE1EAM 13 oktober 2006
Kosten: ca. € 5,00 PE1EAM 13 oktober 2006
Kosten: ca. € 15,00 PE1EAM 13 oktober 2006
PE1EAM 13 oktober 2006
Voorbeeldprogrammaatje ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Blink.asm ; Blink a LED on PORTA,0 if PORTB,0=0 ; ; Clock: X-tal of 4 MHz ; Jelle Aarnoudse, PE1EAM, May 2006 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; LIST P=PIC16F84A #include "P16F84A.INC" __CONFIG _HS_OSC & _WDT_OFF ; Define constants #Define _LED PORTB,0 #Define _Switch PORTA,0 #define __RP0 STATUS,RP0 ; Define RAM-variables CBLOCK 20Ch Delay ; Variable used for delay-routine ENDC PE1EAM 13 oktober 2006
org 0 goto Init ; Initialize registers Init bsf _RP0 ;select Bank1 movlw B'11111110' ;PORTA,0 is output (LED) movwf TRISA movlw B'01010110' ;RBpull-up enabled; T0CS intern; movwf OPTION_REG ;prescaler to TMR0/128 bcf __RP0 ;select Bank0 Mainloop btfsc _Switch ;if switch not pressed: goto Mainloop ; loop to Mainloop bsf _LED ;LED on call Delay250ms ;delay bcf _LED ;LED off goto Mainloop ;goto mainloop ; Delay-routine of 250 ms ; Uses: RAM-variable Delay and W ; Total time (incl. call)=2+1+1+81*3+1+2 = 248 ms Delay250ms movlw D'81' ; 1 movwf Delay ; 1 Delay1 decfsz Delay ; 1 goto Delay1 ; 2 return ; 2 END PE1EAM 13 oktober 2006
En nu (bijna) hetzelfde in JAL….. include f84A include jlib pragma target fuses 0x3FFA var bit LED is pin_a0 pin_a0_direction = output forever loop delay_250ms( 5 ) LED = high LED = low end loop PE1EAM 13 oktober 2006
Hoe kom je eraan PIC’s: www.voti.nl Programmer: zelf bouwen Software: gratis te downloaden MPLAB, WinPicProg, JAL PE1EAM 13 oktober 2006
Voorbeeldprojecten fietshellingmeter klapschakelaar nixieklok frequentiecounter voor de AntAn meetzender met DDS en cleanup-oscillator à la PAoKSB IR-afstandsbestuurd robotje met stappenmotoren gedichtengenerator capaciteits- en ESR-meter (Elektuur sept 2005) semiconductoranalyzer (Elektuur april 2005). standalone 433MHz Tx-module PE1EAM 13 oktober 2006
Tips en valkuilen Beperk je tot één assembler of compiler Loop alle instellingen van je assembler/compiler na Doorgrond de CONFIG-instellingen Zet de WDT- brownout- en copy-protect-bits uit Bouw testindicatoren in Bouw je programma modulair op Test stukje voor beetje Simuleer! Documenteer! PE1EAM 13 oktober 2006