Showing posts with label PIC16F628A Microcontroller. Show all posts
Showing posts with label PIC16F628A Microcontroller. Show all posts

Sunday, February 7, 2010

First program in assembly for pic16f628

My program just turns on a led with pic16f628. This is quite simple for all beginner programers, because you just need to write this :


I have compiled with MPLAB (a free compiler from Microchip) , and programed my pic with icprog.


ORG function - Programs starts at 0x000 in pic's memory


bsf
- bit set f

bsf f,b

bit "b" in register f is set.


movlw -move literal to 'w'
movlw k
bit literal "k" is loaded into the 'W' register.

movwf function -move data from "W" reg to "F" register.

bcf -Bit clear f
bcf f,b
bit 'b' from 'f' register is cleared.


Why did I change my place from Bank0 to Bank1 and viceversa? (I am talking about bsf STATUS,RP0 and bcf STATUS,RP0 line code)

Answer: Because TRISA register is located in Bank1 for this microcontroller and PORTA register is located in Bank0 . So , I wrote to reg TRISA , status '0' for output pins :
bit 0 -for output pins : LEDS, LOADSPEAKERS, etc
bit 1 -for input pins: Buttons ,etc

and 1 (movlw 0xff , movwf PORTA) at PORTA to turn on the leds from A pins .

Take a look at Bank0 and Bank1 locations: