
typedef  unsigned char byte ;
typedef  unsigned int  real ;
typedef  unsigned long  unreal ;

#include <tiny13a.h>
#include <bcd.h>
#include <delay.h>
//#include <sleep.h>

#define CE   PORTB.2   //   
#define CL   PORTB.1   //   
#define DA   PORTB.0   //     

byte
   set, sw_key ;// номер запомненной позиции настройки
unreal     
   f_tun;

 unreal   set_frq  [4]=
   {145000, 145100, 145200, 145300};
 byte    chan0=0;

       byte    chan=0;
// Declare your global variables here


void lm7001SendByte(byte k)
{
  byte i ;

  for (i = 0; i < 8; i++) {
    if (k&0x1) DA = 1;
    else
    DA = 0;
    delay_us(3);
    CL = 1;
    delay_us(3);
    CL = 0;
    k = k >> 1;
    delay_us(3);
    DA = 0;
  }
}

void write_lm7001(){
    real frq;
  //frq=(f_tun - 10700) / 25 ;
    frq=(f_tun ) / 25 ;
  CL = 0; // CL
  CE = 1; // CE
  delay_us(3);

  lm7001SendByte(frq & 0x00FF);
  lm7001SendByte((frq & 0xFF00)>>8);

  lm7001SendByte(0b10100000); // - 25k
  delay_us(3);
  CE = 0; // CE
}
/*
void MCU_Off()
{
#asm("sei");
sleep_enable();
powerdown();
#asm("sleep");
}
*/

void blink ()  // мигаем диодом
{
if (set == 0){
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
  }
if (set == 1){
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
  }
if (set == 2){
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
  }
if (set == 3){
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
   PORTB.3=1;
   delay_ms(20);
   PORTB.3=0;
   delay_ms(20);
  }

}


void main(void)
{

// Input/Output Ports initialization
// Port B initialization
// Function: Bit5=In Bit4=In Bit3=Out Bit2=Out Bit1=Out Bit0=Out
DDRB=0b001111;
// State: Bit5=T Bit4=P Bit3=0 Bit2=0 Bit1=0 Bit0=0
PORTB=01000;
sw_key = 0;


    chan=chan0;            //   читаем из еепром номер канала
    f_tun = set_frq [chan];     //   устанавливаем частоту
    write_lm7001  ();


while (1){
      // Place your code here
   if(PINB.4 == 0){
   sw_key = 1;
   delay_ms(10);
   }
   if (sw_key && (PINB.4 ==1)) {
   sw_key = 0;
   chan++; set=chan;
   if (chan>3)
   {chan=0;set=0;}
   f_tun = set_frq [chan];
   write_lm7001  ();
   blink ();
   }

      }
}