KETERANGAN :
1. 8
LED
2. IC
Atmega 16
3. Ground
Arsitektur ATMEGA16
Mikrokontroler ini menggunakan arsitektur Harvard yang
memisahkan memori program dari memori data, baik bus alamat maupun bus data,
sehingga pengaksesan program dan data dapat dilakukan secara bersamaan
(concurrent).
Secara garis besar mikrokontroler ATMega16 terdiri dari :
1. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16Mhz.
Secara garis besar mikrokontroler ATMega16 terdiri dari :
1. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16Mhz.
2. Memiliki kapasitas Flash memori 16Kbyte, EEPROM 512 Byte,
dan SRAM 1Kbyte
3. Saluran I/O 32 buah, yaitu Port A, Port B, Port C, dan
Port D.
4. CPU yang terdiri dari 32 buah register.
5. User interupsi internal dan eksternal
6. Port antarmuka SPI dan Port USART sebagai komunikasi serial
7. Fitur Peripheral
4. CPU yang terdiri dari 32 buah register.
5. User interupsi internal dan eksternal
6. Port antarmuka SPI dan Port USART sebagai komunikasi serial
7. Fitur Peripheral
• Dua buah 8-bit timer/counter dengan
prescaler terpisah dan mode compare
• Satu buah 16-bit timer/counter dengan prescaler terpisah, mode compare, dan mode capture
• Real time counter dengan osilator tersendiri
• Empat kanal PWM dan Antarmuka komparator analog
• 8 kanal, 10 bit ADC
• Byte-oriented Two-wire Serial Interface
• Watchdog timer dengan osilator internal
• Satu buah 16-bit timer/counter dengan prescaler terpisah, mode compare, dan mode capture
• Real time counter dengan osilator tersendiri
• Empat kanal PWM dan Antarmuka komparator analog
• 8 kanal, 10 bit ADC
• Byte-oriented Two-wire Serial Interface
• Watchdog timer dengan osilator internal
SCRIPTING :
Code Vision AVR
#include <mega16.h>
#include <delay.h>
// Declare your global variables
here
void main(void)
{
// Declare your local variables
here
// Input/Output Ports
initialization
// Port A 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
PORTA=0x00;
DDRA=0xFF;
// Port B initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In
Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T
State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
while (1)
{
// Place your code here
PORTA.0=0;
delay_ms(200);
PORTA.0=1;
delay_ms(200);
PORTA.0=0;
delay_ms(0);
PORTA.1=1;
delay_ms(200);
PORTA.1=0;
delay_ms(0);
PORTA.2=1;
delay_ms(200);
PORTA.2=0;
delay_ms(0);
PORTA.3=1;
delay_ms(200);
PORTA.3=0;
delay_ms(0);
PORTA.4=1;
delay_ms(200);
PORTA.4=0;
delay_ms(0);
PORTA.5=1;
delay_ms(200);
PORTA.5=0;
delay_ms(0);
PORTA.6=1;
delay_ms(200);
PORTA.6=0;
delay_ms(0);
PORTA.7=1;
delay_ms(200);
PORTA.7=0;
delay_ms(0);
PORTA.7=1;
delay_ms(200);
PORTA.0=1;
delay_ms(200);
PORTA.0=0;
delay_ms(0);
PORTA.1=1;
delay_ms(200);
PORTA.1=0;
delay_ms(0);
PORTA.2=1;
delay_ms(200);
PORTA.2=0;
delay_ms(0);
PORTA.3=1;
delay_ms(200);
PORTA.3=0;
delay_ms(0);
PORTA.4=1;
delay_ms(200);
PORTA.4=0;
delay_ms(0);
PORTA.5=1;
delay_ms(200);
PORTA.5=0;
delay_ms(0);
PORTA.6=1;
PORTA.0=1;
delay_ms(200);
PORTA.0=0;
delay_ms(0);
PORTA.1=1;
delay_ms(200);
PORTA.1=0;
delay_ms(0);
PORTA.2=1;
delay_ms(200);
PORTA.2=0;
delay_ms(0);
PORTA.3=1;
delay_ms(200);
PORTA.3=0;
delay_ms(0);
PORTA.4=1;
delay_ms(200);
PORTA.4=0;
delay_ms(0);
PORTA.5=1;
delay_ms(200);
PORTA.0=1;
delay_ms(200);
PORTA.0=0;
delay_ms(0);
PORTA.1=1;
delay_ms(200);
PORTA.1=0;
delay_ms(0);
PORTA.2=1;
delay_ms(200);
PORTA.2=0;
delay_ms(0);
PORTA.3=1;
delay_ms(200);
PORTA.3=0;
delay_ms(0);
PORTA.4=1;
delay_ms(200);
PORTA.0=1;
delay_ms(200);
PORTA.0=0;
delay_ms(0);
PORTA.1=1;
delay_ms(200);
PORTA.1=0;
delay_ms(0);
PORTA.2=1;
delay_ms(200);
PORTA.2=0;
delay_ms(0);
PORTA.3=1;
delay_ms(200);
PORTA.0=1;
delay_ms(200);
PORTA.0=0;
delay_ms(0);
PORTA.1=1;
delay_ms(200);
PORTA.1=0;
delay_ms(0);
PORTA.2=1;
delay_ms(200);
PORTA.0=0;
delay_ms(200);
PORTA.0=1;
delay_ms(200);
PORTA.0=0;
delay_ms(0);
PORTA.1=1;
delay_ms(200);
PORTA.0=0;
delay_ms(200);
PORTA.0=1;
delay_ms(200);
PORTA.0=1;
delay_ms(150);
PORTA.1=1;
delay_ms(150);
PORTA.2=1;
delay_ms(150);
PORTA.3=1;
delay_ms(150);
PORTA.4=1;
delay_ms(150);
PORTA.5=1;
delay_ms(150);
PORTA.6=1;
delay_ms(150);
PORTA.7=1;
delay_ms(150);
PORTA.0=0;
delay_ms(0);
PORTA.1=0;
delay_ms(0);
PORTA.2=0;
delay_ms(0);
PORTA.3=0;
delay_ms(0);
PORTA.4=0;
delay_ms(0);
PORTA.5=0;
delay_ms(0);
PORTA.6=0;
delay_ms(0);
PORTA.7=0;
delay_ms(0);
}
}
Keterangan Scripting
PORTA.0=0 berarti port dalam
posisi mati.
PORTA.0=1 berarti port dalam
posisi hidup.
Delay_ms berarti jeda untuk
membuat led kelap-kelip.
CARA KERJA RANGKAIAN :
1. Delapan
Led menyala secara bergantian, misal dari kanan ke kiri.
2. Pada
saat led ke delapan led akan menyala dan menyimpan daya.
3. Led
mulai pertama akan menyala secara
bergantian dan pada saat sampai ke led ke tujuh maka led akan menyala dan
menyimpan daya seperti led ke delapan
4. Led
akan menyala lagi secara berurutan, pada led ke enam led akan menyala dan
menyimpan daya. Led menyala bersama dengan led ke tujuh dan ke delapan.
5. Led
akan menyala lagi secara berurutan, pada led ke lima led akan menyala dan
menyimpan daya.
6. Led
akan menyala lagi secara berurutan, pada led ke empat led akan menyala dan
menyimpan daya.
7. Led
akan menyala lagi secara berurutan, pada led ke tiga akan menyala dan menyimpan
daya.
8. Led
akan menyala lagi secara berurutan, pada led ke dua akan menyala dan menyimpan
daya.
9. Led
akan menyala lagi secara berurutan, pada led kesatu akan menyala dan menyimpan
daya.
10. Semua
led akan menyala bersama dan memiliki jeda.
11. Semua
led akan mati dan memulai dari awal tadi.
kl bisa disertai link youtube-nya donk biar bisa liat
ReplyDelete