Microcontroller with single LED Project in Proteus

Summary of Microcontroller with single LED Project in Proteus


This project demonstrates writing assembly code for the PIC16F84A microcontroller to control a single LED using Proteus VSM simulation. The setup involves creating a new Proteus project, designing a schematic with specified components, configuring the microcontroller and power supply, and writing assembly instructions to set PORTB as output and turn on the first LED connected to PORTB line 0. The code handles configuration bits, sets TRIS register for output, and continuously keeps the LED turned on.

Parts used in the Microcontroller with Single LED Project:

  • PIC16F84A microcontroller
  • 330 ohm resistor (9C04021A3300FLHF3)
  • 10K ohm resistor (9C08052A1002JLHFT)
  • CRYSTAL oscillator
  • LED-GREEN
  • +5V power supply (VCC)

This is a simulation project that shows how to write program in assembly language for PIC16F84A microcontroller that turns on a single LED and use it in Proteus VSM to stimulate the working of the microcontroller controlled LED.

To do this start by creating a new project in Proteus, give some name and save it to some folder.

Click Next. We require a schematic so select Create a schematic from the selected template and choose default or any size you want.Microcontroller with single LED Project in Proteus

Click Next. We do not require a PCB so select Do not create a PCB layout and click next again.

We do require a Firmware so select Create a Firmware Project and select PIC16 as Family, PIC16F84A as Controller, MPASM(MPLAB) as the Compiler.

Clicking next will bring up the source code editor window and the schematic window. Go to the Schematic and add the following components-

  • 9C04021A3300FLHF3 (330ohm resistor)
  • 9C08052A1002JLHFT (10K ohm resistor)
  • CRYSTAL
  • LED-GREEN

The PIC16F84A micro-controller is already added so no need to add that part.

Draw the schematic as shown-

Click on the VCC power and change it to +5V

Now switch over to the Source Code by clicking on the Source Code tab. The Source code editor shows a default template. Delete the template code and Copy the following code below into it.

processor 16f84A
include      <p16f84A.inc>
__config  _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

org    0      ; start at address 0
goto    main
;=============================
; space for interrupt handler
;=============================
org        0x04
;=============================
;       main program
;=============================
main:
; Initialize all line in port B for output
movlw    B’00000000′    ; w = 00000000 binary
tris    PORTB        ; Set up port B for output
; Turn on line 0 in port B. All others remain off
movlw    B’00000001′

movwf    PORTB
; Endless loop intentionally hangs up program
wait:
goto    wait

end    Microcontroller with single LED Project in Proteus schematic

Code Explanation

The part “processor 16f84A” tells which microcontroller is being used. The “include  <p16f84A.inc>” part is a directive that tell to use the p16f84A microcontroller include file. The __config directive specifies various configuration aspect of the microcontroller such as the type of the oscillator, whether watch dog timer is on or off, whether the Power-Up timer is on or off and code protection is on/off. Then Org 0 tells the assembler to assemble all subsequent code starting at address 0. The next instruction it reads is the main so the program control goes to main. The instruction movlw    B’00000000′ tells to load working register with 000000000. The instruction tris    PORTB tells to make the Port B direction as output. Then the sequence of instruction movlw    B’00000001′ and movwf PORTB directs to turn on the line 0 of the Port B.

 

 

For more detail: Microcontroller with single LED Project in Proteus


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.