вот прога тестовая
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено колян безпарольный 19 декабря 2004 г. 01:11
В ответ на: неправильно подпаял отправлено колян безпарольный 19 декабря 2004 г. 01:03

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



#pragma language=extended
#include
#include
#include
#include "types.h"
//Биты
#define TOV1 0x80
#define TIP b00000100

//маркере операции 4321
#define Bipolar1 PORTD=b00011000
#define Bipolar2 PORTD=b00011000
#define Bipolar3 PORTD=b00001100
#define Bipolar4 PORTD=b00001100
#define Bipolar5 PORTD=b00100100
#define Bipolar6 PORTD=b00100100
#define Bipolar7 PORTD=b00110000
#define Bipolar8 PORTD=b00110000

#define Unipolar1 PORTD=b00111000
#define Unipolar2 PORTD=b00110000
#define Unipolar3 PORTD=b00110100
#define Unipolar4 PORTD=b00100100
#define Unipolar5 PORTD=b00101100
#define Unipolar6 PORTD=b00001100
#define Unipolar7 PORTD=b00011100
#define Unipolar8 PORTD=b00011000


unsigned char Step;

#define Time 6
#define limi 50

void ReloadTimer(void)
{//zapusk timera1 na 0.1 sek
TCCR1B=0x08; //Ostanoviti TC1

TCNT1H=(unsigned char)((0xFFFF-Time)>.>8); //
TCNT1L=(unsigned char)(0xFFFF-Time); //

TIFR=TIFR|TOV1;//ocistiti flag perepolnenia
TCCR1B=0x05; // zapustiti TC1 c /1024
while (!(TIFR&TOV1)) _WDR();
}
void Shag(char a)
{if (a==0) Step++; else Step--;
Step&=0x07;
switch (Step)
{case 0: {if (PINB&TIP) Unipolar1; else Bipolar1; } break;
case 1: {if (PINB&TIP) Unipolar2; else Bipolar2; } break;
case 2: {if (PINB&TIP) Unipolar3; else Bipolar3; } break;
case 3: {if (PINB&TIP) Unipolar4; else Bipolar4; } break;
case 4: {if (PINB&TIP) Unipolar5; else Bipolar5; } break;
case 5: {if (PINB&TIP) Unipolar6; else Bipolar6; } break;
case 6: {if (PINB&TIP) Unipolar7; else Bipolar7; } break;
case 7: {if (PINB&TIP) Unipolar8; else Bipolar8; } break;
}
ReloadTimer();
}

void main(void)
{ unsigned int a,b;
WDTCR=0x09; // Watchdog t=16 mS
_WDR(); // RESET Watchdog

DDRB =0x00; // 14noga tipa
PORTB=TIP; //

DDRD =0xFF; //на вывод
PORTD=0xfF; //11110011b

for (b=0;b<200;b++)
{ for (a=0;a for (a=0;a _WDR();
}
while(1) _WDR();
}


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru