#include <18F4520.h>
#fuses CCP2C1,INTRC_IO,NOPUT,PROTECT,BROWNOUT,NOLVP,NOMCLR,NOWDT
#device ADC=10
#use delay(clock=8000000)
#define SEG0COM PIN_D4
#define SEG1COM PIN_D5
#define SEG2COM PIN_D6
#define SEG3COM PIN_D7
int16 bir,on,yuz,bin;
unsigned int16 say,say1,s,oku;
byte const LED_MAP[10] = {0x3F,0x06,0x5B,0x4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
#int_TIMER0
void TIMER0_isr(void) /// display timer ile sürekli burada taranır
{
disable_interrupts(INT_TIMER0);
say++;
switch (say)
{
case 5:
output_low (SEG3COM);
output_high (SEG0COM); output_b (bir);
break;
case 10:
output_low (SEG0COM);
output_high (SEG1COM); output_b (on);
break;
case 15:
output_low (SEG1COM);
output_high (SEG2COM);output_b (yuz);
break;
case 20:
output_low (SEG2COM);
output_high (SEG3COM); output_b (bin);
say=0;
//output_low (SEG3COM);
break;
}
//enable_interrupts(INT_TIMER0);
set_timer0(99);
enable_interrupts(INT_TIMER0);
}
void yaz() /// displaye yazılacak değer burada ayarlanır
{
bir = (s % 10);
on = (s / 10) % (10);
yuz = (s / 100) % 10;
bin = (s / 1000) % 10;
bir = LED_MAP[bir];
on = LED_MAP[on];
yuz = LED_MAP[yuz];
bin = LED_MAP[bin];
delay_us (500);
}
#ZERO_RAM
void main()
{
setup_adc_ports(AN0_TO_AN6);
setup_adc(ADC_CLOCK_DIV_2|ADC_TAD_MUL_2);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1|RTCC_8_bit);
enable_interrupts(INT_TIMER0);
enable_interrupts(GLOBAL);
set_timer0(99);
set_adc_channel(5);
delay_ms(100);
//s=1216;
//yaz();
WHILE (TRUE)
{
oku=read_adc();// adc oku
................
................
................
s=oku;
yaz(); // displaye yazılacak değeri yolla
}
}