0-999 ileri-geri sayıcı kodu (C dili)

proteusDev

Üye
Katılım
2 May 2020
Mesajlar
4
Puanları
1
Yaş
27
Verilen donanım için birler basamağını D portunda, onlar basamağını C portunda, yüzler basamağını B portunda sayacak şekilde gerekli kodu C compiler üzerinde yazınız. Ayrıca pin_a0 ile sayma işleminin yönü düzenlensin. Eğer pin_a0=1 ise ileri saysın, tersi durumunda geri saysın.

Not: Portların 74LS48 kodlayıcısına farklı pinlerden bilgi gönderdiğine dikkat ediniz.


Böyle bir ödevim var 03.05.2020 - 21:00' a kadar vaktim var. Yardımcı olabilirseniz çok sevinirim.
(Kod C dilinde PIC C Compiler'da yazılacak)
 

Ekli dosyalar

  • ileriGeriSayaci.rar
    17.7 KB · Görüntüleme: 45
  • Screenshot_1.png
    Screenshot_1.png
    216.3 KB · Görüntüleme: 50
En son yazdığım kod budur fakat decoder olmasa çalışıyor. Decoderli programlamayı bilmiyorum.
Kod:
int a;

int count = 0;

int digit0, digit1, digit2 = 0;



void main(){

set_tris_b(0x00);

output_b(0x00);

set_tris_c(0x00);

output_c(0x00);

set_tris_d(0x00);

output_d(0x00);



while(TRUE){

a =input(pin_a0);



digit0 = count % 100;

digit1 = count % 10;

digit2 = count / 10;



output_b(digit0);

output_c(digit1);

output_d(digit2);

delay_ms(250);



if(a==1)

{count++;}

if(a==0)

{count--;}



if(count==100)

{count =0;}

if(count == -1)

{count = 99;}



}



}
 
Moderatör tarafında düzenlendi:
output_b(digit0);
output_c(digit1);
output_d(digit2);
PorC ye C2 pininden başlanarak decoder entrgre bağlanmış
bu yüzden değeri 2 sağa kaydırıp göndermek lazım:
Kod:
output_c(digit1>>2);

PortD ise D4 pininden başlanmış yani 4 defa sağa kaydırmak lazım:
Kod:
output_d(digit2>>4);

if(count==100) {count =0;} if(count == -1) {count = 99;}

0-999 sayıcı istenmiş, yukarıdaki sorgu 0-99 sayıcı için yazılmış.
signed int8 değişken -127 ~ 127 arası değer alabilir:
https://koddefteri.net/ccs-c/ccs-c-degiskenler-ve-veri-tipleri.html

Bunun yerine count değişkenini 16 bit işaretsiz tanımlayıp
sorguyu ona göre düzenlersek:

Kod:
unsigned int16 count = 0;
...
if(count==1000) 
{count =0;} 
if(count == 0xFFFF) //16 bit işarsiz tamsayı 0 iken bir azaltılırsa 0xFFFF olur.
{count = 999;}
 
Son düzenleme:

Forum istatistikleri

Konular
130,091
Mesajlar
933,004
Kullanıcılar
453,124
Son üye
yusufbarkan

Yeni konular

Geri
Üst