hjælpe mig med en pic16877a

A

angelomary

Guest
Hej alle:
jeg arbejder i min sidste års projekt, jeg vælger at bruge en pic16877a, udgang til et buzzere & 8 * 8 Matrix, jeg forsøger at gennemføre mit design ved hjælp af en protous simulator, men der er ingen produktion, mens tal viser, er der en indgang, så er min kode forkert nogen vide, plz, min kode nedenfor
program locator2
void main ()
(char oldstate1 = 0;
char oldstate2 = 0;
char oldstate3 = 0;
char oldstate4 = 0;
char i = 0;
TRISA = 0b00001111;
trisb = 0x00;
trisc = 0x00;
trisd = 0x00;
trise = 0b000;
porte = 0;
portc = 0;
portb = 0;do (
if (Button (& PORTA, 0, 1, 1)) / / detektere logisk på RA0 pin
oldstate1 = 1;
if (oldstate1 & & Button (& PORTA, 0, 1, 0)) / / detektere en-til-nul-overgangen på RA0 pin
(
porte.f0 = ~ porte.f0; / / negerer værdi på RE0
oldstate1 = 0;
)
) While (1) / / endeløs løkkedo (
if (Button (& PORTA, 1, 1, 1)) / / detektere logisk på RA1 pin
oldstate2 = 1;
if (oldstate2 & & Button (& PORTA, 1, 1, 0)) / / detektere en-til-nul-overgangen på RA1 pin
(porte.f1 = ~ porte.f1; / / negerer værdi på RE0
oldstate2 = 0;
)
) While (1) / / endeløs løkkedo (
if (Button (& porta, 2, 1, 1)) / / detektere logisk på RA2 pin
oldstate3 = 1;
if (oldstate3 & & Knap (& porta, 2, 1, 0)) / / detektere en-til-nul-overgangen på RA2 pin
(
if (i = 0) (
portc = 0b11001100;
portb = 0b01010110;
i = i 1;
)

if (i = 1) (
portc = 0b01001100;
portb = 0b01011110;
i = i 1;
)

if (i = 2) (
portc = 0b00001100;
portb = 0b11011110;
i = i 1;
)

if (i = 3) (
portc = 0b01100100;
portb = 0b11010110;
i = i 1;

)

if (i = 4) (
portc = 0b01011100;
portb = 0b11000110;
i = 0;
)

oldstate3 = 0;
)
) while (1) / / endeløs løkkedo (
if (Button (& PORTA, 3, 1, 1)) / / detektere logisk på RA3 pin
oldstate4 = 1;
if (oldstate4 & & Button (& PORTA, 3, 1, 0)) / / detektere en-til-nul-overgangen på RA3 pin
(If (i = 0) (
portc = 0b01001100;
portb = 0b11100111;
i = i 1;
)

if (i = 1) (
portc = 0b01010100;
portb = 0b11110110;
i = i 1;
)

if (i = 2) (
portc = 0b01101101;
portb = 0b11010100;
i = i 1;
)

if (i = 3) (
portc = 0b01011100;
portb = 0b11011010;
i = i 1;

)

if (i = 4) (
portc = 0b01101110;
portb = 0b10010110;
i = 0;
)

oldstate4 = 0;
)
) while (1) / / endeløs løkke

)Lagt efter 4 minutter:eek:gså her er mit kredsløb<img src="http://images.elektroda.net/87_1260126451_thumb.jpg" border="0" alt="help me with a pic16877a" title="hjælp mig med en pic16877a"/>
 
Hi angelomary,Jeg ved ikke, om der er noget galt i din kode.I Proteus simulering ikke bruge dem 'analoge' modstande til rullemenuen eller pullup formål.Du kan finde en model med navnet 'PULLUP' i de dele listen.Det er en digital model af en modstand, og det kan gøre simulering (brug kun i digitale kredsløb), hurtigere og også sikrer den korrekte logik stater.

 
tak for din replay jeg forsøgt at sætte en pullup modstand i stedet, men ingen resultat selv skifte dosent gøre en logisk 1 til pic mens analoge den blev sat en logik 1

 
Hi angelomary,

Jeg tror, jeg fik den!Du har ikke indstillet havnen En stifter som digitale.Som standard, når strømmen på nulstille alle benene, der kan bruges som ADC inputs er konfigureret som analoge indgange.At gøre alle ADC knappenåle digital, der 'ADCON1 = 0x7' under initialiseringen af havnen ben.Se venligst "analog-til-digital omformer (A / D) MODUL 'i PIC16F877A datablad for yderligere informationer.

 

Welcome to EDABoard.com

Sponsor

Back
Top