Fórum témák
» Több friss téma |
Cikkek » UTP- és telefonkábel-vizsgáló készülék PIC-kel UTP- és telefonkábel-vizsgáló készülék PIC-kel
Szerző: Bago, idő: Aug 18, 2009, Olvasva: 21425, Oldal olvasási idő: kb. 1 perc
A szoftver első verziója MikroBasicben készült. Ezzel a vizsgálatokat nagyon egyszerűen, if...then ciklusokkal lehet kezelni, az eredményeket pedig változókban tudjuk tárolni. A BASIC programból készült HEX fájl 2559 bájt lett. Egyes vélemények szerint PIC-et programozni a legkevésbé BASIC-ben érdemes. Helyette inkább a C nyelvet, de méginkább az assemblyt javasolják. Mivel én leginkább Basicben szereztem gyakorlatot, választásom ezért esett rá kezdetben. Bár az ilyen vélemények általában nem motiválnak, mégis úgy döntöttem, hogy a programot elkészítem assembly változatban is. Ennek az oka, hogy a korábban a Commodore64 gépi kódú programozásával szintén volt dolgom, tehát az assembly nyelv nem ismeretlen számomra. (Csak az érdekesség kedvéért megjegyzendő, hogy az assemblyből fordított HEX fájl mindössze 1111 bájt.) Nézzük tehát, hogyan is működik a program részletesen: A konfigurációs beállításokat követően beállítjuk a portok adatirányát. A PORTC és a PORTD kimenet, a PORTB pedig bemenet. Ezt követően a PORTB belső felhúzóellenállásainak aktiválása következik. A PORTC és PORTD bitjeit 1-re állítjuk, ezzel a kijelző sötét marad, és az adóoldali kezdőállapot is előáll. A vizsgálati eredményeket a BANK0 20h, 21h, 22h regisztereiben tárolja a program. A 20h a patch és a telefonkábelek, a 21h a crosslink kábel regisztere. A 22h az olyan telefonkábelek regisztere, amelyeknél a kábelsorrend a két végén fel van cserélve. Bár telefonkábelekénél azonos kábelsorrendet szoktak alkalmazni, néha előfordul, hogy ezt felcserélik. Az ilyen probléma kiküszöbölésére szolgál ez a regiszter. A 23h regiszter a kijelző állapotának átmeneti tárolására szolgál. Ezután következik a TMR1 időzítő konfigurálása. Mivel a PIC 4MHz-es órajellel üzemel, az 1:8-as előosztó segítségével, és a 16 bites TMR1 0x3CAF értékkel való feltöltésével kb. 400 ms-os késleltetést érhetünk el. Az késleltető programrész úgy van kialakítva, hogy a delay1 címkével ellátott programsor visszaállítja az időzítőt a kezdeti értékre, majd elindítja. A delay2 címkétől kezdődően egy BTFSS utasítás vizsgálja, hogy az időzítő túlcsordult-e (PIR1 regiszter). Ha túlcsordult, leáll az időzítő és a szubrutinból visszatér a program.
A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |