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

Wawchuk

Members
  • Постов

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

  • Посещение

Весь контент Wawchuk

  1. мне кажется что здесь варианты: 1. бегущей тени { PORTD = (1<<i); _delay_ms(500); PORTD=0;} 2.бегщий огонь { PORTD = ~(1<<i); _delay_ms(500); PORTD=0xFF;}
  2. Wawchuk

    Помощь с кодом

    1. переустановил aStudio6 впустую 2.заменил на if(! (PINB & (1<<BUTTON1))) все сшилось без error еще на макетке попробую как в жизни)) спс
  3. Wawchuk

    Помощь с кодом

    А у меня щас ссылается на строки: 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 вот и весь вопрос.
  4. Wawchuk

    Помощь с кодом

    количество ошибок (error после компиляции) было еще больше после изменения на m_Batton.new1=1; во всем листинге уменьшилось И я извиняюсь если своим невежеством в знаниях обидел кого то. Просто интересный вопрос дребезга ....Всего лишь скопировал ваши вложения и скомпилировал и все , не получилось без ошибок.
  5. Wawchuk

    Помощь с кодом

    всю прогу перенабрать вручную? функцию со всем содержимым перенабрал ,результат тот же
  6. Wawchuk

    Помощь с кодом

    aStudio 6 ругается на code уважаемого IMXO Error 1 stray '\357' lesson_button_type_0719.c на строчку: if( (PINB & (1<<BUTTON1)) == 0 ){ m_Batton.new1=1; не подскажете причину
  7. Посмотрите пожалуйста такой вариант,компилируется,но не работает почему-то. new 1.c
  8. вопрос по Вашему варианту функции, с поста выше: //****************************************** //* запись в регистры 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 ; } в ней же перебирать надо не биты ,а байты? или ткните где в языке есть применение(использование) таких функций
  9. ну перевернуть наверное не сложно: for(i=16;i>=0;i--) в целом ясно.Есть еще мысль в загажнике -),но надо ее сформулировать ,я поработаю над другим вариантом. спс
  10. Вот так правильно: for (i=0;i<16;i++) // { if(i<=7){ DATA_595=(reg2 >> i) & 0x01; // clock(); // } if(i>7){ DATA_595=(reg1 >> i) & 0x01; // clock(); } } strobe(); // };
  11. а скажите такой путь как main.c возможен,-? по крайней мере понятен или путь не тот и направление не то -)) main.c
  12. Продолжая начатое pic16f676 подключен также 3-мя проводками к 74hc595 (1-на выводах сегменты с общим анодом) и от него стандартно к второй 74hc595(2-на ней 8 разрядов).Все как рассматривалось выше ,только плюс еще одна 74hc595. понимаю ,что для динамической индикации необходимо вставить в прерывание включение разрядов (единицей),но не получается пока ,пробовал погуглить, main.c
  13. Да, это я разобрался понял вчера исправил unsigned char было, щас считает нормально до 999 void convert (void){ for (unsigned int j=0;j<1000;j++){ ledprint(j); __delay_ms(10); } } если просто int j выдает warning
  14. ну я так именно и представлял сначала тушим ,а затем подгружаю, щас попробую изменю нет слов ,одни эмоции ,цифры чистенькие без всякой засветки и без всяких ключей case 1: dig2=0; dig3=0; data_submit(digits[R1]); dig1=1;
  15. Прошил и все случилось .Спасибо,попробую в макетную плату подсунуть транзисторные ключи на аноды ,поборюсь с засветкой сегментов. new 1.c
  16. через 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); } };
  17. Ругается компилятор : main.c:131: error: (1098) conflicting declarations for variable "data_submit" (main.c:131) new_7.c
  18. в 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; } сорри не увидел
  19. Нашел для себя narodstream.ru ,доходчиво-)). Программа под динамическую индикацию (без утверждения, по крайней мере для меня)не совсем тоже самое,даже с учетом того что разряды подключены к анодам 7-сегментного индикатора мимо 74hc595, т.е.: #define R1_595 PORTCbits.RC1 #define R2_595 PORTCbits.RC2 мигание разрядов вижу(похоже на правду), так цифры (dat) не читаются,скорость большая,
  20. такая конструкция тоже работает //-------------------------------------------- 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-х разрядов-?
  21. вложил переменную case 4 : dat =0x99;break; ,и все случилось. Шестнадцатеричные значения пересчитаю. Спасибо за помощь.
×
×
  • Создать...