Seven segment display tarama yöntemi ile sayıcı ccs c compiler Port çoklama ve tarama yöntemi uygulaması.
#include<16f877a.h>
#device adc=10
#use delay(clock=4mhz)
int sayilar[10]={0,1,2,3,4,5,6,7,8,9};
int16 sayi=0;
int a=0,birler=0,onlar=0,yuzler=0,binler=0;
#int_timer0
void timer0_isr()
{
a++;
if(a==1)
{
output_low(pin_d0);
output_low(pin_d1);
output_low(pin_d2);
output_high(pin_d3);
output_b(sayilar[birler]);
}
else if(a==2)
{
output_low(pin_d0);
output_low(pin_d1);
output_low(pin_d3);
output_high(pin_d2);
output_b(sayilar[onlar]);
}
else if(a==3)
{
output_low(pin_d0);
output_low(pin_d2);
output_low(pin_d3);
output_high(pin_d1);
output_b(sayilar[yuzler]);
}
else if(a==4)
{
output_low(pin_d1);
output_low(pin_d2);
output_low(pin_d3);
output_high(pin_d0);
output_b(sayilar[binler]);
a=0;
}
}
void main()
{
set_tris_a(0x01);
output_a(0x01);
set_tris_b(0x00);
output_b(0x00);
set_tris_d(0x00);
output_d(0x00);
setup_timer_0(rtcc_internal | rtcc_div_32 | rtcc_8_bit);
set_timer0(131);
enable_interrupts(int_timer0);
enable_interrupts(global);
setup_adc(adc_clock_div_32);
setup_adc_ports(AN0);
set_adc_channel(0);
delay_us(20);
while(true)
{
sayi=read_adc();
binler = sayi / 1000;
yuzler = (sayi%1000)/100;
onlar = (sayi%100)/10;
birler = sayi%10;
delay_ms(2);
}
}
Hiç yorum yok:
Yorum Gönder
Her yorum bilgidir. Araştırmaya devam...