soru 1
#include <16F887.h>
#device adc=10
#FUSES NOWDT,NOPROTECT,NOLVP,NOPUT,NOBROWNOUT,NOMCLR,NOCPD
#use delay(clock=8000000)
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
// Port B'nin pull-up dirençlerini etkinleştir
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
// Port B'nin 4-7 bitlerini giriş olarak ayarla
set_tris_b(0xF0);
while(true)
{
// Port B değişim kesmesi kontrol et
if(int_RB)
{
// Port B'nin 4-7 bitlerini oku
int portb = input_b() >> 4;
// Satır pinlerini kontrol et
if(portb & 0x01)
// Satır A basıldı
// ...
else if(portb & 0x02)
// Satır B basıldı
// ...
else if(portb & 0x04)
// Satır C basıldı
// ...
else if(portb & 0x08)
// Satır D basıldı
// ...
// Sütun pinlerini kontrol et
if(input(PIN_B0))
// Sütun 1 basıldı
// ...
else if(input(PIN_B1))
// Sütun 2 basıldı
// ...
else if(input(PIN_B2))
// Sütun 3 basıldı
// ...
// Port B değişim kesmesini sıfırla
clear_interrupt(INT_RB);
}
}
}
2 . cevap
#include <16F887.h>
#device adc=10
#FUSES NOWDT,NOPROTECT,NOLVP,NOPUT,NOBROWNOUT,NOMCLR,NOCPD
#use delay(clock=8000000)
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
// Kullanılmayan pinler çıkış olarak ayarla
set_tris_a(0b11111010);
set_tris_c(0b11111011);
set_tris_d(0b11111101);
// Başlangıçta LED'ler sönük
output_c(0b11111011);
// Butonların pull-down dirençlerini etkinleştir
setup_pullup(false, PULLUP_PORTA | PULLUP_PORTD);
while(true)
{
// Buton1'e basıldıysa
if(!input(PIN_A1))
{
// Led1'i durumunu değiştir
if(output_c & 0b0000001)
output_c(0b11111011);
else
output_c(0b11111010);
}
// Buton2'ye basıldıysa
if(!input(PIN_D4))
{
// Led2 yan
output_c(0b11111001);
}
}
}
3. soru
#include <16F887.h>
#device adc=10
#FUSES NOWDT,NOPROTECT,NOLVP,NOPUT,NOBROWNOUT,NOMCLR,NOCPD
#use delay(clock=8000000)
unsigned int16 adc_value1, adc_value2, adc_value3;
void main()
{
setup_adc_ports(AN0_TO_AN5);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
// Pinleri çıkış olarak ayarlayın
set_tris_c(0b11111001);
// PWM sinyallerini oluşturalım
setup_CCP1(CCP_PWM);
setup_CCP2(CCP_PWM);
// PWM frekansını ayarlayın
setup_timer_2(T2_DIV_BY_16, 255, 1);
//
Lcd ekranının pinlerini ayarlayın (kod yazılmamış)
// ...
while(true)
{
// Potansiyometre 1 için ADC değerini okuyun
adc_value1 = read_adc(0);
// Potansiyometre 2 için ADC değerini okuyun
adc_value2 = read_adc(4);
// Potansiyometre 3 için ADC değerini okuyun
adc_value3 = read_adc(5);
// Potansiyometre 1 değerini PWM sinyalinde kullanın
set_pwm1_duty(adc_value1);
// Potansiyometre 2 değerini PWM sinyalinde kullanın
set_pwm2_duty(adc_value2);
// LCD ekrana değerleri yazdır
printf(lcd_putc,"\fDeger1: %u Deger2: %u Deger3: %u", adc_value1, adc_value2, adc_value3);
delay_ms(100);
}
}
---------------------------------------------------------------------------------------------------------
3 ün 2 . cevabı
#include <16F887.h>
#device adc=10
#FUSES NOWDT,NOPROTECT,NOLVP,NOPUT,NOBROWNOUT,NOMCLR,NOCPD
#use delay(clock=8000000)
#include <LCD.c>
void main() {
setup_adc_ports(sAN4 | sAN5 | sAN6);
setup_adc(ADC_CLOCK_INTERNAL);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
setup_CCP1(CCP_PWM);
setup_CCP2(CCP_PWM);
set_pwm1_duty(0);
set_pwm2_duty(0);
setup_timer_2(T2_DIV_BY_16, 255, 1);
lcd_init();
lcd_putc("\f");
while(true) {
int adcValue1 = read_adc();
lcd_gotoxy(7, 1);
printf(lcd_putc, "Deger1: %Ld", adcValue1);
set_pwm1_duty(adcValue1);
delay_ms(50);
int adcValue2 = read_adc();
lcd_gotoxy(7, 2);
printf(lcd_putc, "Deger2: %Ld", adcValue2);
set_pwm2_duty(adcValue2);
delay_ms(50);
int adcValue3 = read_adc();
lcd_gotoxy(7, 3);
printf(lcd_putc, "Deger3: %Ld", adcValue3);
delay_ms(50);
}
}
uğraşmadığımı söylerken düşünmen gerekir uğraşıyorum fakat hata alıyorum gelen cevaplarla kendi cevaplarımı karşılaştımak istiyordum bilmeden yorum yapmanız sizin kötü düşüncenizi gösterir