void dtmf (char input) { DDRD=0xFF; rd=1; wr=1; cs=0; rs0=0; delay_us(1); switch(input) { case 1: d3=0;d2=0;d1=0;d0=1;break; case 2: d3=0;d2=0;d1=1;d0=0;break; case 3: d3=0;d2=0;d1=1;d0=1;break; case 4: d3=0;d2=1;d1=0;d0=0;break; case 5: d3=0;d2=1;d1=0;d0=1;break; case 6: d3=0;d2=1;d1=1;d0=0;break; case 7: d3=0;d2=1;d1=1;d0=1;break; case 8: d3=1;d2=0;d1=0;d0=0;break; case 9: d3=1;d2=0;d1=0;d0=1;break; case 0: d3=1;d2=0;d1=1;d0=0;break; case '*':d3=1;d2=0;d1=1;d0=1;break; case '#':d3=1;d2=1;d1=0;d0=0;break; case 'a':d3=1;d2=1;d1=0;d0=1;break; case 'b':d3=1;d2=1;d1=1;d0=0;break; case 'c':d3=1;d2=1;d1=1;d0=1;break; case 'd':d3=0;d2=0;d1=0;d0=0;break; } wr=0; delay_us(1); wr=1; delay_us(1); } void tone (void) { cal_tone=0; hitung=0; DDRA.1=0; PORTA.1=1; periksa1: if (PINA.1==0) goto periksa2; goto periksa1; periksa2: if (PINA.1==1)
B-3
{hitung=0; goto periksa3;} else {hitung=hitung+1; delay_us(1); if (hitung