Перейти к содержанию

Wawchuk

Members
  • Постов

    48
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Wawchuk

  1. 2 часа назад, IMXO сказал:

    может написал что-то не так , у меня этот код компилируется.

    1. переустановил aStudio6

    впустую

    2.заменил  на  if(! (PINB & (1<<BUTTON1)))

    все сшилось без error

    еще на макетке попробую как в жизни))

    спс

  2. А у меня щас ссылается на строки:

    1.struct button_type {.....

    2. if( (PINB & (1<<BUTTON1)) == 0 ){
           m_Batton.new=1;

    и выдает error

    Error    1    stray '\357' in program    lesson_button_type_0719.c    22    8    lesson_button_type_0719
     

    вот и весь вопрос.

     

  3. количество ошибок (error после компиляции) было еще больше

    после изменения на m_Batton.new1=1; во всем листинге уменьшилось

    И я извиняюсь если своим невежеством в знаниях обидел кого то.

    Просто интересный вопрос дребезга ....Всего лишь скопировал ваши вложения и скомпилировал

    и все , не получилось без ошибок.

     

     

  4.  

     вопрос по Вашему варианту функции, с поста выше:

    //****************************************** //* запись в регистры 74HC595 //******************************************

    void read_74HC595 (unsigned char reg8,unsigned char reg7, unsigned char reg6,

                                     unsigned char reg5, unsigned char reg4,unsigned char reg3,

                                     unsigned char reg2,unsigned char reg1, unsigned char reg0)

     

    с таким количеством аргументов можно управляться следующим образом ?

     

    int out_595 [8] = {0,0,0,0,0,0,0,1};  

    int i; 

    while(1)  
    {

            for (i=0; i<8; i++)  
            {
            read_74HC595 (0,0,0,0.0.0,0,1) = out_595 ;  
            }

     в ней же перебирать надо не биты ,а байты? или ткните где в языке есть применение(использование) таких функций

  5. Продолжая начатое

    pic16f676 подключен также 3-мя проводками к 74hc595 (1-на выводах сегменты с общим анодом) и от него стандартно к второй 74hc595(2-на ней 8 разрядов).Все как рассматривалось выше ,только плюс еще одна 74hc595.

    понимаю ,что для динамической индикации необходимо вставить в прерывание включение разрядов (единицей),но не получается пока ,пробовал погуглить, 

     

    main.c

     

  6. ну я так именно и представлял сначала тушим ,а затем подгружаю, щас попробую изменю

     

    нет слов ,одни эмоции ,цифры чистенькие без всякой засветки и без всяких ключей

              case 1:
                dig2=0;  
                dig3=0;
                data_submit(digits[R1]);
                dig1=1;

  7. через case 1:     у меня не получилось,но я пока пробую ,читаю не буду лукавить , а как написал считает четко если не считать небольшую засветку И счет идет, но только до 256 и опять начинает с нуля:

    void interrupt Timer (void)
       {
        if(T0IF)
          {
             T0IF=0;
             if(n_count==0){
             PORTAbits.RA2 = 0;
             PORTAbits.RA1 = 0;
             PORTAbits.RA0 = 1;
             data_submit(digits[R3]);
             }
             if(n_count==1){
             PORTAbits.RA2 = 0;
             PORTAbits.RA0 = 0;
             PORTAbits.RA1 = 1;
             data_submit(digits[R2]);
             }    
             if(n_count==2){
             PORTAbits.RA0 = 0;
             PORTAbits.RA1 = 0;
             PORTAbits.RA2 = 1;
             data_submit(digits[R1]);
             }
          n_count++;
          if(n_count>2) n_count=0;
         }

    я действительно вначале  не понял ,но щас попробую как у Вас,макетная плата собрана .

    мне почему то показалась что ключевая функция в этом 

    volatile struct flag_type {
    unsigned ON      : 1;
    unsigned                 : 1;
    unsigned                 : 1;
    unsigned                 : 1;
    unsigned                 : 1;
    unsigned                 : 1;
    unsigned                 : 1;
    unsigned                 : 1;
    } flag;

    кинулся изучать.  Спасибо Вам все уроки изучаю-)))

     

    void convert (void){
        for (j=0;j<1000;j++){
        ledprint(j);
        __delay_ms(400);
        }
    };

  8. в main  остается только счет на 2 разряда:

     while(1)
        {
            for(i=0;i<100;i++){
                segchar(i);
                data_submit(dat);
                __delay_ms(500);
            }
        }

    в вот внутри  разрядов segchar(R2) не различает единицы и десятки:

    void interrupt timer0()
    {
      T0_discharge();
      T0IF=0;
    }

     void T0_ledprint(unsigned int number)
    {
      R1 = number%10;
      R2 = number%100/10;
    }
    //--------------------------------------------
    void T0_discharge(void)
    {
      if(n_count==0)
      {
        PORTCbits.RC2 = 0;
    //    segchar(R2);
        PORTCbits.RC1 = 1;
      }
      else if(n_count==1)
      {
        PORTCbits.RC1 = 0;
    //    segchar(R1);
        PORTCbits.RC2 = 1;
      }
      n_count++;
      if (n_count>1) n_count=0;
    }

     

    сорри не увидел

     

  9. Нашел для себя narodstream.ru ,доходчиво-)).

    Программа  под динамическую индикацию (без утверждения, по крайней мере для меня)не совсем тоже самое,даже с учетом того что разряды подключены к анодам 7-сегментного  индикатора мимо 74hc595, т.е.:

    #define R1_595 PORTCbits.RC1
    #define R2_595 PORTCbits.RC2

    мигание разрядов вижу(похоже на правду), так  цифры (dat) не читаются,скорость большая,

     

  10. такая конструкция тоже работает

    //--------------------------------------------
    unsigned char dat,j;
    unsigned char T0_count = 0;
    //--------------------------------------------
    void interrupt timer0(){
      switch (T0_count%10){
        case 1 : dat =0x9F;break;
        case 2 : dat =0x25;break;
        case 3 : dat =0x0D;break;
        case 4 : dat =0x99;break;
        case 5 : dat =0x49;break;
        case 6 : dat =0x41;break;
        case 7 : dat =0x1F;break;
        case 8 : dat =0x01;break;
        case 9 : dat =0x09;break;
        case 0 : dat =0x03;break;
        }
        data_submit(dat);
        T0_count++;
        if(T0_count>10){
          T0_count=0;
      }
      T0IF=0;
    }

    но это все статическая индикация ,а что почитать для перехода в динамическую индикацию ,пусть даже для 2-х разрядов-?

×
×
  • Создать...