makalah mikroprosesor_jam digital

22
1 MAKALAH MIKROPROSESOR JAM DIGITAL 7 SEGMENT SHERLY MELISA SEMBIRING 131421086 YOHANA BR. SITEPU 131421087 LELY DAHLYANA 131421090 ABNER SORITUA SIDAURUK 131421096 KOM C EKSTENSI PROGRAM STUDI S1 ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA MEDAN 2014

Upload: le-ly

Post on 23-Oct-2015

74 views

Category:

Documents


0 download

DESCRIPTION

Jam digital merupakan salah satu aplikasi dari mikrokontroler AT89S51, hal ini sangat masukakal karena harga dari mirokontroler cukup ekonomis apabila dijadikan sebuah jam digital,masalah utama dalam pembuatannya adalah pada penyingkronan waktu dan bagaimanamengendalikan display yang dalam hal ini digunakan seven segmen melalui port serial yangterdapat pada mikrokontroler, disini juga digunakan Shif Register untuk mengeser data padaSeven Segment, adapun pemogramannya disini digunakan bahasa pemograman assemblyyang sesuai dengan mata kuliah yang diajarkan.

TRANSCRIPT

1

MAKALAH MIKROPROSESOR

JAM DIGITAL 7 SEGMENT

SHERLY MELISA SEMBIRING 131421086

YOHANA BR. SITEPU 131421087

LELY DAHLYANA 131421090

ABNER SORITUA SIDAURUK 131421096

KOM C EKSTENSI

PROGRAM STUDI S1 ILMU KOMPUTER

DEPARTEMEN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS

SUMATERA UTARA

MEDAN

2014

2

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Jam digital merupakan salah satu aplikasi dari mikrokontroler AT89S51, hal ini sangat masuk

akal karena harga dari mirokontroler cukup ekonomis apabila dijadikan sebuah jam digital,

masalah utama dalam pembuatannya adalah pada penyingkronan waktu dan bagaimana

mengendalikan display yang dalam hal ini digunakan seven segmen melalui port serial yang

terdapat pada mikrokontroler, disini juga digunakan Shif Register untuk mengeser data pada

Seven Segment, adapun pemogramannya disini digunakan bahasa pemograman assembly

yang sesuai dengan mata kuliah yang diajarkan.

1.2 Batasan Masalah

Pembuatan jam digital ini hanya sebatas menampilkan jam, menit dan detik.

1.3 Tujuan

Tujuan dari pembuatan makalah ini adalah untuk memenuhi tugas microprosesor serta untuk

menambah pengetahuan tentang microcontroler.

3

BAB 2

TINJAUAN PUSTAKA

2.1 Definisi Mikrokontroler

Mikrokontroler adalah suatu chip yang digunakan untuk mengontrol alat-alat elektronik

secara digital dan analog. Selain itu mikrokontroler juga dapat digunakan untuk mengontrol

suatu proses yang dipengaruhi oleh lingkungan dan dieksekusi oleh mikrokontroler secara

otomatis.

2.2 Fungsi Mikrokontroler

Mikrokontroler secara umum berfungsi menekankan biaya produksi. Mikrokontroler adalah

“pengendali kecil” dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan

komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan

akhirnya terpusat serta dikendalikan oleh mikrokontroler ini. Jadi intinya adalah menekan

penggunaan komponen yang terlalu banyak menjadi sedikit.

2.3 Jenis- Jenis Mikrokontroler

Secara teknis hanya ada 2 jenis mikrokontroler yaitu RISC dan CISC dan masing-masing

mempunyai keturunan/keluarga sendiri-sendiri. RISC kepanjangan dari Reduced Instruction

Set Computer : instruksi terbatas tapi memiliki fasilitas yang lebih banyak. Sedangkan CISC

kepanjangan dari Complex Instruction Set Computer : instruksi bisa dikatakan lebih lengkap

tapi dengan fasilitas secukupnya.

4

Tentang jenisnya banyak sekali ada keluarga Motorola dengan seri 68xx, keluarga

MCS51 yang diproduksi Atmel, Philip, Dallas, keluarga PIC dari Microchip, Renesas, Zilog.

Masing-masing keluarga juga masih terbagi lagi dalam beberapa tipe. Jadi sulit sekali untuk

menghitung jumlah mikrokontroler

2.4 Prinsip Kerja Mikrokontroler

Prinsip kerja sebuah mikrokontroler dapat dijelaskan sebagai berikut:

1. Berdasarkan data yang ada pada register Program Counter. Mikrokontroler

mengambil data dari ROM dengan alamat sebagaimana ditunjukkan dalam Program

Counter. Selanjutnya Program Counter ditambah nilainya dengan 1 (increment) secara

otomatis. Data yang diambil tersebut merupakan urutan instruksi program pengendali

mikrokontroler yang sebelumnya telah dituliskan oleh pembuatnya.

2. Instruksi tersebut diolah dan dijalankan. Proses pengerjaan bergantung pada jenis

instruksi; bisa membaca, mengubah nilai-nilai dalam register, RAM, isi port atau

melakukan pembacaan dan dilanjutkan dengan pengubahan data.

3. Program Counter telah berubah nilainya (baik karena penambahan secara otomatris

sebagaimana dijelaskan pada langkah 1 di atas atau karena pengubahan data pada

langkah 2). Selanjutnya yang dilakukan mikrokontroler adalah mengulang kembali

siklus ini pada langkah 1. Demikian seterusnya hingga catu daya dimatikan.

2.5 Seven Segment

Seven Segment merupakan Kombinasi dari beberapa ruas Led yang disusun sedemikian

rupa sehingga membentuk suatu karakter angka yang biasa dikenal dalam kehidupan sehari-

hari. Seven Segmen terbagi atas dua jenis yaitu: Comon anoda dan comon katoda, disini yang

kita pakai adalah comon anoda, yang merupakan seven segmen aktif low. Dimana seven

segment ini akan aktif apabila inputnya diberi logika low.

2.6 Mikrokontroler AVR Atmega8

AVR merupakan salah satu jenis mikrokontroler yang di dalamnya terdapat berbagai macam

fungsi. Perbedaannya pada mikro yang pada umumnya digunakan seperti MCS51 adalah

pada AVR tidak perlu menggunakan oscillator eksternal karena di dalamnya sudah terdapat

internal oscillator. Selain itu kelebihan dari AVR adalah memiliki Power

tidak perlu ada tombol reset dari luar karena cukup hanya dengan mematikan supply, maka

secara otomatis AVR akan melakukan reset. Untuk beberapa jenis AVR terdapat beb

fungsi khusus seperti ADC, EEPROM sekitar 128 byte sampai dengan 512 byte.

AVR ATmega8 adalah mikrokontroler CMOS 8

memiliki 8K byte in-System Programmable Flash. Mikrokontroler dengan konsumsi daya

rendah ini mampu mengeksekusi instruksi dengan kecepatan maksimum 16MIPS pada

frekuensi 16MHz. Jika dibandingkan dengan ATmega8L perbedaannya hanya terletak pada

besarnya tegangan yang diperlukan untuk bekerja. Untuk ATmega8 tipe L, mikrokontroler ini

dapat bekerja dengan tegangan antara 2,7

bekerja pada tegangan antara 4,5

Mikrokontroler AVR Atmega8

AVR merupakan salah satu jenis mikrokontroler yang di dalamnya terdapat berbagai macam

fungsi. Perbedaannya pada mikro yang pada umumnya digunakan seperti MCS51 adalah

pada AVR tidak perlu menggunakan oscillator eksternal karena di dalamnya sudah terdapat

internal oscillator. Selain itu kelebihan dari AVR adalah memiliki Power

tidak perlu ada tombol reset dari luar karena cukup hanya dengan mematikan supply, maka

secara otomatis AVR akan melakukan reset. Untuk beberapa jenis AVR terdapat beb

fungsi khusus seperti ADC, EEPROM sekitar 128 byte sampai dengan 512 byte.

AVR ATmega8 adalah mikrokontroler CMOS 8-bit berarsitektur AVR RISC yang

System Programmable Flash. Mikrokontroler dengan konsumsi daya

mengeksekusi instruksi dengan kecepatan maksimum 16MIPS pada

frekuensi 16MHz. Jika dibandingkan dengan ATmega8L perbedaannya hanya terletak pada

besarnya tegangan yang diperlukan untuk bekerja. Untuk ATmega8 tipe L, mikrokontroler ini

tegangan antara 2,7 - 5,5 V sedangkan untuk ATmega8 hanya dapat

bekerja pada tegangan antara 4,5 – 5,5 V.

5

AVR merupakan salah satu jenis mikrokontroler yang di dalamnya terdapat berbagai macam

fungsi. Perbedaannya pada mikro yang pada umumnya digunakan seperti MCS51 adalah

pada AVR tidak perlu menggunakan oscillator eksternal karena di dalamnya sudah terdapat

internal oscillator. Selain itu kelebihan dari AVR adalah memiliki Power-On Reset, yaitu

tidak perlu ada tombol reset dari luar karena cukup hanya dengan mematikan supply, maka

secara otomatis AVR akan melakukan reset. Untuk beberapa jenis AVR terdapat beberapa

fungsi khusus seperti ADC, EEPROM sekitar 128 byte sampai dengan 512 byte.

bit berarsitektur AVR RISC yang

System Programmable Flash. Mikrokontroler dengan konsumsi daya

mengeksekusi instruksi dengan kecepatan maksimum 16MIPS pada

frekuensi 16MHz. Jika dibandingkan dengan ATmega8L perbedaannya hanya terletak pada

besarnya tegangan yang diperlukan untuk bekerja. Untuk ATmega8 tipe L, mikrokontroler ini

5,5 V sedangkan untuk ATmega8 hanya dapat

6

2.6.1 Konfigurasi Pin Atmega8

Gambar 2.1. Konfigurasi Pin Atmega8

ATmega8 memiliki 28 Pin, yang masing-masing pin nya memiliki fungsi yang berbeda-beda

baik sebagai port maupun fungsi yang lainnya. Berikut akan dijelaskan fungsi dari masing-

masing kaki ATmega8 :

1. VCC

Merupakan supply tegangan digital.

2. GND

Merupakan ground untuk semua komponen yang membutuhkan grounding.

3. Port B (PB7...PB0)

Didalam Port B terdapat XTAL1, XTAL2, TOSC1, TOSC2. Jumlah Port B adalah 8

buah pin, mulai dari pin B.0 sampai dengan B.7. Tiap pin dapat digunakan sebagai

input maupun output. Port B merupakan sebuah 8-bit bi-directional I/O dengan

internal pull-up resistor. Sebagai input, pin-pin yang terdapat pada port B yang secara

eksternal diturunkan, maka akan mengeluarkan arus jika pull-up resistor diaktifkan.

Khusus PB6 dapat digunakan sebagai input Kristal (inverting oscillator amplifier) dan

input ke rangkaian clock internal, bergantung pada pengaturan Fuse bit yang

digunakan untuk memilih sumber clock. Sedangkan untuk PB7 dapat digunakan

sebagai output Kristal (output oscillator amplifier) bergantung pada pengaturan Fuse

7

bit yang digunakan untuk memilih sumber clock. Jika sumber clock yang dipilih dari

oscillator internal, PB7 dan PB6 dapat digunakan sebagai I/O atau jika menggunakan

Asyncronous Timer/Counter2 maka PB6 dan PB7 (TOSC2 dan TOSC1) digunakan

untuk saluran input

timer.

4. Port C (PC5…PC0)

Port C merupakan sebuah 7-bit bi-directional I/O port yang di dalam masing-masing

pin terdapat pull-up resistor. Jumlah pin nya hanya 7 buah mulai dari pin C.0 sampai

dengan pin C.6. Sebagai keluaran/output port C memiliki karakteristik yang sama

dalam hal menyerap arus (sink) ataupun mengeluarkan arus (source).

5. RESET/PC6

Jika RSTDISBL Fuse diprogram, maka PC6 akan berfungsi sebagai pin I/O. Pin ini

memiliki karakteristik yang berbeda dengan pin-pin yang terdapat pada port C

lainnya. Namun jika RSTDISBL Fuse tidak diprogram, maka pin ini akan berfungsi

sebagai input reset. Dan jika level tegangan yang masuk ke pin ini rendah dan pulsa

yang ada lebih pendek dari pulsa minimum, maka akan menghasilkan suatu kondisi

reset meskipun clock-nya tidak bekerja.

6. Port D (PD7…PD0)

Port D merupakan 8-bit bi-directional I/O dengan internal pull-up resistor. Fungsi dari

port ini sama dengan port-port yang lain. Hanya saja pada port ini tidak terdapat

kegunaan-kegunaan yang lain. Pada port ini hanya berfungsi sebagai masukan dan

keluaran saja atau biasa disebut dengan I/O.

7. Avcc

Pin ini berfungsi sebagai supply tegangan untuk ADC. Untuk pin ini harus

dihubungkan secara terpisah dengan VCC karena pin ini digunakan untuk analog saja.

Bahkan jika ADC pada AVR tidak digunakan tetap saja disarankan untuk

menghubungkannya secara terpisah dengan VCC. Jika ADC digunakan, maka AVcc

harus dihubungkan ke VCC melalui low pass filter.

8

8. AREF

Merupakan pin referensi jika menggunakan ADC.

Gambar 2.2 Blok Diagram ATmega8

Pada AVR status register mengandung beberapa informasi mengenai hasil dari kebanyakan

hasil eksekusi instruksi aritmatik. Informasi ini digunakan untuk altering arus program

sebagai kegunaan untuk meningkatkan performa pengoperasian. Register ini di-update

setelah operasi ALU (Arithmetic Logic Unit) hal tersebut seperti yang tertulis dalam

datasheet khususnya pada bagian Instruction Set Reference. Dalam hal ini untuk beberapa

kasus dapat membuang 10 penggunaan kebutuhan instrukasi perbandingan yang telah

didedikasikan serta

dapat menghasilkan peningkatan dalam hal kecepatan dan kode yang lebih sederhana dan

singkat. Register ini tidak secara otomatis tersimpan ketika memasuki sebuah rutin interupsi

dan juga ketika menjalankan sebuah perintah setelah kembali dari interupsi. Namun hal

tersebut harus dilakukan melalui software. Berikut adalah gambar status register.

9. Bit 7(I)

Merupakan bit Global Interrupt Enable. Bit ini harus di-set agar semua perintah

interupsi dapat dijalankan. Untuk perintah interupsi individual akan di jelaskan pada

bagian yang lain. Jika bit ini di-reset, maka semua perintah interupsi baik yang

individual maupun yang secara umum akan di abaikan. Bit ini akan dibersihkan atau

cleared oleh hardware setelah sebuah interupsi di jalankan dan akan di-set kembali

oleh perintah RETI. Bit ini juga dapat diset dan di-reset melalui aplikasi dan intruksi

SEI dan CLL.

9

10. Bit 6(T)

Merupakan bit Copy Storage. Instruksi bit Copy Instructions BLD (Bit Load) and

BST (Bit Store) menggunakan bit ini sebagai asal atau tujuan untuk bit yang telah

dioperasikan. Sebuah bit dari sebuah register dalam Register File dapat disalin ke

dalam bit ini dengan menggunakan instruksi BST, dan sebuah bit di dalam bit ini

dapat disalin ke dalam bit di dalam register pada Register File dengan menggunakan

perintah BLD.

11. Bit 5(H)

Merupakan bit Half Carry Flag. Bit ini menandakan sebuah Half Carry dalam

beberapa operasi aritmatika. Bit ini berfungsi dalam aritmatika BCD.

12. Bit 4(S)

Merupakan Sign bit. Bit ini selalu merupakan sebuah ekslusif di antara Negative Flag

(N) dan two’s Complement Overflow Flag (V).

13. Bit 3(V)

Merupakan bit Two’s Complement Overflow Flag. Bit ini menyediakan fungsi

aritmatika dua komplemen.

14. Bit 2(N)

Merupakan bit Negative Flag. Bit ini mengindikasikan sebuah hasil negative di dalam

sebuah fungsi logika atai aritmatika.

15. Bit 1(Z)

Merupakan bit Zero Flag. Bit ini mengindikasikan sebuah jasil nol “0” dalan sebuah

fungsi aritmatika atau logika.

16. Bit 0(C)

Merupakan bit Carry Flag. Bit ini mengindikasikan sebuah Carry atau sisa dalam

sebuah aritmatika atau logika.

10

BAB 3

PERANCANGAN JAM DIGITAL 7 SEGMENT

3.1 Komponen rangkaian jam digital 7 segment

1. r 10K ohm 1 Buah

2. r 330 ohm 6 Buah

3. r 100 ohm 8 Buah

4. r 4K7 ohm 2 Buah

5. c 100uf/ 16 volt 2 Buah

6. c 22pf non polar 2 Buah

7. Transistor NPN C9013 6 Buah

8. xtall 12Mhz 1 Buah

9. Xtall 32,XXX Mhz 1 Buah

10. Soket baterai kancing 1 Buah

11. RTC DS1307+socket 1 Buah

12. ATmega8 + socket 1 Buah

13. Push button (tombol) 5 Buah

14. IC ULN 2803 + socket 1 Buah

15. 7 Segmen (Anoda) 6 Buah

16. IC ATmega8 1 Buah

17. Crystal 12Mhz 1 Buah

18. Capasitor 22pf 2 Buah

19. Transistor NPN C9013 6 Buah

20. Resistor 330 ohm 14 Buah

21. Resistor 10 Kohm 1 Buah

22. Resistor 4K7 2 Buah

23. Crystal 32Mhz 1 Buah

24. Soket baterai kancing 1 Buah

25. Baterai kancing CR2032 1 Buah

26. Push button untuk reset 1 Buah

11

27. Soket ATmega8 DIP 28 1 Buah

28. IC ULN2803N + 1 Buah

3.2 Skematik Segment Jam Digital

12

3.2 Segment Jam Digital

13

BAB 4

PENUTUP

4.1 Kesimpulan

Mikrokontroler AT89S51 dapat dirancang menjadi sebuah jam digital, Dengan rangkaian

sederhana dalam membuat sebuah rangkaian kita tentunya dituntut untuk paham dari dari

sebuah microcontroler yang kita gunakan. Pada program, waktu pertama dimulai jam

00.00.00, maka dalam awal pengoperasiannya perlu menunggu waktu tengah malam supaya

jam ini sesuai dengan waktu yang sebenarnya. Hai ni merupakan salah satu kelemahan jam

ini, namun jika kita tidak ingin menunggu waktu sampai tengah malam maka perlu ada

sedikit modifikasi pada awal program

14

LISTING PROGRAM

1. Jam.c

/*****************************************************

Chip type : ATmega8

Program type : Application

Clock frequency : 12.000000 MHz

Memory model : Small

External SRAM size : 0

Data Stack size : 256

*****************************************************/

#include <mega8.h>

#include <delay.h>

#define satu PORTD=0b00011000

#define dua PORTD=0b11010110

#define tiga PORTD=0b11011100

#define empat PORTD=0b01111000

#define lima PORTD=0b11101100

#define enam PORTD=0b11101110

#define tujuh PORTD=0b10011000

#define delapan PORTD=0b11111110

#define sembilan PORTD=0b11111100

#define nol PORTD=0b10111110

#define padam PORTD=0b00000000

#define dot PORTD=0b00000001

#define angka PORTD

#define dig1 PORTB=0b00000010; delay_ms(1);

#define dig3 PORTB=0b00000100; delay_ms(1);

#define dig4 PORTB=0b00001000; delay_ms(1);

#define dig5 PORTB=0b00010000; delay_ms(1);

#define dig6 PORTB=0b00100000; delay_ms(1);

#define dig2 PORTB=0b00000001; delay_ms(1);

15

#define hmin PINC.1

#define hplus PINC.2

#define mmin PINC.3

#define mplus PINC.0

// I2C Bus functions

#asm

.equ __i2c_port=0x15 ;PORTC

.equ __sda_bit=4

.equ __scl_bit=5

#endasm

#include <i2c.h>

// DS1307 Real Time Clock functions

#include <ds1307.h>

// Declare your global variables here

#include "kalkulasi.c"

void main(void)

{

// Declare your local variables here

// Input/Output Ports initialization

// Port B initialization

// Func7=In Func6=In Func5=Out Func4=Out Func3=Out Func2=Out

Func1=Out Func0=Out

// State7=T State6=T State5=0 State4=0 State3=0 State2=0

State1=0 State0=0

PORTB=0x00;

DDRB=0x3F;

16

// Port C initialization

// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In

Func0=In

// State6=T State5=T State4=T State3=T State2=T State1=T

State0=T

PORTC=0xFF;

DDRC=0x00;

// Port D initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out

Func1=Out Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0

State1=0 State0=0

PORTD=0x00;

DDRD=0xFF;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

TCCR0=0x00;

TCNT0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

17

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

18

// I2C Bus initialization

i2c_init();

// DS1307 Real Time Clock initialization

// Square wave output on pin SQW/OUT: Off

// SQW/OUT pin state: 0

rtc_init(0,0,0);

if(hmin==0)

{

delay_ms(2000);

while(1)

{

if(hmin==0){haur--;delay_ms(100);}

if(hplus==0){haur++;delay_ms(100);}

if(haur==24){haur=0;delay_ms(100);}

if(mmin==0){minut--;delay_ms(100);}

if(mplus==0){minut++;delay_ms(100);}

if(minut==60){minut=0;delay_ms(100);}

h10=haur/10;

h1=haur%10;

m10=minut/10;

m1=minut%10;

s10=0;

s1=0;

jam(h10,h1,m10,m1,s10,s1);

rtc_set_time(haur,minut,0); //untuk menset jam 09:10:26

//rtc_set_date(8,11,87); //untuk menset tanggal: 8 nov 1987

19

}

}

while (1)

{

// Place your code here

rtc_get_time(&h,&m,&s); //mendapatkan nilai jam,

menit dan detik

//rtc_get_date(&d,&mo,&y); //mendapatkan nilai

tanggal, bulan dan tahun

//lcd_gotoxy(0,0);

//sprintf(temp,"Time %d:%d:%d",h,m,s);

//lcd_puts(temp);//tampilkan jam di LCD baris pertama

//lcd_gotoxy(0,1);

//sprintf(temp,"Date %d-%d-%d",d,mo,y);

//lcd_puts(temp);//tampilkan tanggal di LCD baris

kedua

h10=h/10;

h1=h%10;

m10=m/10;

m1=m%10;

s10=s/10;

s1=s%10;

jam(h10,h1,m10,m1,s10,s1);

};

}

20

2. Kalkulasi.c

unsigned char h, m, s, d, mo, y;

//unsigned

nol,padam,satu,dua,tiga,empat,lima,enam,tujuh,delapan,sembilan

,angka;

unsigned char haur,minut;

//unsigned dot,dig1,dig2,dig3,dig4,dig5,dig6;

unsigned char digit1,digit2,digit3,digit4,digit5,digit6;

unsigned char h10,h1,m10,m1,s10,s1;

void jam(unsigned char angka1,unsigned char angka2,unsigned

char angka3,unsigned char angka4,unsigned char angka5,unsigned

char angka6)

{

if(angka1==0){digit1=padam;}

if(angka1==1){digit1=satu;}

if(angka1==2){digit1=dua;}

if(angka1==3){digit1=tiga;}

if(angka1==4){digit1=empat;}

if(angka1==5){digit1=lima;}

if(angka1==6){digit1=enam;}

if(angka1==7){digit1=tujuh;}

if(angka1==8){digit1=delapan;}

if(angka1==9){digit1=sembilan;}

if(angka2==0){digit2=nol;}

if(angka2==1){digit2=satu;}

if(angka2==2){digit2=dua;}

if(angka2==3){digit2=tiga;}

if(angka2==4){digit2=empat;}

if(angka2==5){digit2=lima;}

if(angka2==6){digit2=enam;}

21

if(angka2==7){digit2=tujuh;}

if(angka2==8){digit2=delapan;}

if(angka2==9){digit2=sembilan;}

if(angka3==0){digit3=padam;}

if(angka3==1){digit3=satu;}

if(angka3==2){digit3=dua;}

if(angka3==3){digit3=tiga;}

if(angka3==4){digit3=empat;}

if(angka3==5){digit3=lima;}

if(angka3==6){digit3=enam;}

if(angka3==7){digit3=tujuh;}

if(angka3==8){digit3=delapan;}

if(angka3==9){digit3=sembilan;}

if(angka4==0){digit4=nol;}

if(angka4==1){digit4=satu;}

if(angka4==2){digit4=dua;}

if(angka4==3){digit4=tiga;}

if(angka4==4){digit4=empat;}

if(angka4==5){digit4=lima;}

if(angka4==6){digit4=enam;}

if(angka4==7){digit4=tujuh;}

if(angka4==8){digit4=delapan;}

if(angka4==9){digit4=sembilan;}

if(angka5==0){digit5=padam;}

if(angka5==1){digit5=satu;}

if(angka5==2){digit5=dua;}

if(angka5==3){digit5=tiga;}

if(angka5==4){digit5=empat;}

if(angka5==5){digit5=lima;}

if(angka5==6){digit5=enam;}

if(angka5==7){digit5=tujuh;}

22

if(angka5==8){digit5=delapan;}

if(angka5==9){digit5=sembilan;}

if(angka6==0){digit6=nol;}

if(angka6==1){digit6=satu;}

if(angka6==2){digit6=dua;}

if(angka6==3){digit6=tiga;}

if(angka6==4){digit6=empat;}

if(angka6==5){digit6=lima;}

if(angka6==6){digit6=enam;}

if(angka6==7){digit6=tujuh;}

if(angka6==8){digit6=delapan;}

if(angka6==9){digit6=sembilan;}

angka=digit1;dig1;

angka=digit2;

angka|=dot;dig2;

angka=digit3;dig3;

angka=digit4;

angka|=dot;dig4;

angka=digit5;dig5;

angka=digit6;dig6;

}