1. Rancang lah program untuk menghidukan LED pada PORTC.1, ketika push button pada PORTC.0 ditekan. PORTC.0 diset sebagai input dengan mode pullup.
2. Rancanglah sebuah program interrupt eksternal dengan menggunakan mikrokontroller ATMEGA 16, dengan ketentuan:
a) Sumber interrupt berasal dari interrupt eksternal 1 Interrupt Sense Control (ISC) dengan mode Falling Edge.
b) Setiap interrupt terjadi maka program akan menyalakan LED pada PORTC.2
3. Ulangi soal nomor 2 dengan ISC any logical change.
Jawab :
1. Rancang lah program untuk menghidukan LED pada PORTC.1, ketika push
button pada PORTC.0 ditekan. PORTC.0 diset sebagai input dengan mode pullup.
Jawab :
#include <mega16.h>
void main (void){
DDRC=0x02;//0b00000010 led pin c 1
PORTC=0x01;//0b00000001 pb pin c 0 pull up
while(1){
if(!(PINC&0x01)){
PORTC=0x02;
}
else{
PORTC=0x00;
}
}
}
2. Rancanglah sebuah program interrupt eksternal dengan
menggunakan mikrokontroller ATMEGA 16, dengan ketentuan :
a) Sumber interrupt berasal dari interrupt eksternal 1 Interrupt Sense
Control (ISC) dengan mode Falling Edge.
b) Setiap interrupt terjadi maka program akan menyalakan LED
pada PORTC.2
Jawab :
a. Tanpa menggunakan pb dan led sesuai
soal
//Falling edge
#include <io.h> //mengaktifkan library input output
#include <mega16.h> // mengaktifkan library atmega
16 void main(void)
{PORTD=(1<<PORTD3);//PORT
untuk
int1
sesuai
datasheet MCUCR =(1<<ISC11);//menggunakan metode
falling edge GICR = (1<<INT1); //menggunakan INT1
#asm("sei");//mengatifkan global interrupt
while (1)
{
// Please write your application code here
}
}
#pragma vector=3
interrupt void penting (void){
}
b. Dengan pb dan led sesuai soal
//Falling edge
#include <io.h> //mengaktifkan library input output
#include <mega16.h> // mengaktifkan library atmega 16
#include <delay.h> // mengaktifkan library delay agar bisa menggunakan tunda
void main(void)
{
DDRC=(1<<DDC2) ; //port 2 sebagai keluaran
PORTD=(1<<PORTD3);//PORT untuk int1 sesuai datasheet
MCUCR =(1<<ISC11);//menggunakan metode falling edge
GICR = (1<<INT1); //menggunakan INT1
#asm("sei");//mengatifkan global interrupt
while (1)
{
// Please write your application code here}
}
#pragma vector=3
interrupt void penting
(void){ PORTC=0x04;//0b00000100 membuat port c
2 HIGH delay_ms(2000);// tunda selama dua detik
PORTC=0x00; // membuat semua port c LOW
}
3. Ulangi soal nomor 2 dengan ISC any logical change.
Jawab :
a. Tanpa pb dan led sesuai soal
//any logical change
#include <io.h> //mengatifkan library input output
#include <mega16.h> // mengaktifkan library atmega 16
void main(void)
{
PORTD=(1<<PORTD3);//PORT untuk int1 sesuai datasheet
MCUCR =(1<<ISC10);//menggunakan metode any logical
change GICR = (1<<INT1); //menggunakan INT1
#asm("sei");//mengatifkan global interrupt while (1)
{
// Please write your application code here
}
}
#pragma vector=3
interrupt void penting (void){
}
b. Dengan pb dan LED sesuai
soal //any logical change
#include <io.h> //mengatifkan library input output
#include <mega16.h> // mengaktifkan library atmega 16#include <delay.h> // mengaktifkan library delay agar bisa menggunakan tunda
void main(void)
{
DDRC=(1<<DDC2) ; //port 2 sebagai keluaran
PORTD=(1<<PORTD3);//PORT untuk int1 sesuai datasheet
MCUCR =(1<<ISC10);//menggunakan metode any logical
change GICR = (1<<INT1); //menggunakan INT1
#asm("sei");//mengatifkan global interrupt
while (1)
{
// Please write your application code here
}
}
#pragma vector=3
interrupt void penting (void){
PORTC^=0x04;//0b00000100
delay_ms(100);
}
No comments:
Post a Comment