اطلاعیه

Collapse
No announcement yet.

این برنامه به چه زبانی نوشته شد است

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    این برنامه به چه زبانی نوشته شد است

    سلام
    لطفابفرماید این به چه زبانی نوشته شداست لطفا بفرماید چگونه متوانم به کد هگز تبدیل کنم
    [code=c]#include <avr/io.h>
    #include "lcd-routines.h"
    #include "wait1000ms.h"
    #include "config.h"
    #include <util/delay.h>
    #include <avr/sleep.h>
    #include <stdlib.h>
    #include <string.h>
    //#include <avr/eeprom.h>
    #include <avr/pgmspace.h>
    #include <avr/wdt.h>
    #include <math.h>
    //#define DebugOut 1 // wenn gesetzt, Ausgabe von Spannungen im Leerlauf mit R_H
    //#define DebugOut 2 // wenn gesetzt, Ausgabe von Pin-Spannungen mit geschalteten R_L
    //#define DebugOut 3 // wenn gesetzt, Zwischenausgaben bei Widerstandmessung in Zeile 2
    //#define DebugOut 4 // wenn gesetzt, Spannungsausgabe bei Diodenmessung in Zeilen 3+4
    //#define DebugOut 5 // wenn gesetzt, Zwischenausgaben der TransistorUntersuchung in Zeile 2+3
    //#define DebugOut 10 // wenn gesetzt, Zwischenausgaben in ReadCapacity in Zeilen 3+4
    /*################################################# #######################################
    Konfigurations-Einstellungen
    */

    /* Port für die Test-Pins
    Dieser Port muss über einen ADC verfügen (beim Mega8 also PORTC).
    Für die Test-Pins müssen die unteren 3 Pins dieses Ports benutzt werden.
    Bitte die Definitionen für TP1, TP2 und TP3 nicht ändern!
    */

    #define ADC_PORT PORTC
    #define ADC_DDR DDRC
    #define ADC_PIN PINC
    #define TP1 PC0
    #define TP2 PC1
    #define TP3 PC2

    /*Einstellungen für Kapazitätsmessung (nur für ATMega8 interessant)
    Der Test, ob ein Kondensator vorhanden ist, dauert relativ lange, mit über 50ms je Testvorgang ist zu rechnen
    Bei allen 6 möglichen Testvorgängen ergibt das eine Verlängerung der Testdauer um ca 0,3s bis 0,5s.
    Mit CAP_TEST_MODE lassen sich die durchgeführten Tests festlegen.

    Bedeutungen der Bits (7 = MSB):
    7:6 Nicht verwendet

    5:4 Test-Modus
    00: Kondensator-Messung deaktiviert
    01: Kondensator-Messung für eine einstellbare Pin-Kombination (in beide Richtungen); verlängert Testdauer um ca. 120...200ms
    10: Kondensator-Messung für alle 6 Pin-Kombinationen; verlängert Testdauer um ca. 300...500ms

    3:2 Erster Pin der gewählten Pin-Kombination (0...2), nur entscheidend wenn Bits 5:4 = 01

    1:0 Zweiter Pin der gewählten Pin-Kombination (0...2), nur entscheidend wenn Bits 5:4 = 01
    */
    #define CapTestMode 0x12 //Messung für alle 6 Pin-Kombinationen



    /*
    Genaue Werte der verwendeten Widerstände in Ohm.
    Der Nennwert für R_L ist 680 Ohm, für R_H 470kOhm.

    Um das Programm auf Abweichungen von diesen Werten (z.B. durch Bauteiltoleranzen)
    zu kalibrieren, die Widerstandswerte in Ohm in die folgenden Defines eintragen:
    */
    #define R_L_VAL 680 // Normwert 680 Ohm
    #define R_H_VAL 4700 // Normwert 470000 Ohm, durch 100 dividiert

    #define PIN_R 20 // Geschätzter Innenwiderstand PORT Ausgang


    /* Faktoren für die Kapazitätsmessung bei Kondensatoren
    Diese Faktoren hängen von Fertigungstoleranzen des AVR ab und müssen somit ggf. angepasst werden
    H_CAPACITY_FACTOR ist für die Messung mit 470k-Widerstand (geringe Kapazität)
    L_CAPACITY_FACTOR ist für die Messung mit 680-Ohm-Widerstand (hohe Kapazität)
    Gemessen wird die Zeit (t) in µs bis zum Erreichen der Vergleichsspannung (1.3V)
    des analogen Komparators.
    Die Spannung am Kondensator steigt nach Uc = VCC * (1 - e**(-t/T))
    Die 1.3V werden somit nach t = -ln(3.7/5)*T = 0.3011*T erreicht.
    Zeitkonstante T = R * C ; also
    C = T / R
    für die 470 kOhm ergibt sich nach C = t / (0.3011 * 470000)
    H_Fakt = 707/100 für das Ergebnis in pF

    Für die 680 Ohm sind die Verhältnisse komplizierter.
    zum Zeitpunkt des Komparator-Schaltens fliesst noch deutlich Strom, der
    einen zusätzlichen Spannungsanstieg des LowPin zur Folge hat.
    = (VCC - 1.3V) / (R_L + PIN_R) * PIN_R = 105mV
    Der Komparator schaltet also bei einer Kondensator-Spannung von etwa 1.2V!!!
    Das ergibt als Schaltzeit t = -ln((5-1.2)/5)*T = 0.274437*T .
    für die 680 Ohm ergibt sich nach C = t / (0.274437 * (680 + PIN_R + PIN_R))
    oder C = Z * 5.060869 (253/50)

    Der gesamte Messbereich ist ca. 100pF bis 80mF.
    */
    //#define H_CAPACITY_FACTOR 707
    #define H_CAPACITY_FACTOR 724
    //#define L_CAPACITY_FACTOR 253
    #define L_CAPACITY_FACTOR 273

    // durch Faktoren wird der ADC-Wert so umgerechnet, dass die Spannungen in mV gemessen werden!
    // alle Abfragen wurden durch solche mV Abfragen ersetzt.
    #define U_VCC 5001 // Maximalwert der ADC-Messung


    /*################################################# #######################################
    Ende der Konfigurations-Einstellungen
    */

    /*Strings im PROGMEM
    Beim Hinzufügen weiter Sprachen müssen alle Strings mit "¤"-Zeichen (ASCII 0x80) auf gleiche Länge gebracht werden,
    sonst gibt es Probleme mit der LCD-Anzeige bei den verschiedenen Sprachen!
    */

    #if defined(GERMAN) //deutsch
    unsigned char TestRunning[] PROGMEM = "Testen...";
    unsigned char BatWeak[] PROGMEM = "schwach";
    unsigned char BatEmpty[] PROGMEM = "leer!";
    unsigned char TestFailed2[] PROGMEM = "defektes ";
    unsigned char Bauteil[] PROGMEM = "Bauteil";
    unsigned char Diode[] PROGMEM = "Diode: ";
    unsigned char Dioden[] PROGMEM = "Dioden ";
    unsigned char GAK[] PROGMEM = "GAK=";
    unsigned char Triac[] PROGMEM = "Triac";
    unsigned char Thyristor[] PROGMEM = "Thyristor";
    unsigned char Unknown[] PROGMEM = " unbek.";
    unsigned char TestFailed1[] PROGMEM = "Kein,unbek. oder";
    unsigned char OrBroken[] PROGMEM = "oder defekt ";
    unsigned char Resistor[] PROGMEM = "Widerst: ";
    unsigned char Capacitor[] PROGMEM = "Kondensator: ";

    #elif defined(ENGLISH) //englisch
    unsigned char TestRunning[] PROGMEM = "Testing...";
    unsigned char BatWeak[] PROGMEM = "weak";
    unsigned char BatEmpty[] PROGMEM = "empty!";
    unsigned char TestFailed2[] PROGMEM = "damaged ";
    unsigned char Bauteil[] PROGMEM = "part";
    unsigned char Diode[] PROGMEM = "Diode: ";
    unsigned char Dioden[] PROGMEM = "Diodes ";
    unsigned char GAK[] PROGMEM = "GAC=";
    unsigned char Triac[] PROGMEM = "Triac";
    unsigned char Thyristor[] PROGMEM = "Thyristor";
    unsigned char Unknown[] PROGMEM = " unknown";
    unsigned char TestFailed1[] PROGMEM = "No, unknown, or";
    unsigned char OrBroken[] PROGMEM = "or damaged ";
    unsigned char Resistor[] PROGMEM = "Resistor: ";
    unsigned char Capacitor[] PROGMEM = "Capacitor: ";

    #elif defined(POLISH) //polnisch
    unsigned char TestRunning[] PROGMEM = "Testowanie...";
    unsigned char BatWeak[] PROGMEM = "slaba";
    unsigned char BatEmpty[] PROGMEM = "za slaba";
    unsigned char TestFailed2[] PROGMEM = "lub uszkodz.";
    unsigned char Bauteil[] PROGMEM = "Element";
    unsigned char Diode[] PROGMEM = "Dioda: ";
    unsigned char Dioden[] PROGMEM = "Diody ";
    unsigned char GAK[] PROGMEM = "GAK=";
    unsigned char Triac[] PROGMEM = "Triak";
    unsigned char Thyristor[] PROGMEM = "Tyrystor";
    unsigned char Unknown[] PROGMEM = " nieznany";
    unsigned char TestFailed1[] PROGMEM = "brak elementu";
    unsigned char OrBroken[] PROGMEM = "lub uszkodz. ";
    unsigned char Resistor[] PROGMEM = "Opornosc: ";
    unsigned char Capacitor[] PROGMEM = "Pojemnosc: ";

    #elif defined(CZECH) //tschechisch
    unsigned char TestRunning[] PROGMEM = "Probiha mereni...";
    unsigned char BatWeak[] PROGMEM = "slaba";
    unsigned char BatEmpty[] PROGMEM = "prazdna!";
    unsigned char TestFailed2[] PROGMEM = "vadna ";
    unsigned char Bauteil[] PROGMEM = "soucastka";
    unsigned char Diode[] PROGMEM = "Dioda: ";
    unsigned char Dioden[] PROGMEM = "Diody ";
    unsigned char GAK[] PROGMEM = "GAK=";
    unsigned char Triac[] PROGMEM = "Triak";
    unsigned char Thyristor[] PROGMEM = "Tyristor";
    unsigned char Unknown[] PROGMEM = " neznama";
    unsigned char TestFailed1[] PROGMEM = "Zadna, neznama";
    unsigned char OrBroken[] PROGMEM = "nebo vadna ";
    unsigned char Resistor[] PROGMEM = "Rezistor: ";
    unsigned char Capacitor[] PROGMEM = "Kondenzator: ";

    #elif defined(SLOVAK) //slowakisch
    unsigned char TestRunning[] PROGMEM = "PREBIEHA TEST";
    unsigned char BatWeak[] PROGMEM = "slaba";
    unsigned char BatEmpty[] PROGMEM = "prazdna!";
    unsigned char TestFailed2[] PROGMEM = "vadna ";
    unsigned char Bauteil[] PROGMEM = "suciastka!";
    unsigned char Diode[] PROGMEM = "Dioda: ";
    unsigned char DualDiode[] PROGMEM = "Diody ";
    unsigned char GAK[] PROGMEM = "GAK=";
    unsigned char Triac[] PROGMEM = "Triak";
    unsigned char Thyristor[] PROGMEM = "Tyristor";
    unsigned char Unknown[] PROGMEM = " neznama";
    unsigned char TestFailed1[] PROGMEM = "Ziadna, neznama";
    unsigned char OrBroken[] PROGMEM = "alebo vadna ";
    unsigned char Resistor[] PROGMEM = "Rezistor: ";
    unsigned char Capacitor[] PROGMEM = "Kondenzator: ";
    #endif



    //Sprachunabhängige Strings
    unsigned char Bat[] PROGMEM = "Bat. ";
    unsigned char OK[] PROGMEM = "OK";
    unsigned char mosfet[] PROGMEM = "-MOS";
    unsigned char jfet[] PROGMEM = "JFET";
    unsigned char GateCap[] PROGMEM = " C=";
    unsigned char hfestr[] PROGMEM ="hFE=";
    unsigned char NPN[] PROGMEM = "NPN ";
    unsigned char PNP[] PROGMEM = "PNP ";
    unsigned char ebcstr[] PROGMEM = " EBC=";
    unsigned char gds[] PROGMEM = "GDS=";
    unsigned char Uf[] PROGMEM = "Uf=";
    unsigned char vt[] PROGMEM = "Vt=";
    unsigned char AnKat[] PROGMEM = {'-', LCD_CHAR_DIODE, '-', 0};
    unsigned char KatAn[] PROGMEM = {'-', LCD_CHAR_DIODE2, '-', 0};
    unsigned char TestTimedOut[] PROGMEM = "Timeout!";

    unsigned char DiodeIcon[] PROGMEM = { 0x11,
    0x19,
    0x1d,
    0x1f,
    0x1d,
    0x19,
    0x11,
    0x00}; // Diode-Icon Anode links

    unsigned char DiodeIcon2[] PROGMEM = { 0x11,
    0x13,
    0x17,
    0x1f,
    0x17,
    0x13,
    0x11,
    0x00}; // Diode-Icon Anode rechts

    unsigned char PinRLtab[] PROGMEM = { (1<<(TP1*2)),
    (1<<(TP2*2)),
    (1<<(TP3*2))}; // Tabelle der R-L Schaltbefehle Pin 0,1,2

    unsigned char PinADCtab[] PROGMEM = { (1<<0),
    (1<<1),
    (1<<2)}; // Tabelle der ADC-Pins Schaltbefehle Pin 0,1,2

    #ifdef LCD_CYRILLIC //Omega- und µ-Zeichen als Custom-Zeichen erzeugen, weil diese Zeichen im kyrillischen Zeichensatz nicht enthalten sind
    unsigned char CyrillicOmegaIcon[] PROGMEM = {0,0,14,17,17,10,27,0}; //Omega
    unsigned char CyrillicMuIcon[] PROGMEM = {0,17,17,17,19,29,16,16}; //µ
    #endif

    #ifdef R_MESS
    unsigned char T132[] PROGMEM = "1:3:2";
    unsigned char T123[] PROGMEM = "1:2:3";
    unsigned char T213[] PROGMEM = "2:1:3";
    #endif

    //Ende der EEPROM-Strings

    //Watchdog
    #define WDT_enabled
    /* Wird das Define "WDT_enabled" entfernt, wird der Watchdog beim Programmstart
    nicht mehr aktiviert. Das ist für Test- und Debuggingzwecke sinnvoll.
    Für den normalen Einsatz des Testers sollte der Watchdog aber unbedingt aktiviert werden!
    */


    struct Diode {
    uint8_t Anode;
    uint8_t Cathode;
    unsigned int Voltage;
    };

    void CheckPins(uint8_t HighPin, uint8_t LowPin, uint8_t TristatePin);
    void ChargePin10ms(uint8_t PinToCharge, uint8_t ChargeDirection);
    unsigned int ReadADC(uint8_t mux);
    unsigned int W5msReadADC(uint8_t mux);
    unsigned int W20msReadADC(uint8_t mux);
    void lcd_show_format_cap(char outval[]);
    void ReadCapacity(uint8_t HighPin, uint8_t LowPin); //Kapazitätsmessung nur auf Mega8 verfügbar
    void UfAusgabe(uint8_t bcdchar); // Ausgabe der Schwellwertspannung(en) Uf
    void RvalOut(uint8_t ii); // Ausgabe der Widerstandswerte
    void EntladePins(); // Kondensatoren entladen


    #define R_DDR DDRB
    #define R_PORT PORTB

    /* Port für die Testwiderstände
    Die Widerstände müssen an die unteren 6 Pins des Ports angeschlossen werden,
    und zwar in folgender Reihenfolge:
    RLx = 680R-Widerstand für Test-Pin x
    RHx = 470k-Widerstand für Test-Pin x

    RL1 an Pin 0
    RH1 an Pin 1
    RL2 an Pin 2
    RH2 an Pin 3
    RL3 an Pin 4
    RH3 an Pin 5

    */



    #define ON_DDR DDRD
    #define ON_PORT PORTD
    #define ON_PIN_REG PIND
    #define ON_PIN PD6 //Pin, der auf high gezogen werden muss, um Schaltung in Betrieb zu halten
    #define RST_PIN PD7 //Pin, der auf low gezogen wird, wenn der Einschalt-Taster gedrückt wird

    //Bauteile
    #define PART_NONE 0
    #define PART_DIODE 1
    #define PART_TRANSISTOR 2
    #define PART_FET 3
    #define PART_TRIAC 4
    #define PART_THYRISTOR 5
    #define PART_RESISTOR 6
    #define PART_CAPACITOR 7

    //Ende (Bauteile)
    //Spezielle Definitionen für Bauteile
    //FETs
    #define PART_MODE_N_E_MOS 1
    #define PART_MODE_P_E_MOS 2
    #define PART_MODE_N_D_MOS 3
    #define PART_MODE_P_D_MOS 4
    #define PART_MODE_N_JFET 5
    #define PART_MODE_P_JFET 6

    //Bipolar
    #define PART_MODE_NPN 1
    #define PART_MODE_PNP 2


    struct Diode diodes[6];
    uint8_t NumOfDiodes;

    struct {
    unsigned int hfe[2]; //Verstärkungsfaktor
    //unsigned int uBE[2]; //B-E-Spannung für Transistor
    uint8_t b,c,e; //Anschlüsse des Transistors
    }trans;

    unsigned long lhfe; //Verstärkungsfaktor
    uint8_t PartReady; //Bauteil fertig erkannt
    uint8_t PartMode;
    uint8_t tmpval, tmpval2;
    [/code]
    با کمال تشکرp]

    #2
    پاسخ : این برنامه به چه زبانی نوشته شد است

    زبانش c هست برای کامپایلر gcc هم نوشته شده
    ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

    امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

    دیدگاه


      #3
      پاسخ : این برنامه به چه زبانی نوشته شد است

      سلام
      ایا با برنامهavr studio lمتوانم به کدهگز تبدیل کنم با کمال تشکر

      دیدگاه


        #4
        پاسخ : این برنامه به چه زبانی نوشته شد است

        نوشته اصلی توسط ajamee
        سلام
        ایا با برنامهavr studio lمتوانم به کدهگز تبدیل کنم با کمال تشکر
        آره. میشه.
        ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

        امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

        دیدگاه

        لطفا صبر کنید...
        X