Sunday, 29 June 2014

CREATING A SIMPLE PROGRAM TO BLINK A LED USING ASSEMBLY


A microcontroller is a self-contained system with peripherals, memory and a processor that can be used as an embedded system. Most programmable microcontrollers that are used today are embedded in other consumer products or machinery including phones, peripherals, automobiles and household appliances for computer systems. Due to that, another name for a microcontroller is "embedded controller." Some embedded systems are more sophisticated, while others have minimal requirements for memory and programming length and a low software complexity. Input and output devices include solenoids, LCD displays, relays, switches and sensors for data like humidity, temperature or light level, amongst others.


General architecture of a microcontroller 
The architecture of a microcontroller depends on the application it is built for. For example, some designs include usage of more than one RAM, ROM and I/O functionality integrated into the package.

  • BEFORE PROCEEDING TO THE PROGRAM HERE ARE SOME OF THE IMPORTANT THINGS YOU SHOULD KNOW ABOUT PROGRAMMING FOR MCU(MICRO-CONTROLLER UNIT). 
  1. ITS A 8 BIT MICRO-CONTROLLER WITH FOUR REGISTER BANKS. B0,B1,B2,B3. EACH BANK CONSIST OF 7 REGISTERS NAMELY   r0,r1,r2,r3,r4,r5,r6.r7 .EACH REGISTER  CAN STORE A VALUE FROM 0 TO 255 (IN DECIMAL) OR FROM 00h TO FFh. HERE h STANDS FOR HEXADECIMAL .
  2. SO HERE IS A BASIC PROGRAM TO BLINK A LED WITH A DELAY SO THAT THE OUTPUT CAN BE SEEN.
  3. WE USE DELAY BECAUSE THE CODE EXECUTION TIME OF THE MCU IS EXTREMELY FAST. SO BY CALLING THE DELAY FUNCTION WE MAKE A HALT BEFORE THE EXECUTION OF THE NEXT  STEP.
  4. NOW WE GONNA DISCUSS  EVERY ASPECT OF THE DELAY FUNCTION.
  5. Delay:              :-   //WE HAVE CREATED A LABEL/FUNCTION FOR DELAY
mov r0,#200       :-//WE  HAVE ASSIGNED A VALUE OF 200 TO THE REGISTER r0.
                          //FOR DOING IT WE HAVE USED THE KEYWORD ‘MOV’ WHICH STANDS FOR MOVE.    
h1:mov r1,#100  :-//AGAIN WE HAVE  CREATED A JUNCTION SO THAT WE CAN HAVE A LOOP HERE.
                                 //NOW WE HAVE MOVED A VALUE OF100 INTO THE REGISTER r1.
                                //’”h1:”  IS JUST A LABEL 

h2:djnz r1,h2 :-//AGAIN WE  HAVE CREATED A JUNCTION HERE  NAMED h2.
                       //DJNZ STANDS FOR DECREASE AND JUMP IF NOT EQUAL TO ZERO
//IT IS A CONDITIONAL STATEMENT  WHICH, ON BEING TRUE RESULTS IN JUMP OF THE  
    //EXECUTION  TO A DIFFERENT JUNCTION /LABEL.
//WHICH MEANS  IT  WILL DECREASE THE VALUE OF r1 BY 1,i.e  NOW THE VALUE OF
// r1  WILL BE  99. AFTER  DECREASING THE VALUE  IT  WILL  JUMP  TO  h2  LABEL WHICH IN TURN
//RESULT IN FURTHER DECREASE IN THE VALUE OF r1. THIS WILL CONTINUE  UNTILL THE
//VALUE IN r1 BECOMES ZERO. AFTER  DECREASING THE VALUE  IN r1 TO ZERO  PROGRAM 
//EXECUTION  WILL GO THE NEXT COMMAND.
                djnz r0,h1                 :-                                                                                                                     
//HERE AGAIN  IT  WILL START DECREASING THE VALUE PRESENT IN THE REGISTER r0. NOW    
//THE DIFFERENCE IS THAT , AFTER DECREASING THE VALUE THE PROGRAM EXECUTION WILL    
      //JUMP TO h1 LABEL. I.E IT WILL AGAIN  MOVE A VALUE OF 100 INTO THE REGISTER  r1.
//AGAIN IT WILL DECREASE THE REGISTER r1 TO ZERO . NOW THE VALUE  IN r0 WILL BE
//DECREASED AGAIN . AND THE EXECUTION WILL BE SHIFTED TO THE LABEL  h1.  SO
ULTIMATELY THE  THE DECREAMENT WILL  OCCUR FOR  200*100. 
Ret       :-  //IT IS A KEYWORD  USED TO GET OUTPUT FROM A FUNCTION  OR THE PROGRAM
// IT  IS NECESSARY  TO WRITE “ret” AT THE END OF THE PROGRAM CODE.
End    :-  //THIS IS ALSO A KEYWORD USED TO CLOSE THE MEMORY LOCATION  AND THE  PROGRAM .
                //IT IS ALSO NECESSARY TO WRITE "end " AT THE END OF THE PROGRAM CODE
  • AFTER YOU HAVE CREATED THE PROGRAM YOU CAN DEBUG TO SEE IF IT IS WORKING OR NOT.
  • BEFORE DEBUG BUILD THE TARGET AS SHOWN.

  • AFTER YOU HAVE BUILT YOUR TARGET GO TO  DEBUG TAB IN YOUR MENU BAR. CLICK ON IT AND START THE SESSION.
  • AFTER STARTING THE SESSION IT WILL SHOW A MESSAGE DIALOGUE. CLICK ON OK AND PROCEED. NOW CLICK ON THE PERIPHERALS. GO TO I/O-PORTS AND SELECT THE PORT WE HAVE USED OR WHOSE BIT WE HAVE USED.
  • NOW A POP UP WINDOW WILL OPEN  AS SHOWN.PRESS F11 TO CHECK THE OUTPUT OF YOUR PROGRAM.
  • YOU CAN CHECK THE VALUE OF THE REGISTERS IN THE WINDOW NAMED REGISTERS NEXT TO THE FILE WHERE YOU HAD WRITTEN  YOUR PROGRAM.

Saturday, 28 June 2014

CREATING A PROJECT IN KEIL

  • KEIL IS AN INTEGRATED DEVELOPMENT ENVIRONMENT FOR PROGRAMMING IN ASSEMBLY AND EMBEDDED C FOR MICRO-CONTROLLERS
  • THIS ARTICLE IS ABOUT HOW TO CREATE A PROJECT IN KEIL. THE PROCEDURE IS SAME FOR ALL THE VERSIONS AND ILLUSTRATED BELOW.
  • AFTER READING THIS YOU WILL BE ABLE TO CREATE A PROJECT WITHOUT ANY DIFFICULTLY.


        THE STEPS ARE GIVEN BELOW.
  1.  OPEN KEIL FROM DESKTOP ICON OR FROM THE START UP MENU BY SELECTING THE KEIL ICON.
  2. THE SOFTWARE WILL TAKE TIME TO INITIALIZE .ONCE IT OPEN GO TO THE PROJECT TAB FROM THE MENU BAR  AS  SHOWN.
  3. A POP UP WINDOW WILL APPEAR AS SHOWN BELOW WITH THE LIST OF  DEVICE  (MICRO-CONTROLLER )  PROVIDERS/MANUFACTURERS.
  4. FOR ME I HAVE SELECTED NXP(POWERED BY PHILIPS) AS I M USING P89V51RD2. 

  5. A POP-UP WINDOW STATING 'COPY  'START.A51' TO THE PROJECT AND ITS FILES' WILL APPEAR  .CLICK ON NO AND PROCEED WITH THE STEPS.
  6. A WINDOW LIKE THIS WILL APPEAR WITH A TARGET AND A SOURCE  GROUP. THE WINDOW IS CALLED PROGRAM WINDOW AND ALL THE FILES ASSOCIATED IN THE GROUP ARE VISIBLE HERE.
  7. CLICK ON THE NEW FROM THE FILE TAB FROM THE MENU BAR.
  8. A NEW TEXT FILE WILL OPEN WITH THE DEFAULT NAME TEXT1. THIS IS WHERE WE GONNA WRITE OUR PROGRAM. BUT BEFORE THAT WE HAVE TO SAVE IT AND ADD IT TO THE  SOURCE GROUP.
  9. SAVE THE FILE WITH THE EXTENSION (.asm) WHERE .asm STANDS FOR ASSEMBLY. FOR A C FILE SAVE THE FILE WITH THE EXTENSION (.C)
  10. NOW THAT WE HAVE CREATED THE .ASM FILE  , WE HAVE TO ADD THE SAME WITH THE SOURCE GROUP. RIGHT CLICK ON THE SOURCE GROUP .A LIST OF ACTIONS WILL APPEAR. SELECT THE' ADD FILES TO THE GROUP.'
  11. A WINDOW WILL APPEAR ASKING FOR THE FILE TO BE ADDED TO THE SOURCE GROUP.MOSTLY IT WILL OPEN THE FOLDER WHERE YOU HAVE CREATED THE PROJECT. JUST TYPE THE NAME OF THE FILE WITH .asm  EXTENTSION AND CLICK ON ADD.

  12. THIS IS IT. YOU HAVE CREATED THE PROJECT AND CAN BEGAN WITH YOUR PROGRAMMING.

NOTE:- FOR PEOPLE WRITING IN C THE PROCEDURE TO CREATE THE PROJECT IS ALMOST  SIMILAR  OTHER THAN THAT THE FILE IS SAVED WITH THE EXTENSION .C AND A HEADER FILE IS ALSO ADDED TO THE SOURCE GROUP. I WILL POST THE SAME SOON.
IF THERE IS ANY DOUBT PLEASE DO LET ME KNOW.