|
- A PIC ÖSSZES Vdd és Vss (AVdd és AVss) (tápfeszültség) lábát be kell kötni!
- A táplábak mellé a lehető legközelebb 100nF-os KERÁMIA kondenzátorokat kell elhelyezni.
- Az MCLR lábat, 10kohm-mal fel kell húzni a Vdd tápfeszültségre.
- Külső kvarc használatakor 4MHz-ig XT, a fölött pedig HS konfigurációt kell beállítani.
- Stabilizált tápegységet kell használni, a kapcsoló üzemű "telefon töltő" adapterek okozhatnak hibákat.
- Programozáshoz, használj lehetőleg PICKIT2 vagy 3 programozót. Kerülendő a JDM (soros porti) programozó.
- A PIC adatlapja (PDF), tartalmazza a lábak kiosztását és a PIC minden paraméterét. Az adatlap ingyen letölthető!
- Egyes PIC típusoknál az RA4 nyitott nyelőelektródás (Csak lefelé húz L szintre, H szintet nem ad ki!)
- Ha a PGM lábat digitális ki-/bemenetnek használod, az alacsony feszültségű programozási lehetőséget le kell tiltani.
Ha jól értem, neked ilyesmire van szükséged:
char jatek = 0;
void balroljobbra(void) {
LED = 1;
Delay_nyg(150);
for (i = 0; i < 7; i++) {
LED = LED << 1;
Delay_nyg(150);
}
}
void jobbrolbalra(void) {
LED = 128;
Delay_nyg(150);
for (i = 0; i < 7; i++) {
LED = LED >> 1;
Delay_nyg(150);
}
}
void odavissza(void) {
LED = 1;
Delay_nyg(150);
for (i = 0; i < 7; i++) {
LED = LED << 1;
Delay_nyg(150);
}
for (i = 0; i < 6; i++) {
LED = LED >> 1;
Delay_nyg(150);
}
}
void szerteszet(void) {
LED = 8;
Delay_nyg(150);
for (i = 0; i < 4; i++) {
LED = LED >> 1;
Delay_nyg(150);
}
LED = 16;
Delay_nyg(150);
for (i = 0; i < 4; i++) {
LED = LED << 1;
Delay_nyg(150);
}
}
void nygfigy(void) {
if (PORTB.F0 == 0) {
jatek = 10;
}
if (PORTB.F1 == 0) {
jatek = 11;
}
if (PORTB.F2 == 0) {
jatek = 12;
}
if (PORTB.F3 == 0) {
jatek = 13;
}
}
void main(void) {
while (1) {
nygfigy();
switch (jatek) {
case 10:
balroljobbra();
jatek = 0;
break;
case 11:
jobbrolbalra();
jatek = 0;
break;
case 12:
odavissza();
jatek = 0;
break;
case 13:
szerteszet();
jatek = 0;
break;
}
}
}
Üdv. Don_Peter! Köszönöm a segítő választ és, hogy foglalkozol vele! Ha időm engedi kidolgozom részletesen úgy, hogy értető legyen és majd felrakom a programot átnézésre. Nagy-nagy köszönet!
Üdv. Bakman! Nagyon köszönöm a segítséget, ez egy jól átlátható program! Majd beszámolok, hogyha sikerül megoldani. A hozzászólás módosítva: Jan 25, 2023
Srácok volt itt anno egy srác vagy több is nem tudom, aki tudott segíteni assembler programozásban. Akkor egy M68K-ra akartam írni egy delay rutint.
Most akadt egy problémám és sanszos itt előbb kapok rá választ mint más topikban.
Nagyon egyszerű lesz ígérem.. move.l #$2410, a0
move.b (a0)+, d1
Kérdésem pedig az ami a csatolt képen is látszik, miért nem kerül bele a 10 D0 regiszterbe?
Előre is köszi.
Nem akarok hülyeséget mondani, de nem azért, mert nem az a0 regiszter tartalmát másolod, hanem az általa megcímzett memóriából veszel elő egy bájtot?
Bővebben: Link A hozzászólás módosítva: Sze, 9:58
De igen, közben rájöttem a balgaságomra.. 
Köszi.
|
|