logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zaprogramować PIC16f84A do zapisu i odczytu impulsów?

mario987 11 Lut 2008 21:56 1618 10
  • #1 4795425
    mario987
    Poziom 14  
    Posty: 115
    Pomógł: 9
    Ocena: 5
    Witam wszystkich. Mam takie pytanie myślę nad tym ale nie jestem zbyt oblatany w µC praktycznie niewiele o nich wiem . pytanie może i banalne... Czy ten układ musi być jakoś wstępnie oprogramowany by mógł wykonywać funkcje zapis jakiegoś ciągu impulsów do pamięci i odczyt tego impulsu w identycznej postaci za pomocą jakiegoś przycisku(jakieś schematy mam tak ze to mniejszy problem)... jeśli tak to jak mam to zrobić???? jak napisać taki program czy można go może ściągnąć ???? bardzo bym prosił o jakąkolwiek pomoc z góry dziękuję
  • #2 4795519
    snow
    Poziom 31  
    Posty: 1825
    Pomógł: 178
    Ocena: 201
    Musi być zaprogramowany. Potrzebujesz kompilator jakiegoś języka + programator. Ściągnąć też można jak znajdziesz gdzieś projekt który ci w 100% odpowiada, jak w 99,99% to musisz sobie sam napisać program lub zmodyfikować źródłowy jeżeli nie skompilowany, skompilować i wgrać.
  • #3 4797140
    mario987
    Poziom 14  
    Posty: 115
    Pomógł: 9
    Ocena: 5
    Mógłbym prosic o jakąś wskazówkę jak mam dopasowac i napisac ten program?
    jestem jeszcze ciekawy dlaczego pic16f84-10 kosztuje praktycznie 90 zła pic16f84a 10zł.Ten pierwszy ma jakiś program w sobie czy tu sie "płaci za firmę"? o co w tym chodzi? z góry dzięki
  • #4 4797155
    snow
    Poziom 31  
    Posty: 1825
    Pomógł: 178
    Ocena: 201
    Ten pierwszy już jest wycofany a ten drugi jest aktualnie w produkcji, pewnie z tego wynika różnica w cenie (albo ktoś się pomylił) - zapewne resztki magazynowe. Żaden procesor kupiony jako nowy nie posiada w sobie żadnego programu.

    Jak napisać program - bierzesz kompilator C/Basic/ASM i sobie piszesz program po swojemu (albo kopiując część źródeł i dopisujesz/modyfikujesz fragmenty), kompilujesz do pliku hex i przy pomocy programatora wrzucasz do procka. Jak jest dobrze napisany program to procesor działa jak chcesz.
  • #5 4797263
    mario987
    Poziom 14  
    Posty: 115
    Pomógł: 9
    Ocena: 5
    okey dziękuję coś pokombinuje może coś z tego mi wyjdzie a jak coś nie będę wiedział to napisze:)) pozdrawiam
  • #6 4798633
    mario987
    Poziom 14  
    Posty: 115
    Pomógł: 9
    Ocena: 5
    poczytałem troszkę. Wszystko mam kompilatory mam, tylko prosił bym jeszcze o jakieś linki ze źródłami gotowych programów żebym sobie mógł coś z tego sklecić. Albo jeśli by to nie był duży problem żeby ktoś mi pomógł w napisaniu takiego programu bo tak jak mówiłem we wcześniejszym poście nie jestem zbyt oblatany w te klocki.Z góry serdecznie dziękuję za każda pomoc
  • #7 4798673
    Freddie Chopin
    Specjalista - Mikrokontrolery
    Posty: 13336
    Pomógł: 1712
    Ocena: 870
    tutaj masz przyklady od samego microchipa:
    http://microchip.com/Microchip.WWW.SecureSoft...ce=SS_GET_PAGE&nodeId=1406&dDocName=en023805#

    oczywiscie zakladajac, ze bedziesz pisal w assemblerze.

    0x41 0x56 0x45!!
  • #8 4798787
    mario987
    Poziom 14  
    Posty: 115
    Pomógł: 9
    Ocena: 5
    Mam cos w tym stylu tylko niewiem do czego słuzy ten opis

    
    /********************************************************************
    * FileName:       main.c
    * Dependencies:   p18f87j10.h, delays.h, 18f87j10i.lkr
    * Processor:      PIC18F87J10
    * Hardware:       PICkit 2
    * Compiler:       MPLAB-C18
    * Linker:         MPLINK 2.33.00 or higher
    * Company:        Microchip Technology, Inc.
    *
    * Software License Agreement:
    * $SLA$
    *
    *********************************************************************
    * File Description:
    * Simple program that with the push button switch not pressed, will
    * display the A/D result from the potentiometer.  With the push button
    * switch pressed, will increment the LEDs.
    *
    * Change History:
    * 1.0 - first release of source code
    ********************************************************************/
    
    #include <p18f87j10.h>
    #include <delays.h>
    
    #pragma config	DEBUG = OFF			// debugger off
    #pragma config	XINST = OFF			// extended instruction set disabled
    #pragma config	STVREN = OFF		// stack overflow interrupt disabled
    #pragma config	WDTEN = OFF			// WDT disabled
    #pragma	config	CP0 = OFF			// code protection disabled
    #pragma	config	FCMEN = OFF			// fail safe clock monitor disabled
    #pragma config	IESO = OFF			// internal/external clock switch disabled
    #pragma config	FOSC = HS			// HS oscillator
    #pragma config	MODE = MM			// Microcontroller mode
    #pragma config	ECCPMX = DEFAULT	// Default setting for ECCP1
    #pragma	config	CCP2MX = DEFAULT	// Default setting for ECCP2
    #pragma	config	FOSC2 = ON			// Clock selected by OSCCON bits
    
    
    void main(void)
    {
    	unsigned char i;
    
    	PORTA = 0;					// Clear all port outputs
    	PORTB = 0;
    	PORTC = 0;
    	PORTD = 0;
    	PORTE = 0;
    	PORTF = 0;
    	PORTG = 0;
    	PORTH = 0;
    	PORTJ = 0;
    
    	TRISA = 0x01;				// Make RA0 an input for potentiometer
    	TRISB = 0x01;				// Make RB0 an input for push button switch
    	TRISC = 0;					// All other ports are outputs
    	TRISD = 0;
    	TRISE = 0;
    	TRISF = 0;
    	TRISG = 0;
    	TRISH = 0;
    	TRISJ = 0;
    
    	ADCON0bits.ADCAL = 0;		// No calibration
    	ADCON0bits.CHS3 = 0;		// Select Channel 0
    	ADCON0bits.CHS2 = 0;
    	ADCON0bits.CHS1 = 0;
    	ADCON0bits.CHS0 = 0;
    	ADCON0bits.ADON = 1;		// Turn A/D on
    
    	ADCON1bits.VCFG1 = 0;		// VREF- = AVSS
    	ADCON1bits.VCFG0 = 0;		// VREG+ = AVDD
    	ADCON1bits.PCFG3 = 1;		// Select 1 Analog channel, AN0
    	ADCON1bits.PCFG2 = 1;
    	ADCON1bits.PCFG1 = 1;
    	ADCON1bits.PCFG0 = 0;
    
    	ADCON2bits.ADFM = 0;		// Left justified result
    	ADCON2bits.ACQT2 = 0;		// 0 Tad acquistion time
    	ADCON2bits.ACQT1 = 0;
    	ADCON2bits.ACQT0 = 0;
    	ADCON2bits.ADCS2 = 0;		// Frc clock source
    	ADCON2bits.ADCS1 = 1;
    	ADCON2bits.ADCS0 = 1;
    	
    	PIR1bits.ADIF = 0;			// Clear A/D conversion complete interrupt flag
    	ADCON0bits.ADCAL = 1;		// Enable calibration
    	ADCON0bits.GO = 1;			// Start conversion
    	while(!PIR1bits.ADIF);		// Wait for conversion to complete
    	PIR1bits.ADIF = 0;			// Clear A/D conversion complete interrupt flag
    	ADCON0bits.ADCAL = 0;		// Disable calibration
    
    	while(1)
    	{
    		while(PORTBbits.RB0)		// While push button not pressed
    		{
    			ADCON0bits.GO = 1;		// Start converstion
    			while(!PIR1bits.ADIF);	// Wait for conversion to complete
    			PIR1bits.ADIF = 0;		// Clear A/D conversion complete interrupt flag
    			PORTD = ADRESH;			// Write upper byte of A/D result to PORTC
    			Delay1KTCYx(5);			// Delay for 5000 instruction cycles
    		}
    		i = 0;						// reset i
    		while(!PORTBbits.RB0)		// While push button pressed
    		{
    			PORTD = i++;			// Increment i
    			Delay10KTCYx(50);		// Delay
    		}
    	}
    }
    		
    
    

    z góry dzieki
  • #10 4800681
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    mario987 napisał:
    Mam cos w tym stylu tylko niewiem do czego słuzy ten opis

    * File Description:
    * Simple program that with the push button switch not pressed, will
    * display the A/D result from the potentiometer. With the push button
    * switch pressed, will increment the LEDs.
  • #11 4801944
    mario987
    Poziom 14  
    Posty: 115
    Pomógł: 9
    Ocena: 5
    jestli dobrze mysle to po skompilkowaniu pewnych czesci tego txt moge sobie zrobic program??

Podsumowanie tematu

LABEL_AI_GENERATED
Do zaprogramowania mikrokontrolera PIC16F84A w celu zapisu i odczytu impulsów konieczne jest wgranie odpowiedniego programu. Mikrokontroler nie posiada fabrycznie żadnego oprogramowania, dlatego potrzebny jest kompilator (C, Basic, ASM) oraz programator do wgrania skompilowanego pliku hex. Gotowe projekty można znaleźć w internecie, jednak często konieczne jest samodzielne napisanie lub modyfikacja kodu źródłowego. Różnice cenowe między PIC16F84 a PIC16F84A wynikają z wycofania starszego modelu i dostępności magazynowej, a nie z wbudowanego oprogramowania. Przykłady kodów, zwłaszcza w assemblerze, można znaleźć na oficjalnej stronie Microchip. Opisy w kodzie źródłowym służą do dokumentacji funkcji programu, co ułatwia naukę i modyfikację. Autor dyskusji posiada kompilatory i prosi o linki do gotowych programów lub pomoc w napisaniu kodu, jednak zaleca się samodzielne pisanie i testowanie programów zgodnie z własnymi potrzebami.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA