/* Program jam digital untuk MCU p16f84a
Digital clock program for p16f84a MCU
oleh : Hartono , www.gemar-elektronika.com
April 2012
Compiler Micro C for PIC
by Mikroelektronika, www.mikroe.com
please don't delete this comment
jangan hapus komemtar ini */
long int num;
const long int menit = 60000000; //banyaknya siklus dalam 1 menit (xtal 4Mhz)
const long int timer_ovr = 0x00010000; //banyaknya siklus timer
char cacah;
char h0 = 0; //satuan jam
char h1 = 0; //puluhan jam
char m0 = 0; //satuan menit
char m1 = 0; //puluhan menit
char over_flow;
const char led[10] = {0x08, 0x3e, 0x11, 0x14, 0x26, 0x44, 0x40, 0x1e,
0x00, 0x04};
//rutin untuk menunda waktu sebesar 5ms
void tunda(void){
Delay_ms(5);
}
//rutin untuk menambah menit
void inc_minute(void){
m0++ ; over_flow = 0;
if (m0 == 10){
m0 = 0;
m1++ ;
if (m1 == 6)
{m1 = 0; over_flow = 1;}
}
}
//rutin untuk menambah jam
void inc_hour(void){
h0++ ;
if (h0==10){h0 = 0; h1++ ;}
if (h0==4 && h1 == 2){h0 = 0; h1 = 0;}
}
//rutin untuk multiplex 7 segment
void display(void){
PORTA = 0b11111111;
PORTB = led[m0];
PORTA = 0b11111110;
tunda();
PORTA = 0b11111111;
PORTB = led[m1];
PORTA = 0b11111101;
tunda();
PORTA = 0b11111111;
PORTB = led[h0];
PORTA = 0b11111011;
tunda();
PORTA = 0b11111111;
PORTB = led[h1];
PORTA = 0b11110111;
tunda();
}
// rutin layanan interrupt
void interrupt(void){
INTCON.T0IF = 0;
num -= timer_ovr;
if (num < 0){
num += menit;
inc_minute();
if (over_flow) inc_hour();
}
}
/* -----------ini adalah program utama---------------------- */
void main(void) {
//mengatur arah data pada port
TRISB = 0b10000000;
TRISA = 0b10000;
//mengatur timer0
OPTION_REG = 0b11010111;
//memampukan interrupt timer
INTCON.GIE = 1;
INTCON.T0IE = 1;
num = menit;
while (1){
for (cacah = 0; cacah < 25; cacah++){
display();
}
if (PORTB.RB7 == 0) //periksa apakah tombol menit ditekan
{inc_minute(); num = menit;}
if (PORTA.RA4 == 0) //periksa apalah tombol jam ditekan
{inc_hour(); num = menit;}
}
}
Menu atas
- Beranda
- Galeri
- Tentang saya
- Jam Digital dengan DS1307 dan Animasi 60 buah LED dengan ATMega32
- Program running text dengan 7 segment menggunakan BASCOM-AVR
- Membuat Jam Digital Menggunakan Bahasa C++
- Jam digital dengan P16F84A MCU
- Jam Digital dengan Mikrokontroler ATmega
- Digital Clock using pic18f8680, counters, external clocks
- Robot Pemadam Api (KRCI) dengan KRCI.BS2
- Robot Pemadam Api (KRCI) dengan UVTRON.OSC
- Robot line follower Dengan Fuzzy Logic
- Robot Line follower dengan Assembler
- Robot line follower menggunakan Bascom AVR
- Robot Line Follower menggunakan CodeVisionAVR
- Robot Line Follower Dengan Fuzzy Logic
Tidak ada komentar:
Posting Komentar