anti_cheist
Üye
- Katılım
- 31 Ocak 2011
- Mesajlar
- 29
- Puanları
- 1
- Yaş
- 34
/******************************************************
PROJE
*******************************************************/
#include <16f877.h> // Kullanılacak denetleyicinin başlık dosyası tanıtılıyor.
// Denetleyici konfigürasyon ayarları
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000) // Gecikme fonksiyonu için kullanılacak osilatör frekansı belirtiliyor.
#use fast_io(b) //Port yönlendirme komutları B portu için geçerli
#use fast_io(d) //Port yönlendirme komutları D portu için geçerli
#use fast_io(c) //Port yönlendirme komutları C portu için geçerli
#define use_portb_lcd TRUE // LCD B portuna bağlı
#include <lcd.c> // lcd.c dosyası tanıtılıyor
#byte portb=0x06 // B portu "portb" ismine eşitleniyor.
#define sut1 pin_d0 // sut1 ifadesi pin_d0 ifadesine eşitleniyor
#define sut2 pin_d1 // sut2 ifadesi pin_d1 ifadesine eşitleniyor
#define sut3 pin_d2 // sut3 ifadesi pin_d2 ifadesine eşitleniyor
#define sat1 pin_d4 // sat1 ifadesi pin_d4 ifadesine eşitleniyor
#define sat2 pin_d5 // sat2 ifadesi pin_d5 ifadesine eşitleniyor
#define sat3 pin_d6 // sat3 ifadesi pin_d6 ifadesine eşitleniyor
#define sat4 pin_d7 // sat4 ifadesi pin_d7 ifadesine eşitleniyor
long int i,j;
int8 kesme=0; // Tamsayı tipinde 16 bitlik değişken tanımlanıyor
char tus=0; // karakter tipinde değişken tanımlanıyor
//*********** Keypad Tarama Fonksiyonu *********
char keypad_oku() // Fonksiyon ismi
{
output_d(0x00); // D portu çıkışı sıfırlanıyor
output_high(sat1); // 1. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=1; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=2; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=3; }
output_low(sat1); // 1. satır lojik-0 yapılıyor
output_high(sat2); // 2. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=4; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=5; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=6; }
output_low(sat2); // 2. satır lojik-0 yapılıyor
output_high(sat3); // 3. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=7; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=8; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=9; }
output_low(sat3); // 3. satır lojik-0 yapılıyor
output_high(sat4); // 4. satır lojik-1 yapılıyor
if (input(sut1)) // 1. sütun okunuyor
{ delay_ms(20); tus=0xE; }
if (input(sut2)) // 2. sütun okunuyor
{ delay_ms(20); tus=0; }
if (input(sut3)) // 3. sütun okunuyor
{ delay_ms(20); tus=0xF; }
output_low(sat4); // 3. satır lojik-0 yapılıyor
return tus; // Fonksiyon "tus" değeri ile geri döner
}
//********** ANA PROGRAM FONKSİYONU*******
void main ( )
{
setup_psp(PSP_DISABLED); // PSP birimi devre dışı
setup_timer_2(T2_DISABLED,0,1); // T2 zamanlayıcısı devre dışı
setup_adc_ports(NO_ANALOGS); // ANALOG giriş yok
setup_adc(ADC_OFF); // ADC birimi devre dışı
set_tris_b(0x00); // B portu komple çıkış
set_tris_d(0x0F); // Yüksek değerlikli 4 bit çıkış, düşük değerlikli 4 bit giriş
set_tris_c(0x01); // RC0 pini giriş
setup_timer_1(T1_EXTERNAL | T1_DIV_BY_2); // Timer1 ayarları yapılıyor
set_timer1(65530); // TMR1 değeri belirleniyor
enable_interrupts(INT_timer1); // int_timer1 kesmesini aktif yapar
enable_interrupts(GLOBAL); // Aktif edilen kesmelere izin ver
lcd_init(); // LCD hazırlanıyor
printf(lcd_putc,"Hosgeldiniz");
delay_ms(2000);
printf(lcd_putc,"\n091202061\nSehriyar OZEN");
delay_ms(2000);
printf(lcd_putc,"\fBasilan Tus="); // LCD'ye string yazdırılıyor
while(1) // Sonsuz döngü
{
lcd_gotoxy(13,1); // İmleç 13.sütun, 1.satıra konumlandırılıyor
printf(lcd_putc,"\ %lu ",j);
while(1) {
if (!input_b()==0)
{
j=input_b();}
if(j==10){
j=0;}
while (!input_d()==0) ;
{ i=(i*10)+j;}
if(j==11){
i=0;}
lcd_gotoxy(13,1);
portb=keypad_oku();
printf(lcd_putc,"%d",keypad_oku());
printf(lcd_putc,"\ %lu ",i);
}}
}
bu arada yazılımdan da anlaşılacağı üzere keypad d portuna, lcd de b portuna bağlı.
gerçekte değil kastettiğim isiiteki bağlantı.S.A.
gerçektede bağlımı yoksa isis şemandamı bağlı?
S.A.
Neden b portunu kullanarak CCS C nin kbd.c driverini kullanmıyorsun. Çalışan sağlam bir program.
#include<16f877.h>
#fuses XT, NOWDT, NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT, NODEBUG,NOCPD
#use delay (clock=4000000)
#use fast_io(b)
#use fast_io(d)
#define use_portd_lcd TRUE
#define use_portb_kbd
#include <lcd.c>
#include <kbd.c>
#define sut1 pin_b0
#define sut2 pin_b1
#define sut3 pin_b2
#define sat1 pin_b3
#define sat2 pin_b4
#define sat3 pin_b5
#define sat4 pin_b6
#int_RTCC
void RTCC_isr(void)
{
}
char karakter[5];
char keytemp;
int sayac=0;
unsigned int16 sayi=0;
unsigned int16 hesapla(unsigned char* key,unsigned char uzunluk)
{
static unsigned int16 temp=0;
unsigned char i;
unsigned int16 carpan=1;
for(i=uzunluk;i>=1;i--)
{
temp+=key[i-1]*carpan;
carpan=(unsigned int16)carpan*10;
}
return temp;
}
char tus=0;
char keypad_oku()
{
output_d(0x00);
tus='\0';
delay_ms(100);
output_high(sat1);
if(input(sut1))
{ delay_ms(20); tus=1;}
if(input(sut2))
{delay_ms(20); tus=2;}
if(input(sut3))
{delay_ms(20); tus=3;}
output_low(sat1);
output_high(sat2);
if(input(sut1))
{delay_ms(20); tus=4;}
if(input(sut2))
{delay_ms(20); tus=5;}
if(input(sut3))
{delay_ms(20); tus=6;}
output_low(sat2);
output_high(sat3);
if(input(sut1))
{delay_ms(20); tus=7;}
if(input(sut2))
{delay_ms(20); tus=8;}
if(input(sut3))
{delay_ms(20); tus=8;}
output_low(sat3);
output_high(sat4);
if(input(sut1))
{delay_ms(20); tus=0xE;}
if(input(sut2))
{delay_ms(20); tus=0;}
if(input(sut3))
{delay_ms(20); tus=0XF;}
output_low(sat4);
return tus;
}
void main ()
{
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_d(0x01);
set_tris_b(0x0f);
lcd_init();
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
printf(lcd_putc,"\f MERHABA");
while(1)
{
do
{
keytemp=keypad_oku();
if(keytemp!='\0')
{
karakter[sayac]=keytemp-48;
printf(lcd_putc,"*");
sayac++;
}
}while(keytemp!='#');
sayi=hesapla(karakter,sayac-1);
printf(lcd_putc,"\f%LU",sayi);
while(true)
{
}
}
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?