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).
- 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 .
- SO HERE IS A BASIC PROGRAM TO BLINK A LED WITH A DELAY SO THAT THE OUTPUT CAN BE SEEN.
- 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.
- NOW WE GONNA DISCUSS EVERY ASPECT OF THE DELAY FUNCTION.
- 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.






No comments:
Post a Comment