Mturk Jobs

Mturk Jobs
Mturk Jobs

Tank

Saturday, January 31, 2009

Input to the PIC 16f84


Now that we learned how to get output form the PIC ( flashing LED ) , we 'll learn to input the

Microcontroller by a push button . This will give you an idea to get order from the user to do an

action ( open door, turn-off lights, ......... ) .


; Button.ASM;******************************************************

list p=16f84


include "p16f84.inc"
org 0x00goto start

org 0x20

start


bcf INTCON,7

movlw 0x00

bsf STATUS,5


movwf TRISA

bcf STATUS,5

movlw 0xFF

bsf STATUS,5

movwf TRISB


bcf STATUS,5

againbtfss PORTB,0

call LED_ON


call LED_OFF


goto again

LED_ON

movlw 0xFF


movwf PORTA

goto again




LED_OFF

movlw 0x00


movwf PORTA

goto again

end
;***********************************************

The program makes the LED is ON when the Button is pressed , LED off when Button is released.

The only new command here is BTFSS which checks if the button is pressed or released.

What it makes is Bit Test F Skip if Set where F is a bit in register. This command is a

bit-oriented command. It means it deals with one bit of the register.

Build the following circuit in Proteus 7 ISIS :







Follow the steps you learned before to add the source code to the circuit and configure it , then

start simulation. Of course in this time you 'll add the Button.ASM source code.

Now , we 'll write the same program in C


//******************************************************



#include"pic.h"

main()

{

unsigned char i;



TRISA = 0 ; // Make PORTB output

TRISB = 0xFF ; // Make PORTB input

PORTA = 0 ; // Initialize PORTB

for(;;) // This is the infinite loop that keeps the PIC running

{


if ( PORTB == 0 )

PORTA = 1;

else

PORTA = 0 ;


}



}




//************************************************************

Note that the logic is inverted because the button by default inputs one to the PIC and when pressed inputs zero.

Again , you can configure the project for the C source code from this lesson.

You can download the project files and source code from here.

Enjoy.





If you like this blog you can support us by many ways:
   
   1. Leave comments stating your point of view about this article.

   2. Buy our book on Amazon Learn By Making.

   3. Click on links of our sponsors without adding any extra cost on you if you make purchase from them. Actually, many of these offers are totally free.
This means that you can enjoy something for free and still support our blog to keep posting useful stuff.


Amazon.com - Read eBooks using the FREE Kindle Reading App on Most Devices


This is the well-know Amazon Kindle platform. If you sign up for the free reader from Amazon to read any book, we get commission. 
There are many useful book for free on Amazon Kindle. Even you can find best sellers offered for free on Kindle format.
The best part is you can have the application on any platform. You can even read any book without installing any application by using Amazon Cloud-Reader on your browser.


Join Amazon Kindle Unlimited 30-Day Free Trial

You can join Amazon Kindle for 30 days free to have access to many paid book for free. You can cancel you subscription anytime.


Try Amazon Prime 30-Day Free Trial


The Amazon Prime is a special paid service from Amazon that offers good promotions and one-day free shipment for Amazon Shoppers. You can try this service for 30 days. You can cancel you subscription anytime.

Shop Amazon - Give the Gift of Amazon Prime


Try Audible and Get Two Free Audiobooks


Audible is the audio books website from Amazon. Many Kindle books are sold on Audible. You can try this service for free and get 2 free book. You can cancel you subscription anytime.


Shop Amazon - Create an Amazon Baby Registry

If you have a new baby borne or expecting one, you can create your free baby registry to easily save products and get offers and promotions on baby requirements.

  4. Visit our new website outatime.tech.

Thank you for visiting our blog.

Thursday, January 22, 2009

Building your first circuit application with PIC16F84A

Enough simulators!!

You may want to try the real circuit to see the microcontroller in action right now. I encourage you to build the circuit and feel it working. This will make you happy and will be a motivation to learn more about microcontrollers and make useful circuits.

So what do you need to get started?

- I guess you have the programming circuit and you have loaded the chip with the HEX file. If not yet, please do it now.

All you need you do is to put the chip in its socket in the programmer and open the program ICProg.

You need to configure the program as follows:

1) Form Settings menu, select Hardware.

- Select JDM Programmer.
- Select the com port you use.
- Select Windows API for Interface menu.




2) Select the microcontroller of your focus (Microchip PIC 16F84A) from the device menu.

3) Select the Flasher.Hex file to be loaded into the Microcontroller .

4) Choose HS for the Oscillator and clear WDT option.







- Build the simplest application circuit for the PIC, the LED flasher.

Here is the schematic.


Simple, isn‘t it?

You don‘t need to make it complex. The push button connected to the pin 4 (~MCLR) is connected to demonstrate how to connect the circuit if you want to reset the microcontroller. If you don‘t need to do this (in this small project) connect the pin 4 to Vcc directly (+ terminal of the battery). This connection makes the microcontroller awake (not reset).

If every thing goes right, you get the LED flashing at a visible rate. Congratulations , you ‘ve just built your first embedded project!




If you like this blog you can support us by many ways:
   
   1. Leave comments stating your point of view about this article.

   2. Buy our book on Amazon Learn By Making.

   3. Click on links of our sponsors without adding any extra cost on you if you make purchase from them. Actually, many of these offers are totally free.
  4. Visit our new website outatime.tech.

Thank you for visiting our blog.

Thursday, January 15, 2009

Let 's speed up the rate !! Compile PIC16F84A Programs

Now that we learned to flash an LED using the PIC 16F84, we 'll increase the rate of information flow.

We 'll write the same program using C language. This will be very easy as it is a popular language and it also a high-level language. Most of us used it for computer programming.

That 's the flasher program:


//************************************************

#include"pic.h"


main()

{
unsigned char i;

TRISB = 0 ; // Make PORTB output

PORTB = 0 ; // Initialize PORTB
for(;;) // This is the infinite loop that keeps the PIC running
{
PORTB = 0x00;

// turn all LEDS off


for(i = 100 ; --i ;);


// Delay


PORTB = 0xFF;
// turn all LEDS on
for(i = 100 ; --i ;);

// Delay


}
}


//************************************************


I guess the program is self explaining.

Now again, we 'll try it in Proteus to see it working.

Here are the steps to add the C source code file and compile it.

1. Copy and paste the previous code into a file named flasher.c .

2. Install the program HiTec PIC C .

3. In ISIS 7 , open the flasher.DSN model you used before.

4. On the Source menu , choose Define Code Generation Tools.

5. Press New.

6. Brows to the folder of HiTec PIC C and to Bin folder , choose picl.exe.

7. To add the source , choose Source --> Add/Remove Source files , press New to add

flasher.c
choose PICC from the drop-down menu under Code Generation Tool , and on the

Flags text box , type --chip=16f84a to choose the microcontroller type.



8. Now press Source --> Build All.

9. Now choose the oscillator speed and the flasher.HEX file as you did in the Assembly

example.



10 . Press F12 to Run the program.



Here you can find the Proteus ISIS model and the source code






If you like this blog you can support us by many ways:
   
   1. Leave comments stating your point of view about this article.

   2. Buy our book on Amazon Learn By Making.

   3. Click on links of our sponsors without adding any extra cost on you if you make purchase from them. Actually, many of these offers are totally free.
  4. Visit our new website outatime.tech.

Thank you for visiting our blog.


Friday, January 2, 2009

Explaining PIC16F84A Flasher Program in Detail

You may have felt that the Flasher program is difficult. But this is not true.

Now, we 'll explain it step-by-step. Just remember, when I started learning Microcontroller programming, I started by understanding this program in detail and put on it my own comments to make me remember what each piece of code did.

list p=16f84
include "p16f84.inc"

; This part is necessary for the compiler to
; know the type of the PIC you are using.

org 0x00
goto start

; The word ORG tells the compiler to put the following code ( goto
; start label ) in the address 0x00 which is the reset vector of the PIC


org 0x20

start

; Again. Puts the label start at the address 0x20

bcf INTCON,7

; Clear the R7 bit in the register INTCON which disables the interrupts

movlw 0x00

; Put 0x00 in the W register

bsf STATUS,5


; Set the Bit 5 in the status register which selects Bank 1 in the RAM

movwf TRISB
; Copy the W register content into TRISB register
; [ makes PORTB output]

bcf STATUS,5
; Clear the Bit 5 in the status register which selects Bank 0 in the RAM

again


; This is a label for the repeating part of the program

movlw 0x80
movwf PORTB

; Copies 0x80 [binary 1000 0000 ] in the W register
; Copy the W register content into PORTB register

call delay

; This command calls the Delay routine.

movlw 0x00
movwf PORTB

; Copies 0x00 [binary 0000 0000 ] in the W register
; Copy the W register content into PORTB register


goto again

; This label is important to keep the program running forever

delay


; This is the label for the delay routine
; The delay consists of 3 nested loops

movlw 0x01
movwf 0x0e

; Put 0x01 in W register
; And copy it to the memory address 0x0e in RAM

loop3


; Label

movlw 0xfa

movwf 0x0d

; Put 0xfa in W register
; And copy it to the memory address 0x0d in RAM

loop2

; Label

movlw 0xfa
movwf 0x0c

; Put 0xfa in W register
; And copy it to the memory address 0x0c in RAM

loop1


; Label

decfsz 0x0c,1
; Decrease contents of memory address 0x0c by 1 ,
; then skip the next command if the result is zero


goto loop1


; goto the outer loop

decfsz 0x0d,1


; Decrease contents of memory address 0x0d by 1 ,
; then skip the next command if the result is zero

goto loop2

; goto the outer loop

decfsz 0x0e,1

; Decrease contents of memory address 0x0e by 1 ,
; then skip the next command if the result is zero

goto loop3

; goto the outer loop

return
; Retrun from the Delay routine

end

; must be put at the end of the program

;*********************************************************************

This is the end of the program. Now that you understand this basic program of LED flasher, you can understand more complex programs and tricks.






If you like this blog you can support us by many ways:
   
   1. Leave comments stating your point of view about this article.

   2. Buy our book on Amazon Learn By Making.

   3. Click on links of our sponsors without adding any extra cost on you if you make purchase from them. Actually, many of these offers are totally free.
  4. Visit our new website outatime.tech.

Thank you for visiting our blog.

Tank