Tutorial Microcontroller MCS-51 ATMEL ISP

Pelatihan Mikrokontroller

Microcontroller Kits
Programmer and Target 89s51

Simple Mikrokontroller 89s51 Trainer


Standart
Mikrokontroller 89s51 Trainer


Super Mikrokontroller Trainer 89s51

 

 

 

Chapter 2

DISPLEY 7 SEGMENT

2.1. Display One Character

This experiment is how to demonstrate, display 1 character to 7 segment common anoda.

.include "m8535def.inc"
.org 0x0000
           rjmp main
           ;
main:
           ldi r16,low(RAMEND)
           out SPL,r16
           ldi r16,high(RAMEND)
           out SPH,r16
           ;
           ldi r16,0b11111111
           out ddrd,r16
           ldi r16,0b00011111 ; send '000' to ABC 74ls138
           out ddrd,r16       ; to drive Q8 saturate   
           ;
_7Seg:
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b11000000 ; displ char '0'
           out Portc,r16
           rjmp _7Seg
         

2.1. Display One Character ( using SBI and CBI )

Another experiment, how to turn ON display, using SBi and CBI

.include "m8535def.inc"
.org 0x0000
rjmp main
           ;
main:
           ldi r16,low(RAMEND)
           out SPL,r16
           ldi r16,high(RAMEND)
           out SPH,r16
           ;
           sbi ddrd,5 ;Direction Port D bit 5 as Ouput
           sbi portd,5; PD.5=1
           sbi ddrd,6 ;Direction Port D bit 6 as Ouput
           cbi portd,6; PD.6=0
           sbi ddrd,7 ;Direction Port D bit 7 as Ouput
           cbi portd,7; PD.7=0
           ;
_7Seg:
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b11000000 
           out Portc,r16
           rjmp _7Seg
         

2.2. Display Two Character on 7 Segmen

In this experiment, charakter will display on two first digit on 8 x 7 segmen

.include "m8535def.inc"
.org 0x0000
           rjmp main
           ;
main:
           ldi r16,low(RAMEND)
           out SPL,r16
           ldi r16,high(RAMEND)
           out SPH,r16
           ;
_7Seg:
           sbi ddrd,5
           cbi portd,5
           sbi ddrd,6
           cbi portd,6
           sbi ddrd,7
           cbi portd,7
           ;
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b11000000 
           out Portc,r16
           ;
           rcall delay
           ;
           sbi ddrd,5
           cbi portd,5
           sbi ddrd,6
           cbi portd,6
           sbi ddrd,7
           sbi portd,7
           ;
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b11000000 
           out Portc,r16
           ;
           rcall delay
           rjmp _7Seg
           ;
delay:
; provides some delay so that the LED is visible
; ============================= 
; delay loop 
; 499998 cycles: about 1/2 seconds
; ----------------------------- 
; delaying 499995 cycles:
           ldi R29, $0f
WGLOOP0:   ldi R30, $0f
WGLOOP1:   ldi R31, $10
WGLOOP2:   dec R31
           brne WGLOOP2
           dec R30
           brne WGLOOP1
           dec R29
           brne WGLOOP0
           ret
         

2.3. Display Four Character on 7 Segmen

In this experiment, charakter will display on four first digit on 8 x 7 segmen

.include "m8535def.inc"
.org 0x0000
           rjmp main
           ;
main:
           ldi r16,low(RAMEND)
           out SPL,r16
           ldi r16,high(RAMEND)
           out SPH,r16
           ;
_7Seg:
           ;Display 0 on 8th 7 segment
           sbi ddrd,5
           sbi ddrd,6
           sbi ddrd,7
           cbi portd,5
           cbi portd,6
           cbi portd,7
           ;
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b11000000 
           out Portc,r16
           ;
           rcall delay
           ;
           ;Display 1 on 7th 7 segment
           sbi ddrd,5
           sbi ddrd,6
           sbi ddrd,7
           sbi portd,5
           cbi portd,6
           cbi portd,7
           ;
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b11111001
           out Portc,r16
           ;
           rcall delay
           ;
           ;Display 2 on 6th 7 segment
           sbi ddrd,5
           sbi ddrd,6
           sbi ddrd,7
           cbi portd,5
           sbi portd,6
           cbi portd,7
           ;
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b10100100 
           out Portc,r16
           ;
           rcall delay
           ;
           ;Display 3 on 5th 7 segment
           sbi ddrd,5
           sbi ddrd,6
           sbi ddrd,7
           sbi portd,5
           sbi portd,6
           cbi portd,7
           ;
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b10110000 
           out Portc,r16
           ;
           rcall delay
           ;
           ;Display 4 on 4th 7 segment
           sbi ddrd,5
           sbi ddrd,6
           sbi ddrd,7
           cbi portd,5
           cbi portd,6
           sbi portd,7
           ;
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b10110000 
           out Portc,r16
           ;
           rcall delay
           ;
           ;Display 5 on 3th 7 segment
           sbi ddrd,5
           sbi ddrd,6
           sbi ddrd,7
           sbi portd,5
           cbi portd,6
           sbi portd,7
           ;
           ldi r16,0b11111111
           out ddrc,r16
           ldi r16,0b10110000 
           out Portc,r16
           ;
           rcall delay
           ;
rjmp _7Seg ; delay: ; provides some delay so that the LED is visible ; ============================= ; delay loop ; 499998 cycles: about 1/2 seconds ; ----------------------------- ; delaying 499995 cycles: ldi R29, $09 WGLOOP0: ldi R30, $0f WGLOOP1: ldi R31, $0f WGLOOP2: dec R31 brne WGLOOP2 dec R30 brne WGLOOP1 dec R29 brne WGLOOP0 ret

 

 

 

 

 

Chapter1
LED

1.1.
1.2.
1.3.
1.4.

Chapter2
7 Segmen

2.1.
2.2.

Chapter3
Swicht

3.1.
3.2.