Показать сообщение отдельно
Старый 19.10.2009, 16:09   #343   
Форумец
 
Сообщений: 7
Регистрация: 17.10.2009

_vka вне форума Не в сети
Код:
 bit oldstate, fl_in;
 unsigned short count;

//************************************
  void interrupt()
 {   char i;
  TMR0 = count;
   PORTA.F1 = 1;
    Delay_us(20);
   for (  i = 0; i < 10; i++ ){    // здесь можно изменить длительность импульса
      PORTA.F1 = 0; }
  INTCON.T0IF=0;
    }
 //*********************************
    void init(){
 CMCON = 0x07;
 TRISA = 0x01;
 TRISB = 0;
 OPTION_REG = 0x06;  //
 INTCON = 0xE0;//;разрешить прерывание TMR0
 PORTA =0;
 PORTB =0;
 fl_in=0;
 count=126;
 oldstate=1;
      }
//****************************************
  void con()
  {  if (fl_in==0){
      count++;
      PORTB = count; }
      if (count==178){
           fl_in=1;  }
   if (fl_in==1){
    count--;
     PORTB = count; }
     if (count==126){
      fl_in=0;  }
      }
//*****************************************
   void main(){
    unsigned short  fl_inc,tmp;
  init();

   while(1) {

    if (oldstate && Button(&PORTA, 0, 1, 0)) {    // Detect one-to-zero transition
      CON();                                     // inc count

    DELAY_MS(100);
    }
   }
  }
//**************************************
СПАСИБО ЗА УЧАСТИЕ! ЭТО МОЯ ПЕРВАЯ ПРОГА НА СИ.
Что эта прога делает? Меняет частоту импульсов от 60 - 100 гц, при нажатии кнопки частота увеличивается пока count не достиг значения 178 (100гц) после уменьшается
пока count не достиг значения 126 (60 гц) все.

( Вы серьезно настроены по ходу программы что-то писать в TMR0, чего настоятельно не рекомендуется делать (мнение не только мое и я с этим согласен) )
Не понял, а почему нельзя? Обьясните пожалуйста чем черевата запись в TMR0
зарание спасибо.
  Ответить с цитированием