hulp bij het programmeren ... broncode

D

delifadzli

Guest
Hallo iedereen,

eerst en vooral, ik ben vrij nieuw voor de C-taal ..

Hier is een voorbeeld broncode .... van 7 segment display via de AVR ...

# Include <avr/io.h>
# Include <avr/interrupt.h>
# Include <util/delay_basic.h># Define SEVEN_SEGMENT_PORT PORTD
# Define SEVEN_SEGMENT_DDR DDRD

uint8_t cijfers [3]; / / Bevat de cijfers voor 3 toontSevenSegment void (n uint8_t, uint8_t DP)
(
/ *
Deze functie schrijft een cijfers gegeven door n om het scherm
de komma wordt weergegeven als dp = 1

Opmerking:
n moet minder dan 9
* /
if (n <10)
(
schakelaar (n)
(
case 0:
SEVEN_SEGMENT_PORT = 0b00000011;
te breken;

Geval 1:
SEVEN_SEGMENT_PORT = 0b10011111;
te breken;

Case 2:
SEVEN_SEGMENT_PORT = 0b00100101;
te breken;

case 3:
SEVEN_SEGMENT_PORT = 0b00001101;
te breken;

case 4:
SEVEN_SEGMENT_PORT = 0b10011001;
te breken;

case 5:
SEVEN_SEGMENT_PORT = 0b01001001;
te breken;

case 6:
SEVEN_SEGMENT_PORT = 0b01000001;
te breken;

Bij 7:
SEVEN_SEGMENT_PORT = 0b00011111;
te breken;

geval 8:
SEVEN_SEGMENT_PORT = 0b00000001;
te breken;

Case 9:
SEVEN_SEGMENT_PORT = 0b00001001;
te breken;
)
if (DP)
(
/ / Als decimale punt moet worden weergegeven
/ / Te maken 0de beetje laag
SEVEN_SEGMENT_PORT & = 0b11111110;
)
)
anders
(
/ / Dit symbool op het display vertelt dat n groter was dan 9
/ / Display kan dus niet mee omgaan
SEVEN_SEGMENT_PORT = 0b11111101;
)
)

Wacht void ()
(
uint8_t i;
for (i = 0; i <10; i )
(
_delay_loop_2 (0);
)
)

void Print (uint16_t NUM)
(
uint8_t i = 0;
uint8_t j;
if (NUM> 999) terug te keren;while (NUM)
(
cijfers = num% 10;
i ;

num = num/10;
)
for (i = j, j <3; j ) cijfers [j] = 0;
)

InitADC void ()
(
ADMUX = (1 <<REFS0); / / Voor Aref = AVcc;
ADCSRA = (1 <<Aden) | (7 <<ADPS0);
)

uint16_t ReadADC (uint8_t ch)
(
/ / Selecteer ADC kanaal CH moet worden 0-7
ch = ch &0b00000111;
ADMUX | = l;

/ / Start een conversie
ADCSRA | = (1 <<ADSC);

/ / Wacht tot conversie te voltooien
while (! (ADCSRA & (1 <<ADIF)));

/ / Clear ADIF door het schrijven van een te
ADCSRA | = (1 <<ADIF);

return (ADC);
)
void main ()
(
uint16_t adc_value;
uint8_t t;
/ / Prescaler = FCPU/1024
TCCR0 | = (1 <<CS02);

/ / Enable Overloop Interrupt Enable
TIMSK | = (1 <<TOIE0);

/ / Initialiseren Counter
TCNT0 = 0;

/ / Port C [2,1,0] als buiten gezet
DDRB | = 0b00000111;

PORTB = 0b00000110;

/ / Port D
SEVEN_SEGMENT_DDR = 0xFF;

/ / Zet alle segmenten
SEVEN_SEGMENT_PORT = 0xFF;

/ / Enable Global Interrupts
sei ();

/ / ADC inschakelen
InitADC ();

/ / Oneindige lus
while (1)
(
/ / Lees ADC
adc_value = ReadADC (0);

/ / Converteer naar mate Centrigrade
t = adc_value / 2;

/ / Print weer te geven
Print (t);

/ / Wacht enige tijd
Wait ();

)
)

ISR (TIMER0_OVF_vect)
(
statische uint8_t i = 0;
if (i == 2)
(
i = 0;
)
anders
(
i ;
)
PORTB = ~ (1 <<i);
SevenSegment (cijfers , 0);

)kan iemand me helpen bij de aanpassing van deze code

-Sinds ik PIC wilt gebruiken 16f877A .... naar LM35 display met 7 segmenten ....

Ik probeer het draaien door aanpassing van mezelf ... ... zonder enige kennis lijkt te zijn van fouten .. huhu

Gelieve .... help ...

Ik gebruik PICKit2 v2.61 te compileren ....

 
Hoe kun je de samenstelling van een code die is geschreven voor de AVR met een PICKit2?

Allereerst PICKit2 is een hardware die wordt gebruikt om programma een chip.

PIC en AVR hebben verschillende architectuur.Dus u cant gebruik van een pic-compiler voor AVR compileren een code geschreven voor

Je moet de code te herschrijven voor pic

Beter beginnen met een basis tutorial over microcontrollers

Nandhu

 
delifadzli schreef:

kan iemand me helpen bij de aanpassing van deze code, aangezien ik-wil gebruiken PIC 16f877A .... naar LM35 display met 7 segmenten ....
Ik probeer het draaien door aanpassing van mezelf ... ... zonder enige kennis lijkt te zijn van fouten .. huhu aub .... help ...
Ik gebruik PICKit2 v2.61 te compileren ....
 
van de code die je gepost hebt ik het goed begrijp is het volgende.

1.ADC Setup, setup Display
2.Lees ADC
3.ADC omzetten van gegevens om de spanning gelijk, om te zetten in cijfers
4.Toon de geconverteerde data.

Ga via de code lijn per lijn, elkaar begrijpen lijn, vervolgens uit te voeren met behulp van dezelfde of een andere geschikte MPASM C-compiler voor de PIC-onderdelen.

Zijn zo simpel als dat ....

 

Welcome to EDABoard.com

Sponsor

Back
Top