SlideShare a Scribd company logo
MICROCONTROLLER
MCS-51:
ADVANCE
PROGRAMMING
Arkhom JODTANG
Civil Aviation Training Center
Advance Programming
Contents
 Workshop 1 (Mathematic Processing)
 Workshop 2 (Memory Adjusting)
 Workshop 3 (Shift information)
 Workshop 4 (Memory Filter)
 Workshop 5 (Clock Generator)
2
Workshop 1
 Write program to processing the mathematic below:
 128-bits Additional Program
 First number store in 40h (MSB) to 4Fh (LSB)
 Second number store in 50h (MSB) to 5Fh (LSB)
 Write result in Carry flag and 60h (MSB) to 6Fh (LSB)
 Program limited at 30 Bytes
3
Design
4
Result
5
Workshop 2
 Write program to increase the memory area
address 30h to 4Fh by one
 Program limited at 30 Bytes
6
Design
7
Result
8
Workshop 3
 Write program to Left-shift nibble in every byte
the memory area address 30h to 4Fh
 Program limited at 40 Bytes
9
Design
10
Result
11
Workshop 4
 Write program to suppress the byte which is less
than 7FH in every byte the memory area
address 30h to 4Fh
 Program limited at 40 Bytes
12
Design
13
Result
14
Workshop 5
 Write program to generate clock signal with any
frequency and any Percentage of Duty cycle
 Program limited at 20 Bytes
15
Design
16
Result
17
After this page are using for production
only, please ignore them.
END of SLIDE18
Flowchart Symbols
 Terminator
 The start or end of program flow
 Initial / Preparation
 Setting a value at the beginning of the
process or initialize the routine
 Process
 Any kind of processing function, such as a
variable assignment or mathematical
operation.
 Predefined Process
 A named process, such as a subroutine, a
module, Procedure or Function.
Start
19
Flowchart Symbols
Condition  Decision
 Select flow direction from condition
 Connector
 Jumping destination
 Flow line
connect the flowchart symbols and
show the sequence of operations
during the program execution.
True
False
20
Flowchart Sample
Start
A = 30H
Process
End
MainLoop:
DJNZ A, MainLoop
21
Sample of Branch Instruction
(Unconditional Jump)
ORG 0H
MOV R1,#40H
Loop:
MOV @R1,#22H
INC R1
JMP Loop
END
22
Sample of Branch Instruction
(Conditional Jump)
ORG 0H
MOV R1,#40H
Loop:
MOV @R1,#11H
INC R1
CJNE R1, #50H, Loop
END
23
SJMP rel.
 Jump to specified relative address
 -128 to +127 locations (Short Jump)
 No condition.
 Sample
 SJMP NO_Task
 Jump to label name is No_Task
24
AJMP adr11
 Jump to any specific location
 Long distance. (211 = 2kByte long)
 No condition.
 Sample
 AJMP Loop3
 Jump to label name is Loop3
25
LJMP adr16
 Jump to any specific location
 Long distance. (216 = 64kByte long)
 No condition.
 3 Bytes instruction
 4 Machine cycles
 Sample
 LJMP Program5
 Jump to label name is Program5
26
JC rel
 Condition: Jump if carry bit is set
 Jump to specific destination
 Short Jump
 3 Machine cycles
 Sample
 JC Store_It
 If Carry bit = Set, Jump to label “Store_It”
27
JNC rel
 Condition: Jump if carry bit is clear
 Jump to specific destination
 Short Jump
 3 Machine cycles
 Sample
 JNC EasyTask
 If Carry = 0, Jump to EasyTask
28
JNC Sample
 Example 3: Program to make summation of Timer0 and Timer1 registers.
Store the result in R0 (Highest Byte), R1 and R2 (Lowest Byte).
29
 To assign value of
Carry Flag to R0
ORG 00H
MOV R0, #00H
JNC CarryIsZero
MOV R0,#01H
CarryIsZero:
END
Timer0
Timer1
+
TL0TH0
R1 R2R0
Bit
30
 Any bit in memory
 Carry
 Acc.0
 PSW.4
 20h.0
 00h
 7Fh
 P3.3
Addres
s
.7 .6 .5 .4 .3 .2 .1 .0 Name
19h
20h 07 06 05 04 03 02 01 00
21h 0F 0E 0D 0C 0B 0A 09 08
2Fh 7F 7E 7D 7C 7B 7A 79 78
JB bit, rel
 Condition: Jump if addressed bit is set
 Jump to specific destination
 Short Jump
 4 Machine cycles
 Sample
 JB 00h, EasyTask
 If bit address 00h is set, Jump to label EasyTask:
 JB P0.4, PressedS4
 If bit P0.4 = set. Jump to label PressedS4
31
JNB bit, rel
 Condition: Jump if addressed bit is clear
 Jump to specific destination
 Short Jump
 4 Machine cycles
 Sample
 JNB 00h, EasyTask
 If bit address 00h is clear, Jump to label EasyTask:
32
JBC bit, rel
 Condition: Jump if addressed bit is set
 Clear bit
 Jump to specific destination
 Short Jump
 4 Machine cycles
 Sample
 JBC 00h, EasyTask
 If bit address 00h is set, jump to label EasyTask:, Clear bit
00h
 JBC PSW.4, EasyTask
 If bit address PSW.4 is set, jump to label EasyTask:, Clear
bit PSW.4
33
JZ rel
 Condition: Jump if Acc equal to zero
 Jump to specific destination
 Short Jump
 3 Machine cycles
 Sample
 JZ EmptyNow
 If ACC = 0, Jump to label EmptyNow:
34
JNZ rel
 Condition: Jump if Acc not equal zero
 Jump to specific destination
 Short Jump
 3 Machine cycles
 Sample
 JNZ SomeValue
 If ACC > 0, Jump to label Somevalue:
35
CJNE A, Rx, rel
 Condition: Jump if Acc not equal to Rx
 Jump to specific destination
 Short Jump
 4 Machine cycles
 Effect to carry flag
 Sample
 CJNE A, 30h, Loop2
 If ACC ≠ 30h, Jump to label Loop2:
36
CJNE A, #X, rel
 Condition: Jump if Acc not equal to #X
 Jump to specific destination
 Short Jump
 4 Machine cycles
 Sample
 CJNE A, #3Eh, Loop3
 If ACC ≠ #30h, Jump to label Loop3:
37
CJNE Rn, #X, rel
 Condition: Jump if Rn not equal to #X
 Jump to specific destination
 Short Jump
 4 Machine cycles
 Sample
 CJNE R4, #40h, Loop4
 If R4 ≠ #40h, Jump to label Loop4:
38
CJNE @Ri, #X, rel
 Condition: Jump if register addressed by Ri
not equal to #X
 Jump to specific destination
 Short Jump
 4 Machine cycles
 Sample
 CJNE @R0, #E0h, Loop5
 If register which is addressed by R0 ≠ #E0h, Jump to
label Loop5:
39
CJNE (Homework)
 Write program to fill the memory area address 30h to 6Fh
with Decimal (BCD) counting number start from 1H
 The code must less than 15 line of assembly code
40
CJNE (Sample)
 Write program to fill the memory area
address 30h to 4Fh with counting number
start from 1H
41
CJNE (Sample)
 Write program to
fill the memory
area address 30h
to 4Fh with
counting number
start from 1H
42
DJNZ Rn, rel
 Process: Decrease Rn by one, then
 Condition: Jump if Rn not equal to zero
 Jump to specific destination
 Short Jump
 3 Machine cycles
 Sample
 DJNZ R5, Loop6
 Decrease R5 then check, If R5 ≠ 0, Jump to label
Loop6:
43
DJNZ Rx, rel
 Process: Decrease Rx by one, then
 Condition: Jump if Rx not equal to zero
 Jump to specific destination
 Short Jump
 4 Machine cycles
 Sample
 DJNZ R5, Loop6
 Decrease R5 then check, If R5 ≠ 0, Jump to label
Loop6:
44
DJNZ (Sample)
 ; DJNZ is very convenion for
 ; specified number of turn for
some process.
 ORG 0H
 MOV R5,#10D
 Loop:
 ; Process here
 DJNZ R5, Loop
 END
45
Start
R5 =10D
Process
End
Loop:
DJNZ R5, Loop

More Related Content

PPTX
Microprocessor Week 7: Branch Instruction
PPT
Chapt 06
PPTX
Theory of Computation Unit 4
PDF
Assembly Language Programming By Ytha Yu, Charles Marut Chap 6 (Flow Control ...
PDF
Unit 4 assembly language programming
PDF
Instructions
PPTX
Forloop
Microprocessor Week 7: Branch Instruction
Chapt 06
Theory of Computation Unit 4
Assembly Language Programming By Ytha Yu, Charles Marut Chap 6 (Flow Control ...
Unit 4 assembly language programming
Instructions
Forloop

What's hot (20)

PPT
Compiler Design Unit 5
PPTX
ARM inst set part 2
PPTX
What is to loop in c++
PDF
Applications of stack
PPTX
Loop instruction, controlling the flow of progam
PDF
Welcome to International Journal of Engineering Research and Development (IJERD)
PPTX
Loops c++
PPT
Lec 3 ---- dfa
PPTX
Assembly language programs
PPTX
Assembly language programs 2
PPTX
Compiler Design Unit 3
PPTX
PPTX
[ASM]Lab5
PPT
Blackfin Loop Asm
PPT
Control Statements, Array, Pointer, Structures
DOCX
PPTX
Finite state Transducers and mealy Machine
PDF
17435 electronics instrumentation
PPT
Verilog Lecture2 thhts
Compiler Design Unit 5
ARM inst set part 2
What is to loop in c++
Applications of stack
Loop instruction, controlling the flow of progam
Welcome to International Journal of Engineering Research and Development (IJERD)
Loops c++
Lec 3 ---- dfa
Assembly language programs
Assembly language programs 2
Compiler Design Unit 3
[ASM]Lab5
Blackfin Loop Asm
Control Statements, Array, Pointer, Structures
Finite state Transducers and mealy Machine
17435 electronics instrumentation
Verilog Lecture2 thhts
Ad

Similar to Microprocessor Week 8: Advance programming (20)

PPT
Chapt 06
PPT
1344 Alp Of 8086
PPTX
B sc e 5.2 mp unit 2 soft ware(alp)
PDF
OptimizingARM
PDF
Virtual Machine for Regular Expressions
PDF
Instruction types
PPT
chapt5 and 06assemblylanguagecodesandmachinelanguage.ppt
PPTX
Computer Architecture Assignment Help
PPT
3_JumpAndCall_v21_presenatationb also.ppt
PDF
Https _doc-0o-c4-apps-viewer.googleusercontent
PPTX
unit2-8085-programminG.pptx
PPT
UNIT 2 ERTS.ppt
PPT
Addressing mode and instruction set using 8051
DOC
Microprocessor lab
PPT
Microcontroller 8051- soft.ppt
PPTX
instructions of 8085 Microprocessor
PPTX
module-3.pptx
PPT
instruction-set-of-8086-mr-binu-joy3.ppt
PPT
Arm teaching material
PPT
Arm teaching material
Chapt 06
1344 Alp Of 8086
B sc e 5.2 mp unit 2 soft ware(alp)
OptimizingARM
Virtual Machine for Regular Expressions
Instruction types
chapt5 and 06assemblylanguagecodesandmachinelanguage.ppt
Computer Architecture Assignment Help
3_JumpAndCall_v21_presenatationb also.ppt
Https _doc-0o-c4-apps-viewer.googleusercontent
unit2-8085-programminG.pptx
UNIT 2 ERTS.ppt
Addressing mode and instruction set using 8051
Microprocessor lab
Microcontroller 8051- soft.ppt
instructions of 8085 Microprocessor
module-3.pptx
instruction-set-of-8086-mr-binu-joy3.ppt
Arm teaching material
Arm teaching material
Ad

More from Arkhom Jodtang (15)

PPTX
MCS51 Training board Model CATC2016A
PPTX
Microprocessor Week 10: Applications
PPTX
Microprocessor Week 9: Timer and Counter
PPTX
Microprocessor Week 8: Subroutine
PPTX
Microprocessor Week2: Data Transfer
PPTX
Microprocessor Week 2: CH2 Circuit and Operation
PPTX
Microprocessor Week1: Introduction
PPTX
Microprocessor laboratory 03 Arithmetic Operation (Additional and Subtraction)
PPTX
Microprocessor Week 4-5 MCS-51 Arithmetic operation
PPTX
Use of Computer & IT, Laboratory MS Word
PPTX
Microprocessor Laboratory 2: Logical instructions
PPTX
Microprocessor: Delay technique
PPTX
Distance Measuring Car
PPTX
Tamech 2013 Presentation
PPTX
Electronics & Avionics project
MCS51 Training board Model CATC2016A
Microprocessor Week 10: Applications
Microprocessor Week 9: Timer and Counter
Microprocessor Week 8: Subroutine
Microprocessor Week2: Data Transfer
Microprocessor Week 2: CH2 Circuit and Operation
Microprocessor Week1: Introduction
Microprocessor laboratory 03 Arithmetic Operation (Additional and Subtraction)
Microprocessor Week 4-5 MCS-51 Arithmetic operation
Use of Computer & IT, Laboratory MS Word
Microprocessor Laboratory 2: Logical instructions
Microprocessor: Delay technique
Distance Measuring Car
Tamech 2013 Presentation
Electronics & Avionics project

Recently uploaded (20)

PDF
R24 SURVEYING LAB MANUAL for civil enggi
PPTX
Fundamentals of safety and accident prevention -final (1).pptx
PPTX
CURRICULAM DESIGN engineering FOR CSE 2025.pptx
PPTX
introduction to high performance computing
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
Soil Improvement Techniques Note - Rabbi
PDF
Artificial Superintelligence (ASI) Alliance Vision Paper.pdf
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PPT
A5_DistSysCh1.ppt_INTRODUCTION TO DISTRIBUTED SYSTEMS
PDF
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
PDF
Analyzing Impact of Pakistan Economic Corridor on Import and Export in Pakist...
PDF
III.4.1.2_The_Space_Environment.p pdffdf
PPT
Introduction, IoT Design Methodology, Case Study on IoT System for Weather Mo...
PDF
737-MAX_SRG.pdf student reference guides
PDF
PPT on Performance Review to get promotions
PDF
EXPLORING LEARNING ENGAGEMENT FACTORS INFLUENCING BEHAVIORAL, COGNITIVE, AND ...
PDF
86236642-Electric-Loco-Shed.pdf jfkduklg
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PPTX
communication and presentation skills 01
PDF
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...
R24 SURVEYING LAB MANUAL for civil enggi
Fundamentals of safety and accident prevention -final (1).pptx
CURRICULAM DESIGN engineering FOR CSE 2025.pptx
introduction to high performance computing
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Soil Improvement Techniques Note - Rabbi
Artificial Superintelligence (ASI) Alliance Vision Paper.pdf
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
A5_DistSysCh1.ppt_INTRODUCTION TO DISTRIBUTED SYSTEMS
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
Analyzing Impact of Pakistan Economic Corridor on Import and Export in Pakist...
III.4.1.2_The_Space_Environment.p pdffdf
Introduction, IoT Design Methodology, Case Study on IoT System for Weather Mo...
737-MAX_SRG.pdf student reference guides
PPT on Performance Review to get promotions
EXPLORING LEARNING ENGAGEMENT FACTORS INFLUENCING BEHAVIORAL, COGNITIVE, AND ...
86236642-Electric-Loco-Shed.pdf jfkduklg
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
communication and presentation skills 01
BIO-INSPIRED ARCHITECTURE FOR PARSIMONIOUS CONVERSATIONAL INTELLIGENCE : THE ...

Microprocessor Week 8: Advance programming

  • 2. Advance Programming Contents  Workshop 1 (Mathematic Processing)  Workshop 2 (Memory Adjusting)  Workshop 3 (Shift information)  Workshop 4 (Memory Filter)  Workshop 5 (Clock Generator) 2
  • 3. Workshop 1  Write program to processing the mathematic below:  128-bits Additional Program  First number store in 40h (MSB) to 4Fh (LSB)  Second number store in 50h (MSB) to 5Fh (LSB)  Write result in Carry flag and 60h (MSB) to 6Fh (LSB)  Program limited at 30 Bytes 3
  • 6. Workshop 2  Write program to increase the memory area address 30h to 4Fh by one  Program limited at 30 Bytes 6
  • 9. Workshop 3  Write program to Left-shift nibble in every byte the memory area address 30h to 4Fh  Program limited at 40 Bytes 9
  • 12. Workshop 4  Write program to suppress the byte which is less than 7FH in every byte the memory area address 30h to 4Fh  Program limited at 40 Bytes 12
  • 15. Workshop 5  Write program to generate clock signal with any frequency and any Percentage of Duty cycle  Program limited at 20 Bytes 15
  • 18. After this page are using for production only, please ignore them. END of SLIDE18
  • 19. Flowchart Symbols  Terminator  The start or end of program flow  Initial / Preparation  Setting a value at the beginning of the process or initialize the routine  Process  Any kind of processing function, such as a variable assignment or mathematical operation.  Predefined Process  A named process, such as a subroutine, a module, Procedure or Function. Start 19
  • 20. Flowchart Symbols Condition  Decision  Select flow direction from condition  Connector  Jumping destination  Flow line connect the flowchart symbols and show the sequence of operations during the program execution. True False 20
  • 21. Flowchart Sample Start A = 30H Process End MainLoop: DJNZ A, MainLoop 21
  • 22. Sample of Branch Instruction (Unconditional Jump) ORG 0H MOV R1,#40H Loop: MOV @R1,#22H INC R1 JMP Loop END 22
  • 23. Sample of Branch Instruction (Conditional Jump) ORG 0H MOV R1,#40H Loop: MOV @R1,#11H INC R1 CJNE R1, #50H, Loop END 23
  • 24. SJMP rel.  Jump to specified relative address  -128 to +127 locations (Short Jump)  No condition.  Sample  SJMP NO_Task  Jump to label name is No_Task 24
  • 25. AJMP adr11  Jump to any specific location  Long distance. (211 = 2kByte long)  No condition.  Sample  AJMP Loop3  Jump to label name is Loop3 25
  • 26. LJMP adr16  Jump to any specific location  Long distance. (216 = 64kByte long)  No condition.  3 Bytes instruction  4 Machine cycles  Sample  LJMP Program5  Jump to label name is Program5 26
  • 27. JC rel  Condition: Jump if carry bit is set  Jump to specific destination  Short Jump  3 Machine cycles  Sample  JC Store_It  If Carry bit = Set, Jump to label “Store_It” 27
  • 28. JNC rel  Condition: Jump if carry bit is clear  Jump to specific destination  Short Jump  3 Machine cycles  Sample  JNC EasyTask  If Carry = 0, Jump to EasyTask 28
  • 29. JNC Sample  Example 3: Program to make summation of Timer0 and Timer1 registers. Store the result in R0 (Highest Byte), R1 and R2 (Lowest Byte). 29  To assign value of Carry Flag to R0 ORG 00H MOV R0, #00H JNC CarryIsZero MOV R0,#01H CarryIsZero: END Timer0 Timer1 + TL0TH0 R1 R2R0
  • 30. Bit 30  Any bit in memory  Carry  Acc.0  PSW.4  20h.0  00h  7Fh  P3.3 Addres s .7 .6 .5 .4 .3 .2 .1 .0 Name 19h 20h 07 06 05 04 03 02 01 00 21h 0F 0E 0D 0C 0B 0A 09 08 2Fh 7F 7E 7D 7C 7B 7A 79 78
  • 31. JB bit, rel  Condition: Jump if addressed bit is set  Jump to specific destination  Short Jump  4 Machine cycles  Sample  JB 00h, EasyTask  If bit address 00h is set, Jump to label EasyTask:  JB P0.4, PressedS4  If bit P0.4 = set. Jump to label PressedS4 31
  • 32. JNB bit, rel  Condition: Jump if addressed bit is clear  Jump to specific destination  Short Jump  4 Machine cycles  Sample  JNB 00h, EasyTask  If bit address 00h is clear, Jump to label EasyTask: 32
  • 33. JBC bit, rel  Condition: Jump if addressed bit is set  Clear bit  Jump to specific destination  Short Jump  4 Machine cycles  Sample  JBC 00h, EasyTask  If bit address 00h is set, jump to label EasyTask:, Clear bit 00h  JBC PSW.4, EasyTask  If bit address PSW.4 is set, jump to label EasyTask:, Clear bit PSW.4 33
  • 34. JZ rel  Condition: Jump if Acc equal to zero  Jump to specific destination  Short Jump  3 Machine cycles  Sample  JZ EmptyNow  If ACC = 0, Jump to label EmptyNow: 34
  • 35. JNZ rel  Condition: Jump if Acc not equal zero  Jump to specific destination  Short Jump  3 Machine cycles  Sample  JNZ SomeValue  If ACC > 0, Jump to label Somevalue: 35
  • 36. CJNE A, Rx, rel  Condition: Jump if Acc not equal to Rx  Jump to specific destination  Short Jump  4 Machine cycles  Effect to carry flag  Sample  CJNE A, 30h, Loop2  If ACC ≠ 30h, Jump to label Loop2: 36
  • 37. CJNE A, #X, rel  Condition: Jump if Acc not equal to #X  Jump to specific destination  Short Jump  4 Machine cycles  Sample  CJNE A, #3Eh, Loop3  If ACC ≠ #30h, Jump to label Loop3: 37
  • 38. CJNE Rn, #X, rel  Condition: Jump if Rn not equal to #X  Jump to specific destination  Short Jump  4 Machine cycles  Sample  CJNE R4, #40h, Loop4  If R4 ≠ #40h, Jump to label Loop4: 38
  • 39. CJNE @Ri, #X, rel  Condition: Jump if register addressed by Ri not equal to #X  Jump to specific destination  Short Jump  4 Machine cycles  Sample  CJNE @R0, #E0h, Loop5  If register which is addressed by R0 ≠ #E0h, Jump to label Loop5: 39
  • 40. CJNE (Homework)  Write program to fill the memory area address 30h to 6Fh with Decimal (BCD) counting number start from 1H  The code must less than 15 line of assembly code 40
  • 41. CJNE (Sample)  Write program to fill the memory area address 30h to 4Fh with counting number start from 1H 41
  • 42. CJNE (Sample)  Write program to fill the memory area address 30h to 4Fh with counting number start from 1H 42
  • 43. DJNZ Rn, rel  Process: Decrease Rn by one, then  Condition: Jump if Rn not equal to zero  Jump to specific destination  Short Jump  3 Machine cycles  Sample  DJNZ R5, Loop6  Decrease R5 then check, If R5 ≠ 0, Jump to label Loop6: 43
  • 44. DJNZ Rx, rel  Process: Decrease Rx by one, then  Condition: Jump if Rx not equal to zero  Jump to specific destination  Short Jump  4 Machine cycles  Sample  DJNZ R5, Loop6  Decrease R5 then check, If R5 ≠ 0, Jump to label Loop6: 44
  • 45. DJNZ (Sample)  ; DJNZ is very convenion for  ; specified number of turn for some process.  ORG 0H  MOV R5,#10D  Loop:  ; Process here  DJNZ R5, Loop  END 45 Start R5 =10D Process End Loop: DJNZ R5, Loop