pomoč pri načrtovanju ... izvorne kode

D

delifadzli

Guest
halo vsi,

v prvi vrsti, jaz sem čisto novi v C jeziku ..

Tukaj je vzorec izvorne kode .... odseka zaslona 7 preko 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 mest [3]; / / počakaj številka za 3 zaslonenična SevenSegment (uint8_t n, uint8_t dp)
(
/ *
Ta funkcija piše številk, ki jih n na zaslonu
decimalno vejico se prikaže, če dp = 1

Opomba:
n mora biti manjša od 9
* /
if (n <10)
(
stikalo (n)
(
primeru 0:
SEVEN_SEGMENT_PORT = 0b00000011;
break;

primer 1:
SEVEN_SEGMENT_PORT = 0b10011111;
break;

primer 2:
SEVEN_SEGMENT_PORT = 0b00100101;
break;

primer 3:
SEVEN_SEGMENT_PORT = 0b00001101;
break;

primer 4:
SEVEN_SEGMENT_PORT = 0b10011001;
break;

primer 5:
SEVEN_SEGMENT_PORT = 0b01001001;
break;

Pri 6:
SEVEN_SEGMENT_PORT = 0b01000001;
break;

Pri 7:
SEVEN_SEGMENT_PORT = 0b00011111;
break;

Pri 8:
SEVEN_SEGMENT_PORT = 0b00000001;
break;

Pri 9:
SEVEN_SEGMENT_PORT = 0b00001001;
break;
)
if (dp)
(
/ / Če se prikaže decimalno vejico mora
/ / Da 0. bit Low
SEVEN_SEGMENT_PORT & = 0b11111110;
)
)
drugega
(
/ / Ta simbol na zaslonu pove, da je n večji od 9
/ / Da zaslon ne more ravnati
SEVEN_SEGMENT_PORT = 0b11111101;
)
)

Počakajte ničen ()
(
uint8_t i;
for (i = 0; i <10; i )
(
_delay_loop_2 (0);
)
)

nična Print (uint16_t num)
(
uint8_t i = 0;
uint8_t j;
if (num> 999) vračanja;while (num)
(
številk = num% 10;
i ;

num = num/10;
)
za (j = i; j <3; j ) številk [j] = 0;
)

ničen InitADC ()
(
ADMUX = (1 <<REFS0); / / Za Aref = AVcc;
ADCSRA = (1 <<ZDEN) | (7 <<ADPS0);
)

uint16_t ReadADC (uint8_t ch)
(
/ / Izberi ADC Channel ch mora biti 0-7
ch = ch &0b00000111;
ADMUX | = ch;

/ / Start Single konverzijo
ADCSRA | = (1 <<ADSC);

/ / Počakajte za konverzijo za dokončanje
while (! (ADCSRA & (1 <<ADIF)));

/ / Clear ADIF s pisanjem enega, da ga
ADCSRA | = (1 <<ADIF);

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

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

/ / Inicializiraj Counter
TCNT0 = 0;

/ / Port C [2,1,0], kakor je določeno dana
DDRB | = 0b00000111;

PORTB = 0b00000110;

/ / Port D
SEVEN_SEGMENT_DDR = 0XFF;

/ / Izklop vseh segmentih
SEVEN_SEGMENT_PORT = 0XFF;

/ / Enable Global prekinitve
SEI ();

/ / Enable ADC
InitADC ();

/ / Neskončno zanko
while (1)
(
/ / Preberi ADC
adc_value = ReadADC (0);

/ / Pretvori v obsegu Centrigrade
t = adc_value / 2;

/ / Print za prikaz
Print (t);

/ / Počakajte nekaj časa
Čakati ();

)
)

ISR (TIMER0_OVF_vect)
(
statični uint8_t i = 0;
if (i == 2)
(
i = 0;
)
drugega
(
i ;
)
PORTB = ~ (1 <<i);
SevenSegment (števila , 0);

)moči kdorkoli pomoč mi pri prilagajanju tega kodeksa

-Ker hočem uporabo PIC 16f877A .... prikazati LM35 s 7 segment ....

Poskušam teči sam ... prilagoditvi brez znanja ... Zdi se, da napaka .. huhu

prosim .... pomoč ...

I uporabo PICKit2 v2.61 za zbiranje ....

 
Kako se lahko pripravijo pisno kodo za AVR s PICKit2?

Najprej PICKit2 je strojna oprema, ki se uporablja za program čip.

PIC in AVR imajo drugačno arhitekturo.Torej si ne moremo uporabiti pic prevajalnik za pripravo kodo napisano za AVR

Moraš reportaža kodo za pic

Bolje začeti z osnovno tutorial o mikrokontrolerje

Nandhu

 
delifadzli napisal:

moči kdorkoli pomoč mi v prilagoditvi tega kodeksa, saj, hočem uporabo PIC 16f877A .... prikazati LM35 s 7 segment ....
Poskušam teči sam ... prilagoditvi brez znanja ... Zdi se, da napaka .. huhu .... prosim pomoč ...
I uporabo PICKit2 v2.61 za zbiranje ....
 
iz šifranta ste napoteni razumem, da ne sledi.

1.Setup ADC, setup Prikaži
2.Preberite ADC
3.pretvorbo podatkov ADC na napetost enaka, pretvoriti v številke
4.Prikaži preračuna podatkov.

Iti skozi kodo vrstico za vrstico, razume vsako vrstico, nato izvajala enako uporabo MPASM ali primerne C prevajalnik za PIC dele.

Njena tako enostavno, kot da je ....

 

Welcome to EDABoard.com

Sponsor

Back
Top