Training Elektronika Industri

No HP : 082322992336

Trainer Microcontroller

No HP : 082322992336

team electronics indonesia

No HP : 082322992336

Interface Electric car

No HP : 082322992336

Altium designer

No HP : 082322992336

Sabtu, 07 Februari 2015

Latihan UKK Elektronika Industri

CODING SEVEN SEGMENT BAHASA ASSEMBLER

SOAL/TUGAS

 Buatlah rangkaian kontrol display 7 segment dengan ketentuan
  • SW 1 ditekan maka program akan reset
  •  SW2 ditekan 7 segment menghitung 00 - 99 (7 segment tetap menyala walaupun SW2 sudah dilepas lagi. 
  • SW3 ditekan 7 segment menghitung 99 - 00 (7 segment tetap menyala walaupun SW3 sudah dilepas lagi)
Gambar 1. Gambar Rangkaian
 Gambar 1. Block diagram

Gambar 2. Diagram blok perencanaan

Gambar 2. Block diagram 


Contoh coding menggunakan M-IDE dan simulasi ISIS Proteus 7
password: faridberbagi

Coding M-IDE

 ;*******************************************************
;mendefisinikan i/o atau variable
;*******************************************************

        dispdata_satuan        equ    P2
        dispdata_puluhan    equ    P0
  
        My_number        equ    30H
      
        Org    0000H
;------------------------------------------------------
      
;*******************************************************
;MAIN PROGRAM (pembacaan kondisi tombol)
;*******************************************************
main_prog:    MOV    P0,#0C0H
        MOV    P2,#0c0H
        mov    My_number,#0
        JNB    P1.0,up_A
        JNB    P1.1,down_A
        sjmp    main_prog  
;------------------------------------------------------

;*******************************************************
;mejadikan number start 0 atau 99 sebelum di up atau down
;*******************************************************
up_A:        mov    a, My_number
        Cjne    A,#99, up
        mov    My_number,#0FFH
        sjmp    up
      
down_A:        mov    a, My_number
        Cjne    A,#0, down
        mov    My_number,#99H
        sjmp    down
;------------------------------------------------------

;*******************************************************
;running up
;*******************************************************
up:        inc     My_number        ;nilai ditambah
        JNB    P1.1,down
        Call    BCD
        call    delay
        mov    a, My_number
        Cjne    A,#99, up
        mov    My_number,#0FFH        ;jika nilai sama 00 maka nilai sama dengan 255
        SJMP    up      
;------------------------------------------------------

;*******************************************************
;running down
;*******************************************************
down:        dec     My_number        ;nilai pdikurangi
        JNB    P1.0,up
        Call    BCD
        call    delay
        mov    a, My_number
        Cjne    A,#00, down        ;jika nilai tidak sama 00 maka kembali ke down
        mov    My_number,#100        ;jika nilai sama 00 maka nilai sama dengan 100
        SJMP    down  
;------------------------------------------------------

;*******************************************************
;conversi hex to desimal
;*******************************************************      
BCD:        Mov     A,My_number
        Mov     B,#10
        Div    AB            ;pembagian A/10
        call    Seg_conv
        mov    dispdata_puluhan, A    ;puluhan
        mov    A,B
        call    Seg_conv
        mov    dispdata_satuan, A    ;satuan
        Ret
;------------------------------------------------------

;*******************************************************
;data aray seven segment
;*******************************************************
Seg_conv:    inc     A
        Movc    A, @A+PC
        RET
      
        DB    0C0H    ;angka 0
        DB    0F9H    ;angka 1
        DB    0A4H    ;angka 2
        DB    0B0H    ;angka 3
        DB    099H    ;angka 4
        DB    092H    ;angka 5
        DB    082H    ;angka 6
        DB    0F8H    ;angka 7
        DB    080H    ;angka 8
        DB    090H    ;angka 9
;------------------------------------------------------

;*******************************************************
;tunda
;*******************************************************
delay:        MOV    R5,#0ffh
        MOV    R6,#0ffH
        MOV    R7,#2
delay_loop:    DJNZ    R5,delay_loop
        DJNZ    R6,delay_loop
        DJNZ    R7,delay_loop
        RET
      
        END  
;------------------------------------------------------