![]() |
|||||
| Microcontroller Kits Simple
Mikrokontroller 89s51 Trainer
|
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
;
|
Chapter1 Chapter2 Chapter3
|
|||