Home     Contact     Forum     Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Tech-BLOG     RSS     Terms of services     Privacy policy  
 Home     Contact     Forum     Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Tech-News     RSS   

PCB Fabrication

Your very first assembly program

Hopefully, we have come to this part where all people like: The first program. This first program will be nothing fancy. It would be nice to be a 'Hello World' routine similar to those used for programming tutorials, but it is kinda difficult to be a 'first program' for a PIC micro. The easiest program for me is the one that does absolutely nothing. So, here we go:




Opening the file for editing

The first 'nothing to do' program must be placed in a source file. This source file is the one created before with the .asm extension. To open the file for editing, you should just boubble-click it in the project explorer. If you have just make this file (from the menu Project -> Add New File to Project...) then this file should be already opened and ready for editing. You should expect to have something like that:






Hands on keyboard

It's time to put some code inside. Copy and paste the following code in your assembly source file:



 list       F=inhx8m, P=16F88, R=hex, N=0

#include P16F88.INC ; PIC definitions

 __config _config1,_HS_OSC & _WDT_OFF & _LVP_OFF & _PWRTE_OFF & _MCLR_OFF & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_PROTECT_OFF & _CCP1_RB0 & _CP_OFF

 __config _config2,_IESO_OFF & _FCMEN_OFF 

 Errorlevel -302      ; switches off Message [302]: Register in operand not in bank 0.

; Definitions -------------------------------------------------------------

; RAM preserved -----------------------------------------------------------

; Conastants --------------------------------------------------------------

; Program Memory ----------------------------------------------------------

                org     0

                goto    Init

; Interrupt Service Routine -----------------------------------------------

                org     4               ; ISR beginning
              

; -------------------------------------------------------------------------
; Microcontroller initialization
Init            

; Main Program ------------------------------------------------------------

Start           

Fins            
                end             ; end of program


To save the file, just press Ctrl+S. You should note that this shortcut saves the active file and the active file only!!! The other files, even if they are loaded, as well as the project itself are NOT saved with a simple shortcut!

Now, your file should look like that:






A few words about your first program

The first line of code is the 'List' directive. Because at col #1 only labels may be placed, i have pulled this directive one column. The 'L' of the 'List' is placed in column 2 instead of column 1. There is a space before. This should be kept as a rule from you: "In column #1, only labels may start". The List directive defines some characteristics of the program. You should use it as is when dealing with PIC16f88 chips.

the second line, is the #include command for the Microchip's PIC16f88 header file. This command tells the compiler to include this file when compiling the program. It is important never to forget this line. Also, you should know that the directory path that this command refers to, is relative to the directory where the assembly file is located. In our case this is the project's directory. If the header file was located in another directory, then the full directory path should be included.

The third and fourth lines are the configuration fuses of the chip. Those fuses will determine some characteristics of the PIC like the clock type and source, the protection code, the watchdog timer and many more. We will work on those fuses extensively on further pages. Right now, use them as-is.

The fifth line is a directive that will only switch off an annoying warning message.

Following there are some comment lines. Those lines start with a semi column. Whatever follows the semi column is considered to be comment and will take no part at all during compilation. You should stick with those comments when making a program. A well commented program is easy to debug and easy to expand. If you make a 1000 lines of uncommented or poor-commented assembly sheet, then it would be almost impossible to debug and/or upgrade this program after a month or so...

After a few lines, the 'org 0' directive appears. This tells the compiler that this is program line number #0 and from now on the program starts.

Right after is a 'Goto Init' command. This command will place the program pointer to the label named 'Init', a few lines below. The Goto comes from the words Go to, and means exactly this: "Go to line that has the name 'Init'".

Under the line labeled 'Init', there is nothing else to be executed, except the 'End' directive. This directive defines the end of program. That's all. The-End.

This is a first template for you. You can keep it and use it for writing your programs. Following you will find all files tat the first tutorial consists of to download.



 Tutorial #1 files











Previous page ---- Next page



Go back to the book contents

Go to the discussion forum of this book





 

Comments

No comment yet...

Be the first to comment on this page!


 

  Name

  Email (shall not be published)

  Website

Notify me of new posts via email


Write your comments below:

      
 






No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise without the prior written permission of the author.

Read the Disclaimer


All trademarks used are properties of their respective owners.
Copyright © 2007-2009 Lazaridis Giorgos.
All rights reserved.






Search PCB Heaven

 HOT in heaven!



PCB Heaven chirps on Follow me on Twitter

  • Disclaimer
  • Book Contents
  • Discussion forum

  • Basics
  • What will you need
  • Choosing the right PIC
  • The MPLAB
  • Getting familiar with the MPLAB environment
  • Creating a new project
  • Open and close projects
  • Creating new files and including them in the project
  • Your very first assembly program
  • Compile a program and transfer to the PIC
  • Section 1: Beginner's theory
  • Memory Organization
  • The Data Memory Organization
  • The Program Memory Organization
  • The instructions
  • General knowledge about instructions
  • Value Loading Instructions
  • Program Flow Instructions
  • Mathematic Instructions
  • Logic Function Instructions
  • Bit Orientated Instructions
  • Byte Orientated Instructions
  • Miscellaneous Instructions
  • The Basic Special Function Registers
  • The Status Register
  • The Option_Reg Register
  • The TRIS and PORT registers
  • Beginner's PIC Tutorials
  • How to use our PIC Tutorials
  • A Pushbutton turning an LED on and off
  • A Simple LED Flasher
  • Interfacing Multiple Switches - The internal Pull-Up resistors
  • An LED Sequencer
  • Interface a Single 7seg Digit
  • Interface Multiple 7seg Digits
  • A 3-digits Decimal Counter
  • A Clever Button
  • Section 2: Intermediate theory
  • Instruction Cycle Duration and Calculated Delays
  • The Timer Modules - Timer0
  • The Timer Modules - Timer1
  • The Timer Modules-Timer2



  • NEW in heaven!



    New Calculus: Common Base transistor amplifier - Design Calculator




     Home     Contact     Forum     Projects     Experiments     Circuits     Theory     BLOG     PIC Tutorials     Tech-News     RSS   

    Site design: Giorgos Lazaridis
    © Copyright 2008
    Please read the Terms of services and the Privacy policy