Страница 1 из 1

С++ to HEX

Добавлено: Пт июл 27, 2012 20:02:50
zip900
Всем привет, ребят подскажите пожалуйста есть код прошивки в текстовом файле написанный на с++

Код: Выделить всё

/*****************************************************
Project : PWM Bipolar Locomotive Controller; 
Version : 2.00 for MOSFET bridge with overcurrent protection.
Date    : 18.04.2007
Author  : Yuri V. Kalashnikov;                            
Company : KRTPC 
Comments: Bipolar PWM Power Supply Controller
 for railway models; 

questions you can send by e-mail: tigerail@yandex.ru


Chip type           : ATtiny13
Clock frequency     : 9,600000 MHz internal RC option;
                      CKSEL1..0 = 10; 
Memory model        : Tiny
External SRAM size  : 0
Data Stack size     : 16
*****************************************************/

#include <tiny13.h>
#include <delay.h>

void main(void)
{
int k,i;
int AH, AL;
int OC;


// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Input/Output Ports initialization
// Port B initialization
// Func5=In Func4=Out Func3=In Func2=In Func1=Out Func0=Out 
// State5=T State4=0 State3=T State2=T State1=0 State0=0 
PORTB=0x00;
DDRB=0x17;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x00;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// External Interrupt(s) initialization
// INT0: Off
// Interrupt on any change on pins PCINT0-5: Off
GIMSK=0x00;
MCUCR=0x00;

// Timer/Counter 0 Interrupt(s) initialization
TIMSK0=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
ACSR=0x80;
ADCSRB=0x00;


ADMUX=0x03; // Vcc as VRef, ADC connect to PB3 pin

ADCSRA=86;  // ADC enable, ADC CLK divider=0b110 (9600/64=150kHz)

OC=1;

while (OC==1)
  { // overcurrent/START cycle
    ADCSRA=0xC6; //START conversion
    PORTB.2=0;
    delay_ms(300);
    PORTB.2=1;
    delay_ms(300); 
    
    // ADC result performing
    AL=ADCL; // extract low part ADC result;
    AH=ADCH; // extract high part ADC result;
    k=AH*256; // shift high part to most significant byte;
    k=k+AL; // add low byte; 
    
    if ((k>412) && (k<612))
      {                   
        OC=0; // USER set trimmer to STOP position, out from cycle
      }
  }

 

while (1)
  { 
       ADCSRA=0xC6; //START conversion
       

       if ((k>412) && (k<612)) // CENTRAL "STOP" trimmer position

         {
           PORTB.2=0; // LED "STOP" is lighting;
           PORTB.1=0;
           PORTB.0=0;
         }
         else  //  412<k<612
           {
             PORTB.2=1; // LED "STOP" is OFF; 
             
             if (k<=412)  // RIGHT-turned trimmer position;
               {
                 k=412-k;

                 // Pulse Width Modulation cycles "FORWARD";
                 for(i=1; i<=k; i=i+1)
                   {
                     PORTB.0=1;
                     delay_us(10); 
                   }
                 for(i=k; i<=412; i=i+1)
                   {
                     PORTB.0=0;
                     delay_us(10);
                   }    
               
               } //(k<=412)         
               
             if(k>=612)    // LEFT-turned trimmer position; 
               {
                 k=k-612;
                 // Pulse Width Modulation cycles "BACK"; 
                 for(i=1; i<=k; i=i+1)
                   {
                    PORTB.1=1;
                    delay_us(10); 
                   }
                 for(i=k; i<=412; i=i+1)
                   {
                     PORTB.1=0;
                     delay_us(10);
                   }    
               } //(k>=612)
          
           } // else
       

       AL=ADCL; // extract low part ADC result;
       AH=ADCH; // extract high part ADC result;
       k=AH*256; // shift high part to most significant byte;
       k=k+AL; // add low byte; 
  };// while
}   // main
Вот мне надо прошить его в микруху ATTINY13 насколько я понимаю его сначала надо скомпилить в HEX файл а потом зашиввать CodeVisionAVR, Pony-Prog или AVReal по вкусу. Ну так вот как перевести из сишного файла или txt в HEX не устанавливая с++. У меня есть билдер но под вин 7 он както неработает оживить можно путем колдований но неуверен в надежности результата. Помогите пожалуйста.

Re: С++ to HEX

Добавлено: Пт июл 27, 2012 21:16:38
da-nie
Ну так вот как перевести из сишного файла или txt в HEX не устанавливая с++. У меня есть билдер но под вин 7 он както неработает оживить можно путем колдований но неуверен в надежности результата. Помогите пожалуйста
Это невозможно без компилятора для выбранного микроконтроллера. И после билдера тоже работать не будет никогда - машинный код несколько разный.

Re: С++ to HEX

Добавлено: Пт июл 27, 2012 22:42:31
Jack_A
Блин, да таку эляментарщину перекинуть на ассемблер - пара пустяков. А уж ассемблер любая Студия примет.

Re: С++ to HEX

Добавлено: Пт июл 27, 2012 23:05:11
a_skr
что мешает в CodeVision скомпилировать? тем более, в нем и написано.
все компилируется без ошибок.
да, никаких плюс-плюсов тут нет. ;)

Re: С++ to HEX

Добавлено: Сб июл 28, 2012 09:49:53
zip900
a_skr писал(а):что мешает в CodeVision скомпилировать? тем более, в нем и написано.
все компилируется без ошибок.
да, никаких плюс-плюсов тут нет. ;)
Большое спасибо! так синкасис же сишный )

Re: С++ to HEX

Добавлено: Вс июл 29, 2012 16:22:07
ploop
есть код прошивки в текстовом файле написанный на с++
Где вы тут плюсы увидели? Чистый Си.

Re: С++ to HEX

Добавлено: Чт авг 02, 2012 08:00:10
zip900
ploop писал(а):
есть код прошивки в текстовом файле написанный на с++
Где вы тут плюсы увидели? Чистый Си.
Имелось ввиду сама программа, с++ же может компилить сишный код