Wawchuk
-
Постов
48 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные Wawchuk
-
-
2 часа назад, IMXO сказал:
может написал что-то не так , у меня этот код компилируется.
1. переустановил aStudio6
впустую
2.заменил на if(! (PINB & (1<<BUTTON1)))
все сшилось без error
еще на макетке попробую как в жизни))
спс
0 -
А у меня щас ссылается на строки:
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
вот и весь вопрос.
0 -
количество ошибок (error после компиляции) было еще больше
после изменения на m_Batton.new1=1; во всем листинге уменьшилось
И я извиняюсь если своим невежеством в знаниях обидел кого то.
Просто интересный вопрос дребезга ....Всего лишь скопировал ваши вложения и скомпилировал
и все , не получилось без ошибок.
0 -
всю прогу перенабрать вручную?
функцию со всем содержимым перенабрал ,результат тот же
0 -
aStudio 6 ругается на code уважаемого IMXO
Error 1 stray '\357' lesson_button_type_0719.c
на строчку:
if( (PINB & (1<<BUTTON1)) == 0 ){
m_Batton.new1=1;не подскажете причину
0 -
Посмотрите пожалуйста такой вариант,компилируется,но не работает почему-то.
0 -
вопрос по Вашему варианту функции, с поста выше:
//****************************************** //* запись в регистры 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 ;
}в ней же перебирать надо не биты ,а байты? или ткните где в языке есть применение(использование) таких функций
0 -
ну перевернуть наверное не сложно:
for(i=16;i>=0;i--)
в целом ясно.Есть еще мысль в загажнике -),но надо ее сформулировать ,я поработаю над другим вариантом.
спс
0 -
Вот так правильно:
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(); //
};0 -
а скажите такой путь как main.c возможен,-?
по крайней мере понятен
или путь не тот и направление не то -))
0 -
спс
непонятно почему 9,а не 8
0 -
Продолжая начатое
pic16f676 подключен также 3-мя проводками к 74hc595 (1-на выводах сегменты с общим анодом) и от него стандартно к второй 74hc595(2-на ней 8 разрядов).Все как рассматривалось выше ,только плюс еще одна 74hc595.
понимаю ,что для динамической индикации необходимо вставить в прерывание включение разрядов (единицей),но не получается пока ,пробовал погуглить,
0 -
Да, это я разобрался понял вчера исправил unsigned char было, щас считает нормально до 999
void convert (void){
for (unsigned int j=0;j<1000;j++){
ledprint(j); __delay_ms(10);
}
}
если просто int j выдает warning
0 -
-))Спасибо
0 -
ну я так именно и представлял сначала тушим ,а затем подгружаю, щас попробую изменю
нет слов ,одни эмоции ,цифры чистенькие без всякой засветки и без всяких ключей
case 1:
dig2=0;
dig3=0;
data_submit(digits[R1]);
dig1=1;0 -
Прошил и все случилось .Спасибо,попробую в макетную плату подсунуть транзисторные ключи на аноды ,поборюсь с засветкой сегментов.
0 -
через 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);
}
};0 -
разобрался
0 -
Ругается компилятор :
main.c:131: error: (1098) conflicting declarations for variable "data_submit" (main.c:131)
0 -
надо осмыслить,спасибо -))
0 -
в 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;
}сорри не увидел
0 -
Нашел для себя narodstream.ru ,доходчиво-)).
Программа под динамическую индикацию (без утверждения, по крайней мере для меня)не совсем тоже самое,даже с учетом того что разряды подключены к анодам 7-сегментного индикатора мимо 74hc595, т.е.:
#define R1_595 PORTCbits.RC1
#define R2_595 PORTCbits.RC2мигание разрядов вижу(похоже на правду), так цифры (dat) не читаются,скорость большая,
0 -
такая конструкция тоже работает
//--------------------------------------------
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-х разрядов-?
0 -
вложил переменную case 4 : dat =0x99;break; ,и все случилось. Шестнадцатеричные значения пересчитаю. Спасибо за помощь.
0
Си для AVR. Пытаюсь разобраться в структуре кода.
в AVR
Опубликовано
мне кажется что здесь варианты:
1. бегущей тени
{
PORTD = (1<<i);
_delay_ms(500);
PORTD=0;}
2.бегщий огонь
{
PORTD = ~(1<<i);
_delay_ms(500);
PORTD=0xFF;}