Professional Documents
Culture Documents
Landasan teori
Salah satu metode komunikasi data pada mikrokontroller adalah dengan menggunakan lebar pulsa.
Setiap data yang dikirim, memiliki lebar pulsa yang berbeda-beda.
Illustrasi:
= data ‘0’
50% 50%
= data ‘1’
51% 49%
Dst.
a. Kode pengirim
/*****************************************************
http://www.hpinfotech.com
Project :
Version :
Date : 05/01/2011
Author :
Company :
Comments:
Chip type : ATmega8535
*****************************************************/
#include <mega8535.h>
#include <stdio.h>
#include <delay.h>
void satu()
data = 1;
void dua()
data = 2;
void tiga()
data = 3;
void empat()
data = 4;
void lima()
{
data = 5;
void enam()
data = 6;
void tujuh()
data = 7;
void delapan()
data = 8;
void sembilan()
data = 9;
void bintang()
data = 30;
void nol()
data = 0;
void pagar()
data = 34;
void main(void)
{
// Declare your local variables here
// Port A initialization
PORTA=0x00;
DDRA=0x00;
// Port B initialization
PORTB=0x00;
DDRB=0x08;
// Port C initialization
PORTC=0x00;
DDRC=0xF0;
// Port D initialization
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
TCNT0=0x00;
// Timer/Counter 1 initialization
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
PORTC = 255;
while (1)
mulai:PORTC.4 =0;
PORTC.5 =1;
PORTC.6 =1;
PORTC.7 =1;
if (PINC.1 == 0)
satu();
//tampil();
}
if (PINC.2 == 0)
dua();
//tampil();
if (PINC.3 == 0)
tiga();
//tampil();
PORTC.4 =1;
PORTC.5 =0;
PORTC.6 =1;
PORTC.7 =1;
if (PINC.1 == 0)
empat();
//tampil();
if (PINC.2 == 0)
lima();
//tampil();
if (PINC.3 == 0)
enam();
//tampil();
PORTC.4 =1;
PORTC.5 =1;
PORTC.6 =0;
PORTC.7 =1;
if (PINC.1 == 0)
tujuh();
//tampil();
if (PINC.2 == 0)
delapan();
//tampil();
if (PINC.3 == 0)
sembilan();
//tampil();
PORTC.4 =1;
PORTC.5 =1;
PORTC.6 =1;
PORTC.7 =0;
if (PINC.1 == 0)
bintang();
//tampil();
if (PINC.2 == 0)
//nol();
//tampil();
if (PINC.3 == 0)
pagar();
//tampil();
OCR0=data;
};
b. Kode penerima
/*****************************************************
http://www.hpinfotech.com
Project :
Version :
Date : 05/01/2011
Author :
Company :
Comments:
#include <mega32.h>
#include <delay.h>
#include <stdio.h>
#asm
#endasm
#include <lcd.h>
void count_up_kompas(void)
//TCCR1A=0b00000000;
TCCR1B=0b00000011;
do
while((PIND.3)!=0);
do
}
while((PIND.3)==0);
TCNT1=0;
count_up_kompas();
do
while((PIND.3)!=0);
count_value=TCNT1;
return count_value;
void main(void)
//19233
// Port A initialization
PORTA=0xFF;
DDRA=0xFF;
// Port B initialization
PORTB=0xFF;
DDRB=0xFF;
// Port C initialization
DDRC=0xFF;
// Port D initialization
PORTD=0xFF;
DDRD=0x00;
// Timer/Counter 0 initialization
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
TIMSK=0x00;
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
lcd_clear();
lcd_gotoxy(0,0);
pwm=0;
while (1)
lcd_clear();
lcd_gotoxy(0,0);
pwm=baca_pwm();
sprintf(buff,"data: %d",pwm/2);
//sprintf(buff,"data: %d",PINA);
lcd_puts(buff);
//lcd_putsf("test");
delay_ms(50);
};