• Tidak ada hasil yang ditemukan

Program Untuk Mengetes Huruf R Pada Matriks 8x8

N/A
N/A
Protected

Academic year: 2019

Membagikan "Program Untuk Mengetes Huruf R Pada Matriks 8x8"

Copied!
64
0
0

Teks penuh

(1)
(2)

Program Untuk Mengetes Huruf R Pada Matriks 8x8

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

This program was created by the

CodeWizardAVR V3.09 Standard

Automatic Program Generator

© Copyright 1998-2014 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project : rtx Feb 2014

Version : 0.9

Date : 3/28/2013

Author : kbram

Company : ekatron

Comments:

Chip type : ATmega32A

Program type : Application

AVR Core Clock frequency: 16.000000 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 512

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

#include <mega32a.h>

(3)

#define sdt PORTC.2

#define sclk PORTC.3

#define soe PORTC.4

#define led PORTC.7

#define signal PIND.0

#define dt_in PINA

unsigned char jam, menit, detik;

// Declare your global variables here

unsigned char const pj_kolom = 48;

unsigned char dm_jam[] = {0x00,'1','2',':','3','1',0xaa};

flash char hrf_1[]={0x82,0xff,0xff,0x80,0x00,0x00}; //1 6

flash char hrf_2[]={0x82,0xc1,0xe1,0xb1,0x9f,0x8e,0x00,0x00}; //2 8

flash char hrf_3[]={0x42,0x81,0x89,0x89,0xff,0x76,0x00,0x00}; //3 8

flash char hrf_4[]={0x30,0x38,0x24,0xa2,0xff,0xff,0xa0,0x00,0x00}; //4 9

flash char hrf_5[]={0x4f,0x8f,0x89,0x89,0xf9,0x71,0x00,0x00}; //5 8

flash char hrf_6[]={0x7e,0xff,0x89,0x89,0x89,0xf9,0x72,0x00,0x00}; //6 9

(4)

flash char hrf_8[]={0x76,0xff,0x89,0x89,0x89,0xff,0x76,0x00,0x00}; //8 9

flash char hrf_9[]={0x4e,0x9f,0x91,0x91,0x91,0xff,0x7e,0x00,0x00}; //9 9

flash char hrf_0[]={0x7e,0xff,0x81,0x81,0x81,0xff,0x7e,0x00,0x00}; //0 9

flash char hrf_tnd_ttk_koma[]={0x36,0xb6,0x76,0x00,0x00}; //; 5

// I2C Bus functions

#include <i2c.h>

// DS1307 Real Time Clock functions

#include <ds1307.h>

// Declare your global variables here

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)

{

// Place your code here

signed int txt_idx;

bit isi, txt;

pj_kol = pj_kolom;

(5)

key_in = dt_in; // ps2key stroked

// entering control sequence player

// entering page 1

if (key_in == 0x05) // page one if F1 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

pg_idx = 0;

(6)

if (txt_idx < 2) iprom_write(p1_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = page1_start; ee_addr < page1_end; ee_addr++)

{

xkar = text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

}

}

}

/// entering page 2

if (key_in == 0x06) // page 2 if F2 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

(7)

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

}

} // leaving page 2

// entering page 3

if (key_in == 0x04) // page 3 if F3 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

(8)

iprom_write(p3_sts_addr,1);

if (txt_idx < 2) iprom_write(p3_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = page3_start; ee_addr < page3_end; ee_addr++)

{

xkar = text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

}

} // leaving page 3

}

// entering page4

if (key_in == 0x0c) // page 4 if F4 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

(9)

{

kirim_kolom(pj_kol,ndx); // sepanjang display

if (signal == 0)

{

key_in = dt_in; // ascii char in

}

}

}

}

if (key_in == 13)

{

pg_idx = 0;

iprom_write(p4_sts_addr,1);

if (txt_idx < 2) iprom_write(p4_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = page4_start; ee_addr < page4_end; ee_addr++)

{

xkar = text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

(10)

}

} // leaving page 4

// entering page 5

if (key_in == 0x03) // page 5 if F5 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

pg_idx = 0;

iprom_write(p5_sts_addr,1);

if (txt_idx < 2) iprom_write(p5_sts_addr,0);

text[txt_idx] = 0xaa;

(11)

for (ee_addr = page5_start; ee_addr < page5_end; ee_addr++)

{

xkar = text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

}

}

} // leaving page 5

// entering page 6

if (key_in == 0x0b) // page 6 if F6 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

(12)

if (key_in == 13)

{

pg_idx = 0;

iprom_write(p6_sts_addr,1);

if (txt_idx < 2) iprom_write(p6_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = page6_start; ee_addr < page6_end; ee_addr++)

{

xkar = text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

}

}

} // leaving page 6

/// entering animation text

// entering demo 1

if (key_in == 0x83) // demo one if F7 is pressed

{

(13)

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

pg_idx = 0;

iprom_write(d1_sts_addr,1);

if (txt_idx < 2) iprom_write(d1_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = demo1_start; ee_addr < demo1_end; ee_addr++)

{

xkar = d_text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

(14)

}

}

}

/// entering demo 2

if (key_in == 0x0a) // demo 2 if F8 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

pg_idx = 0;

iprom_write(d2_sts_addr,1);

(15)

text[txt_idx] = 0xaa;

for (ee_addr = demo2_start; ee_addr < demo2_end; ee_addr++)

{

xkar = d_text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

}

}

} // leaving page 2

// entering demo 3

if (key_in == 0x01) // demo 3 if F9 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

(16)

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

pg_idx = 0;

iprom_write(d3_sts_addr,1);

if (txt_idx < 2) iprom_write(d3_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = demo3_start; ee_addr < demo3_end; ee_addr++)

{

xkar = d_text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

}

} // leaving page 3

}

// entering demo4

if (key_in == 0x09) // demo 4 if F10 is pressed

(17)

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

pg_idx = 0;

iprom_write(d4_sts_addr,1);

if (txt_idx < 2) iprom_write(d4_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = demo4_start; ee_addr < demo4_end; ee_addr++)

{

xkar = d_text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

(18)

}

break;

}

}

} // leaving page 4

// entering demo 5

if (key_in == 0x1c) // demo 5 if F11 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

pg_idx = 0;

(19)

if (txt_idx < 2) iprom_write(d5_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = demo5_start; ee_addr < demo5_end; ee_addr++)

{

xkar = d_text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

}

}

} // leaving page 5

// entering demo 6

if (key_in == 0x07) // demo 6 if F12 is pressed

{

txt_idx = 0;

while (1)

{

isi = 0;

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

(20)

{

kirim_kolom(pj_kol,ndx); // sepanjang display

}

}

if (key_in == 13)

{

pg_idx = 0;

iprom_write(d6_sts_addr,1);

if (txt_idx < 2) iprom_write(d6_sts_addr,0);

text[txt_idx] = 0xaa;

for (ee_addr = demo6_start; ee_addr < demo6_end; ee_addr++)

{

xkar = d_text[pg_idx];

pg_idx++;

iprom_write(ee_addr,xkar);

if (xkar == 0xaa) break;

}

break;

}

}

} // leaving demo 6

}

(21)

// Timer1 overflow interrupt service routine

interrupt [TIM1_OVF] void timer1_ovf_isr(void)

{

unsigned char jh, jl, mh, ml;

// Reinitialize Timer1 value

TCNT1H=0x85EE >> 8;

TCNT1L=0x85EE & 0xff;

// Place your code here

led_tick++;

if (led_tick == 1) led = 0;

if (led_tick > 3) led = 1;

if (led_tick > 15) led_tick = 0;

rtc_get_time(&jam,&menit,&detik);

jh = jam/10;

jl = jam%10;

mh = menit/10;

ml = menit%10;

}

void main(void)

{

// Declare your local variables here

unsigned char p1_sts, p2_sts, p3_sts, p4_sts, p5_sts, p6_sts;

(22)

// Input/Output Ports initialization

// Port A initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=Out Bit1=Out Bit0=Out

DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (1<<DDB2) | (1<<DDB1) | (1<<DDB0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=0 Bit1=0 Bit0=0

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization

// Function: Bit7=Out Bit6=In Bit5=In Bit4=Out Bit3=Out Bit2=Out Bit1=In Bit0=In

DDRC=(1<<DDC7) | (0<<DDC6) | (0<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (0<<DDC1) | (0<<DDC0);

// State: Bit7=0 Bit6=T Bit5=T Bit4=0 Bit3=0 Bit2=0 Bit1=T Bit0=T

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization

(23)

DDRD=(0<<DDD7) | (1<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);

// State: Bit7=T Bit6=0 Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=0xFF

// OC0 output: Disconnected

TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (0<<CS01) | (0<<CS00);

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: 62.500 kHz

// Mode: Normal top=0xFFFF

// OC1A output: Disconnected

// OC1B output: Disconnected

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer Period: 0.5 s

// Timer1 Overflow Interrupt: On

(24)

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);

TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (1<<CS12) | (0<<CS11) | (0<<CS10);

TCNT1H=0x85;

TCNT1L=0xEE;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer2 Stopped

// Mode: Normal top=0xFF

// OC2 output: Disconnected

ASSR=0<<AS2;

TCCR2=(0<<PWM2) | (0<<COM21) | (0<<COM20) | (0<<CTC2) | (0<<CS22) | (0<<CS21) | (0<<CS20);

TCNT2=0x00;

OCR2=0x00;

(25)

TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (1<<TOIE1) | (0<<OCIE0) | (0<<TOIE0);

// External Interrupt(s) initialization

// INT0: On

// INT0 Mode: Falling Edge

// INT1: Off

// INT2: Off

GICR|=(0<<INT1) | (1<<INT0) | (0<<INT2);

MCUCR=(0<<ISC11) | (0<<ISC10) | (1<<ISC01) | (0<<ISC00);

MCUCSR=(0<<ISC2);

GIFR=(0<<INTF1) | (1<<INTF0) | (0<<INTF2);

// USART initialization

// USART disabled

UCSRB=(0<<RXCIE) | (0<<TXCIE) | (0<<UDRIE) | (0<<RXEN) | (0<<TXEN) | (0<<UCSZ2) | (0<<RXB8) | (0<<TXB8);

// Analog Comparator initialization

// Analog Comparator: Off

// The Analog Comparator's positive input is

// connected to the AIN0 pin

// The Analog Comparator's negative input is

// connected to the AIN1 pin

ACSR=(1<<ACD) | (0<<ACBG) | (0<<ACO) | (0<<ACI) | (0<<ACIE) | (0<<ACIC) | (0<<ACIS1) | (0<<ACIS0);

(26)

// ADC initialization

// ADC disabled

ADCSRA=(0<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (0<<ADPS1) | (0<<ADPS0);

// SPI initialization

// SPI disabled

SPCR=(0<<SPIE) | (0<<SPE) | (0<<DORD) | (0<<MSTR) | (0<<CPOL) | (0<<CPHA) | (0<<SPR1) | (0<<SPR0);

// TWI initialization

// TWI disabled

TWCR=(0<<TWEA) | (0<<TWSTA) | (0<<TWSTO) | (0<<TWEN) | (0<<TWIE);

// Bit-Banged I2C Bus initialization

// I2C Port: PORTC

// I2C SDA bit: 1

// I2C SCL bit: 0

// Bit Rate: 100 kHz

// Note: I2C settings are specified in the

// Project|Configure|C Compiler|Libraries|I2C menu.

i2c_init();

// DS1307 Real Time Clock initialization

(27)

// SQW/OUT pin state: 0

rtc_init(0,0,0);

// Global enable interrupts

#asm("sei")

while (1)

{

// Place your code here

p1_sts = iprom_read(p1_sts_addr);

p2_sts = iprom_read(p2_sts_addr);

p3_sts = iprom_read(p3_sts_addr);

p4_sts = iprom_read(p4_sts_addr);

p5_sts = iprom_read(p5_sts_addr);

p6_sts = iprom_read(p6_sts_addr);

d1_sts = iprom_read(d1_sts_addr);

d2_sts = iprom_read(d2_sts_addr);

d3_sts = iprom_read(d3_sts_addr);

d4_sts = iprom_read(d4_sts_addr);

d5_sts = iprom_read(d5_sts_addr);

d6_sts = iprom_read(d6_sts_addr);

demo_jam(); // untuk jam

(28)

if ((p1_sts == 0) & (p2_sts == 0) & (p3_sts == 0) & (p4_sts == 0) & (p5_sts == 0) & (p6_sts == 0)) page_empty_run();

if ((d1_sts == 0) & (d2_sts == 0) & (d3_sts == 0) & (d4_sts == 0) & (d5_sts == 0) & (d6_sts == 0)) anime_empty_run();

if (p1_sts == 1) page1run();

if (d1_sts == 1) demo1run();

if (p2_sts == 1) page2run();

if (d2_sts == 1) demo2run();

if (p3_sts == 1) page3run();

if (d3_sts == 1) demo3run();

if (p4_sts == 1) page4run();

if (d4_sts == 1) demo4run();

if (p5_sts == 1) page5run();

if (d5_sts == 1) demo5run();

if (p6_sts == 1) page6run();

if (d6_sts == 1) demo6run();

}

}

(29)

void page1run (void)

{

unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol, cnt;

unsigned int ee_addr;

bit txt;

pj_kol = pj_kolom;

m_idx = 0; // index moving lebar karakter

p_idx = 0; // index greeting

txt = 0;

ee_addr = page1_start;

while (1)

{

x_kar = iprom_read(ee_addr++); // ambil text dari ram text

if (x_kar == 0xaa) break;

txt = kar_check(x_kar);

if (txt == 1)

{

kol_idx = ascii2buff(x_kar);

p_idx ++;

(30)

}

}

/// /// ///

void page2run (void)

{

unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol;

unsigned int ee_addr;

bit txt;

pj_kol = pj_kolom;

m_idx = 0; // index moving lebar karakter

p_idx = 0; // index greeting

txt = 0;

ee_addr = page2_start;

while (1)

{ // ambil text dari flash

x_kar = iprom_read(ee_addr++); // ambil text dari ram text

if (x_kar == 0xaa) break;

txt = kar_check(x_kar);

if (txt == 1)

{

kol_idx = ascii2buff(x_kar);

p_idx ++;

}

(31)

}

/// /// ///

void page3run (void)

{

unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol;

unsigned int ee_addr;

bit txt;

pj_kol = pj_kolom;

m_idx = 0; // index moving lebar karakter

p_idx = 0; // index greeting

txt = 0;

ee_addr = page3_start;

while (1)

{ // ambil text dari flash

x_kar = iprom_read(ee_addr++); // ambil text dari ram text

if (x_kar == 0xaa) break;

txt = kar_check(x_kar);

if (txt == 1)

{

kol_idx = ascii2buff(x_kar);

p_idx ++;

}

}

(32)

/// /// ///

void page4run (void)

{

unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol;

unsigned int ee_addr;

bit txt;

pj_kol = pj_kolom;

m_idx = 0; // index moving lebar karakter

p_idx = 0; // index greeting

txt = 0;

ee_addr = page4_start;

while (1)

{ // ambil text dari flash

x_kar = iprom_read(ee_addr++); // ambil text dari ram text

if (x_kar == 0xaa) break;

txt = kar_check(x_kar);

if (txt == 1)

{

kol_idx = ascii2buff(x_kar);

p_idx ++;

}

}

(33)

/// /// ///

void page5run (void)

{

unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol;

unsigned int ee_addr;

bit txt;

pj_kol = pj_kolom;

m_idx = 0; // index moving lebar karakter

p_idx = 0; // index greeting

txt = 0;

ee_addr = page5_start;

while (1)

{ // ambil text dari flash

x_kar = iprom_read(ee_addr++); // ambil text dari ram text

if (x_kar == 0xaa) break;

txt = kar_check(x_kar);

if (txt == 1)

{

kol_idx = ascii2buff(x_kar);

p_idx ++;

}

}

}

(34)

void page6run (void)

{

unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol;

unsigned int ee_addr;

bit txt;

pj_kol = pj_kolom;

m_idx = 0; // index moving lebar karakter

p_idx = 0; // index greeting

txt = 0;

ee_addr = page6_start;

while (1)

{ // ambil text dari flash

x_kar = iprom_read(ee_addr++); // ambil text dari ram text

if (x_kar == 0xaa) break;

txt = kar_check(x_kar);

if (txt == 1)

{

kol_idx = ascii2buff(x_kar);

p_idx ++;

}

}

(35)

// demo1run

void demo1run (void)

{

unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly;

unsigned int ee_addr;

pj_kol = pj_kolom;

pj_dem = 0;

for (cnt = 0; cnt < pj_kol+1; cnt++)

{

x_kar = buff[cnt];

if (x_kar == 0x00) pj_dem++;

if (x_kar != 0x00) break;

}

pj_dem--;

geser_karakter(pj_dem/2,pj_kol); // centering demo text

// scroll down

for(cnt = 0; cnt< 8; cnt++) // sampai habis panjang baris

{

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

(36)

demo1_buff[idx] = demo1_buff[idx] << 1;

}

}

// scroll up

for(cnt = 0; cnt < 8; cnt++) // sampai habis panjang baris

{

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

demo1_buff[idx] = demo1_buff[idx] >> 1;

}

}

for (cnt = 0; cnt < pj_kol; cnt++) // sampai habis panjang kolom

{

demo1_buff[cnt] = buff[cnt]; // isi buffer demo dari buff text

}

}

// demo 2 run

void demo2run (void)

{

unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly;

(37)

pj_kol = pj_kolom;

//kol = 2 * pj_kolom;

dm_idx = 0; // isi buff dengan demo dari eeprom

kol_idx = 0;

pj_dem = 0;

ee_addr = demo2_start;

geser_karakter(pj_dem/2,pj_kol); // centering demo text

for(cnt = 0; cnt< (pj_kol+1); cnt++) // sampai habis panjang kolom

{

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

buff[pj_kol - idx] = buff[pj_kol - (idx+1)]; // geser kanan

}

}

}

//

void demo3run (void)

(38)

unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly;

unsigned int ee_addr;

pj_kol = pj_kolom;

//kol = 2 * pj_kolom;

geser_karakter(pj_dem/2,pj_kol); // centering demo text

for (cnt = 0; cnt < pj_kol; cnt++) // sampai habis panjang kolom

{

demo1_buff[cnt] = buff[cnt]; // isi buffer demo dari buff text

}

for(cnt = 0; cnt< 8; cnt++) // tampil sejenak sebelum scrolling

{

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (dly = 0; dly < 6; dly++) // delay tampil sesaat statis

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom_demo_1(pj_kol,ndx);

}

}

}

(39)

// geser kekiri dan kekanan

for(cnt = 0; cnt < pj_kol/2; cnt++) // sampai habis panjang baris

{

buff[(pj_kol/2)-cnt] = 0x00; //kanan

buff[((pj_kol/2) - 1)+cnt] = 0x00; //kiri

}

}

//

// demo4

void demo4run (void)

{

unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly;

unsigned int ee_addr;

pj_kol = pj_kolom;

//kol = 2 * pj_kolom;

pj_dem = 0;

for (cnt = 0; cnt < pj_kol+1; cnt++)

{

x_kar = buff[cnt];

(40)

if (x_kar != 0x00) break;

}

pj_dem--;

geser_karakter(pj_dem/2,pj_kol); // centering demo text

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (dly = 0; dly < 2; dly++) // delay tampil sesaat statis

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom_demo_1(pj_kol,ndx);

}

}

}

}

}

}

// demo 5

void demo5run (void)

{

unsigned char dm_idx, kol_idx, pj_dem, x_kar, pj_kol, cnt, idx, ndx, dly;

(41)

pj_kol = pj_kolom;

//kol = 2 * pj_kolom;

pj_dem = 0;

for (cnt = 0; cnt < pj_kol+1; cnt++)

{

x_kar = buff[cnt];

if (x_kar == 0x00) pj_dem++;

if (x_kar != 0x00) break;

}

pj_dem--;

geser_karakter(pj_dem/2,pj_kol); // centering demo text

for(cnt = 0; cnt< 8; cnt++) // tampil sejenak

{

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

demo1_buff[idx] = buff[idx]; // isi buffer demo dari buff text

}

}

(42)

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom_demo_1(pj_kol,ndx); // nyala

}

}

for(cnt = 0; cnt< pj_kol+1; cnt++) // sampai habis panjang kolom

{

buff[cnt] = 0x00;

}

for (dly = 0; dly < 50; dly++) // delay tampil sesaat statis

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom_demo_1(pj_kol,ndx); // nyala

}

}

}

// demo 6

void demo6run (void)

{

(43)

unsigned int ee_addr;

pj_kol = pj_kolom;

pj_dem = 0;

for (cnt = 0; cnt < pj_kol+1; cnt++)

{

x_kar = buff[cnt];

if (x_kar == 0x00) pj_dem++;

if (x_kar != 0x00) break;

}

pj_dem--;

geser_karakter(pj_dem/2,pj_kol); // centering demo text di buff

// tampil sesaat

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

for (dly = 0; dly < 6; dly++) // delay tampil sesaat statis

{

for (ndx = 0; ndx < 8; ndx ++) // satu baris

{

kirim_kolom(pj_kol,ndx); // dari buff

}

buff[idx] = buff[idx];

(44)

}

// hapus perbaris

ix = 0xfe;

iy = 0x01;

for (idx = 0; idx < 8; idx++)

{

for(cnt = 0; cnt < pj_kol; cnt++) // sampai habis panjang baris

{

buff[cnt+1] = buff[cnt+1] | iy;

buff[cnt] = buff[cnt] & ix ; // hapus dari 0 ke 7

}

ix = ix << 1;

iy = iy << 1;

}

}

void page_empty_run (void)

{

unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol;

bit txt;

pj_kol = pj_kolom;

m_idx = 0; // index moving lebar karakter

(45)

txt = 0;

while (1)

{ // ambil text dari flash

x_kar = page_empty[p_idx];

if (x_kar == 0xaa) break;

txt = kar_check(x_kar);

if (txt == 1)

{

kol_idx = ascii2buff(x_kar);

p_idx ++;

}

}

}

void anime_empty_run (void)

{

unsigned char m_idx, p_idx, x_kar, kol_idx, idx, ndx, pj_kol;

bit txt;

pj_kol = pj_kolom;

m_idx = 0; // index moving lebar karakter

p_idx = 0; // index greeting

txt = 0;

while (1)

{ // ambil text dari flash

(46)

if (x_kar == 0xaa) break;

txt = kar_check(x_kar);

if (txt == 1)

{

kol_idx = ascii2buff(x_kar);

p_idx ++;

}

}

}

// isi buffer demo waktu

void demo_jam (void)

{

unsigned char dm_idx, kol_idx, pj_demo, x_kar, pj_kol, cnt, idx, ndx, dly;

pj_kol = pj_kolom;

pj_demo = ((pj_kol - pj_demo)/2); //centering text

geser_karakter (pj_demo, pj_kol);

for(cnt = 0; cnt< pj_kol+1; cnt++) // sampai habis panjang kolom

{

dm_buff[cnt] = buff[cnt]; // isi buffer demo dari buff text

(47)

for(cnt = 0; cnt< 8; cnt++) // sampai habis panjang baris

{

for (idx = 0; idx < pj_kol; idx++) // satu kali tampil

{

dm_buff[idx] = dm_buff[idx] << 1;

}

}

}

unsigned char ascii2dis (unsigned char xkar)

{

unsigned char ckar,cindex, lebar, pj_kol;

pj_kol = pj_kolom;

switch (xkar)

{

case 'A': // 12

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'B':

{

(48)

geser_karakter(lebar,pj_kol);

}

break;

case 'C':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'D':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'E':

{

lebar = 8;

geser_karakter(lebar,pj_kol);

}

break;

case 'F':

{

lebar = 8;

geser_karakter(lebar,pj_kol);

(49)

break;

case 'G':

{

lebar = 8;

geser_karakter(lebar,pj_kol);

}

break;

case 'H':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'I':

{

lebar = 6;

geser_karakter(lebar,pj_kol);

}

break;

case 'J':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

(50)

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'L':

{

lebar = 8;

geser_karakter(lebar,pj_kol);

}

break;

case 'M':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

case 'N':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

case 'O':

{

(51)

geser_karakter(lebar,pj_kol);

}

break;

case 'P':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'Q':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'R':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'S':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

(52)

break;

case 'T':

{

lebar = 10;

geser_karakter(lebar,pj_kol);

}

break;

case 'U':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case 'V':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

case 'W':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

(53)

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

case 'Y':

{

lebar = 10;

geser_karakter(lebar,pj_kol);

}

break;

case 'Z':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

// tanda tanda baca

case ',':

{

lebar = 5;

geser_karakter(lebar,pj_kol);

}

break;

case '.':

(54)

lebar = 4;

geser_karakter(lebar,pj_kol);

}

break;

case '/':

{

lebar = 10;

geser_karakter(lebar,pj_kol);

}

break;

case ';':

{

lebar = 5;

geser_karakter(lebar,pj_kol);

}

break;

case ':':

{

lebar = 4;

geser_karakter(lebar,pj_kol);

}

break;

case 0x27:

{

lebar = 5;

(55)

}

break;

case '-':

{

lebar = 8;

geser_karakter(lebar,pj_kol);

}

break;

case '+':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

case ' ':

{

lebar = 4;

geser_karakter(lebar,pj_kol);

}

break;

case '>':

{

lebar = 8;

geser_karakter(lebar,pj_kol);

}

(56)

case '<':

{

lebar = 10;

geser_karakter(lebar,pj_kol);

}

break;

case '?':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

case 0x0b:

{

lebar = 8;

geser_karakter(lebar,pj_kol);

}

break;

case 0x0c:

{

lebar = 10;

geser_karakter(lebar,pj_kol);

}

break;

case '=':

(57)

lebar = 8;

geser_karakter(lebar,pj_kol);

}

break;

case '!':

{

lebar = 4;

geser_karakter(lebar,pj_kol);

}

break;

case '@':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

case '#':

{

lebar = 13;

geser_karakter(lebar,pj_kol);

}

break;

case '$':

{

lebar = 10;

(58)

}

break;

case '%':

{

lebar = 10;

geser_karakter(lebar,pj_kol);

}

break;

case '^':

{

lebar = 11;

geser_karakter(lebar,pj_kol);

}

break;

case '&':

{

lebar = 10;

geser_karakter(lebar,pj_kol);

}

break;

case '~':

{

lebar = 12;

geser_karakter(lebar,pj_kol);

}

(59)

case '*':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case '(':

{

lebar = 6;

geser_karakter(lebar,pj_kol);

}

break;

case ')':

{

lebar = 6;

geser_karakter(lebar,pj_kol);

}

break;

case '{':

{

lebar = 6;

geser_karakter(lebar,pj_kol);

}

break;

case '}':

(60)

lebar = 6;

geser_karakter(lebar,pj_kol);

}

break;

case '[':

{

lebar = 13;

geser_karakter(lebar,pj_kol);

}

break;

case ']':

{

lebar = 13;

geser_karakter(lebar,pj_kol);

}

break;

// angka

case '1':

{

lebar = 6;

geser_karakter(lebar,pj_kol);

}

break;

case '2':

{

(61)

geser_karakter(lebar,pj_kol);

}

break;

case '3':

{

lebar = 8;

geser_karakter(lebar,pj_kol);

}

break;

case '4':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case '5':

{

lebar = 8;

geser_karakter(lebar,pj_kol);

}

break;

case '6':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

(62)

break;

case '7':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case '8':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case '9':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

case '0':

{

lebar = 9;

geser_karakter(lebar,pj_kol);

}

break;

(63)

///

//// converting text from eeprom to text buffer

// unsigned char eeprom2textbuffer (unsigned char xkar)

void kirim_kolom (unsigned char jkol, unsigned char nbar) // jkol = jumlah kolom, nbar = nomor baris

{

unsigned char kar, pos, i;

bit xbit;

kar = pos << nbar;

for (i=0x00; i<0x08; i++)

{

xbit=kar & 0x01;

if (xbit) sdt = 1;

kar = kar >> 1;

}

soe = 1;

}

(64)

{

unsigned char kar, pos, i;

bit xbit;

pos = 0x01;

soe = 0;

for (i=0x00; i<jkol; i++)

{

xbit= ((dm_buff[i] >> nbar) & 0x01);

if (xbit) sdt = 1;

}

kar = pos << nbar;

soe = 1; 

Referensi

Dokumen terkait

Hal ini dapat diartikan bahwa jika kepemimpinan menjadi lebih baik maka akan menurunkan tingkat turnover intention atau keinginan untuk berpindah dan keluar

Skripsi yang berjudul “Mediasi Penal dalam Penyelesaian Perkara Kekerasan dalam Rumah Tangga (KDRT) Perspektif Filsafat Hukum” ini merupakan penelitian yang menjawab

Untuk mengatasi permasalahan pendidikan yang dilihat dari kondisi anak-anak tenaga kerja Indonesia yang berada di Sabah, pemerintah Indonesia melakukan upaya-upaya dalam

Negelkerke R-square yang dihasilkan adalah sebesar 0,061 hasil tersebut menunjukan bahwa kemahalan harga saham, likuiditas perusahaan, profitabilitas dan ukuran

Berdasarkan tabel 1.9 di atas, dapat diketahui sebagian besar jawaban responden menyatakan sangat setuju dengan jumlah 13 responden (13%), kemudian jawaban responden

Mengetahui kualitas hidup anak dengan thalassemia mayor di Pusat Thalassemia Departemen Ilmu Kesehatan Anak FKUI-RSCM serta faktor-faktor yang berhubungan.. Penelitian

Dimana relevansi studi tentang perilaku organisasi tersebut dengan penelitian ini adalah karena pengklasifikasi merupakan bagian dari suatu organisasi dan menjalan proses

Sebelumnya Mohan dan Tiweeri (1999) telah melakukan studi yang mengaitkan antara isu lingkungan, angkutan umum, dan keamanan angkutan tidak bermotor dalam suatu sistem transportasi