PL178631B1 - Sposób zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej - Google Patents

Sposób zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej

Info

Publication number
PL178631B1
PL178631B1 PL95311050A PL31105095A PL178631B1 PL 178631 B1 PL178631 B1 PL 178631B1 PL 95311050 A PL95311050 A PL 95311050A PL 31105095 A PL31105095 A PL 31105095A PL 178631 B1 PL178631 B1 PL 178631B1
Authority
PL
Poland
Prior art keywords
call
mov
test
error
block
Prior art date
Application number
PL95311050A
Other languages
English (en)
Other versions
PL311050A1 (en
Inventor
Luis R. Ortiz
Alexis Torres
Original Assignee
Telular Int Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US08/505,868 external-priority patent/US5859894A/en
Application filed by Telular Int Inc filed Critical Telular Int Inc
Publication of PL311050A1 publication Critical patent/PL311050A1/xx
Publication of PL178631B1 publication Critical patent/PL178631B1/pl

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W24/00Supervisory, monitoring or testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/24Arrangements for testing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/725Cordless telephones
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/14WLL [Wireless Local Loop]; RLL [Radio Local Loop]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

1. Sposób zdalnego testowania bloku interfejsu i urzadzenia nadawczo-odbiorczego w systemie lacz- nosci komórkowej, w którym blok interfejsu przylacza sie do stacjonarnego urzadzenia telefonicznego i przetwarza sie sygnaly wybierania DTMF lub typu impulsowego z dolaczonego do niego stacjonarnego urzadzenia telefonicznego na format cyfrowy oraz wysyla sie te sygnaly do komórkowego urzadzenia nadawczo-odbiorczego, znamienny tym, ze nadaje sie sygnal inicjacji testu spoza miejsca zainstalowania do bloku diagnostycznego, wykonuje sie, w odpowiedzi na nadanie sygnalu inicjacji, testowanie komórkowego bloku interfejsu w urzadzeniu do zdalnego testowania, przetwarza sie wyniki testowania na dane przydatne do wyslania za posrednictwem sieci komórkowej oraz wysyla sie dane wynikowe testu do znajdujacego sie poza miejscem zainstalowania bloku monitorujacego za pomoca komórkowego urzadzenia nadawczo- odbiorczego. FIG . 10 PL

Description

Przedmiotem wynalazku jest sposób zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej.
Znane są z opisów patentowych USA nr nr 4 658 096 i 4 737 975, systemy interfejsu komórkowego, w których blok interfejsu łączy standardowy zestaw telefoniczny, aparat faksymilowy, modem lub inne urządzenia telekomunikacyjne, z urządzeniem komórkowym nadawczo-odbiorczym, przy czym blok interfejsu umożliwia normalną pracę urządzenia telekomunikacyjnego przez radiowe urządzenie nadawczo-odbiorcze. Blok interfejsu może również przetwarzać sygnały wybierania DTMF lub typu impulsowego na format cyfrowy, przekazywany do radiowego urządzenia nadawczo-odbiorczego, tak aby wybrany numer mógł być wykorzystany do wywołania numeru przez system radiowy za pośrednictwem urządzenia nadawczo-odbiorczego.
Znane jest również stosowanie sprzętu diagnostyczno-testującego dla całych systemów komórkowych. Znane jest także stosowanie bloku samodzielnego, samodzielnie się testującego. Ten ostatni opisano w opisie patentowym USA nr 5 016 269, w którym opisano alarmową skrzynkę telefonu komórkowego. W tym patencie opisano autodiagnostykę realizowaną przez samą skrzynkę połączeniową. Skrzynka połączeniowa zapewnia autodiagnostykę i periodycznie melduje stan sprawdzanej pozycji do stacji centralnej przez sieć komórkową. W tym opisie patentowym przedstawiono aparat komórkowy i urządzenie nadawczo-odbiorcze oraz przyporządkowany mu system autodiagnostyczny do sprawdzania systemu i przesyłania zwrotnie raportów do stacji centralnej.
178 631
Jednakże ten opis patentowy nie obejmuje monitorowania i funkcji autodiagnostyki przetwornika DTMF, na przykład stosowanego we wspomnianych powyżej opisach patentowych USA nr nr 4 658 096 i 4 737 975.
Te znane rozwiązania odnoszą się ogólnie biorąc do systemów telekomunikacyjnych bezprzewodowej łączności osobistej, z wieloma inteligentnymi stacjami bazowymi i inteligentnymi przenośnymi terminalami mikrotelefonicznymi, z których każdy ma określony z góry obszar pokrycia komórki radiowej, a zwłaszcza odnoszą się do osobistych cyfrowych telekomunikacyjnych systemów komórkowych (PCS) z pełnym interfejsem ISDN, umożliwiając bezpośrednie połączenie i komutację ruchu połączeniowego PCS przez interfejs ISDN i publiczną komutowaną sieć telefoniczną lub dowolną inną sieć komutowaną, przy czym system telekomunikacji osobistej ma możliwości telefoniczne, dacyjne, wizyjne (lub dowolną ich kombinację) i zestawiania dwukierunkowych w pełni dupleksowych połączeń wchodzących i wychodzących, i przy tym jest całkowicie dyspozycyjny pod względem operacyjnym i w pełni kompatybilny z dowolnym wybranym rodzajem modulacji. Ponadto międzykomórkowy protokół przejmowania realizuje logika rozproszona, wprowadzona w postaci oprogramowania w inteligentnych przenośnych terminalach mikrotelefonicznych, inteligentnych stacjach bazowych i publicznej komutowanej sieci telefonicznej lub dowolnej sieci komutowanej wyposażonej w sterującą bazę danych usług PCS.
Wzrastająca dostępność telekomunikacji ruchomej i przenośnej uwalnia abonentów profesjonalnych i mieszkaniowych od ograniczeń fizycznych w pełni przewodowej sieci telekomunikacyjnej. W szczególności, komórkowe systemy telekomunikacyjne wraz z powiadamianiem i innymi usługami uzupełniającymi, zapewniają pełną mobilność usług telekomunikacyjnych. Znaczny postęp techniczny w zakresie sprzętu ruchomego i przenośnego, jak również nowych metod, jak na przykład transmisja cyfrowa w telekomunikacji bezprzewodowej, istotnie rozszerzyły liczbę i typy bezprzewodowych usług telekomunikacyjnych z wykorzystaniem widma radiowego, dostępnych dla użytkownika. Te usługi perspektywiczne obejmują choć nie wyłącznie, rozszerzone formy usług telefonii komórkowej, rozszerzone usługi bezprzewodowej telefonii cyfrowej, obsługę przenośnych urządzeń faksowych oraz bezprzewodową obsługę sieci lokalnych i mogą być wykorzystywane przez istniejącą publiczną sieć komutowaną lub przez alternatywne przewodowe sieci lokalne, na przykład systemy telewizji kablowej. Jako takie, cyfrowe osobiste systemy telekomunikacyjne mogą istnieć niezależnie lub przy współpracy z lokalnymi sieciami przewodowymi, wypełniając luki w istniejących obecnie systemach telekomunikacyjnych stwarzając również nowe rynki, z których wiele będzie dopiero kształtowanych. Pojawienie się PCS będzie miało duży wpływ na przyszłe opracowania i konfigurację wszystkich systemów telekomunikacyjnych przez znaczną poprawę ich elastyczności i funkcjonalności. Odpowiednio do tego, realizatorzy usług PCS będą mieli możliwości wzbogacenia i obsłużenia istniejących i nowych rynków krajowych w sposób ekonomiczny i odpowiedzialny.
Wymagania w stosunku do systemów telekomunikacji osobistej gwałtownie zmieniają się w miarę wzrostu zapotrzebowania na telekomunikację błyskawiczną w wyniku zwiększonej mobilności abonentów. Jedną z zalet PCS jest to, że do wzbogacenia możliwości dotarcia do każdej osoby, w każdym czasie, w każdym miejscu, może wykorzystywać pojedyncze urządzenie telekomunikacyjne. PCS daje użytkownikowi możliwość zwiększenia mobilności i elastyczności, ponieważ takie podejście rozwiązuje podstawowy problem pozostawania w ciągłej łączności z abonentem. PCS drogą radiową zapewni abonentom łączność bez utraty ważnego połączenia, jak również zmniejszenie czasu i wydatku na rozmowy zwrotne. PCS łączą funkcjonalność techniki i infrastruktury urządzeń radiowych i publicznej komutowanej sieci telefonicznej (Public Switched Telephone PSTN - Network) i umożliwiają dopasowanie możliwości podtrzymywania w pełni dupleksowych połączeń (dwukierunkowych połączeń wchodzących i wychodzących) oraz przejmowania między komórkami radiowymi (umożliwiając użytkownikom swobodne przemieszczanie się z jednej komórki radiowej do drugiej, bez przerywania rozmowy). Istotne jest zatem, aby pamiętać, że istnieje stale wzrastające zapotrzebowanie na usługi PCS i technologie dla licznych, czasem niekompatybilnych zastosowań, mianowicie bezprzewodowych prywatnych central wewnętrznych, mniejszych i lżej4
178 631 szych przenośnych telefonów komórkowych, przenośnych aparatów faksowych, wielokanałowych telefonów bezprzewodowych i dodatkowych usług, których celem jest umożliwienie kontaktowania się danych poszczególnych użytkowników (a nie danych stacji).
Obecnie stosowany sprzęt radiowy i związane z nim oferowane obecnie usługi (to znaczy telefony bezprzewodowe, powiadamianie radiowe i łączność radiokomórkowa) nie są w stanie całkowicie zaspokoić zapotrzebowania na te nowe typy usług PCS. Na przykład telefony bezprzewodowe są wykorzystywane wewnątrz i wokół domu lub biura, pracują na bardzo niewielkiej liczbie kanałów (na przykład dziesięciu) i w zagęszczeniu, a ich wykorzystanie ogranicza się do bezpośredniej bliskości przyporządkowanej stacji bazowej. Usługi powiadamiania radiowego są tylko jednokierunkowe i mają ograniczone możliwości. Komórkowe i specjalizowane usługi radiokomunikacji ruchomej nie są w stanie zaspokoić pełnego zakresu spodziewanego zapotrzebowania na PCS. Z czasem PCS będą dysponowały standaryzowanym sprzętem ze wspólnymi modułami zapewniającym większą niezawodność współpracującego sprzętu, który będzie również mniej wrażliwy na przejściowe zakłócenia od źródeł zewnętrznych, będzie wyposażony w możliwości automatycznej rejestracji połączeń, automatycznego przekazywania połączeń, pocztę głosową, możliwość odbioru faksowego, możliwości zmiany miejsca zainstalowania, zdalne przekazywanie danych, zwiększony zakres ochrony prywatności/identyfikacji rozmówcy/usług kwalifikowanych, zwiększenie żywotności akumulatorów i wspólne protokoły. W celu możliwie najlepszego spełnienia tego zadania, stosowanie cyfrowych PCS staje się koniecznością. Bezprzewodowe PCS mogą wyeliminować konieczność dysponowania budynkami okablowanymi dla telekomunikacji. Mówiąc ogólnie, PCS pozwoli zaopatrzyć sprzęt telekomunikacyjny w dodatkowe możliwości. Cyfrowy PCS zapewni udoskonalenie sprzętu telekomunikacyjnego, telekomunikacyjnych systemów i konstrukcji.
Istotą sposobu zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej, według wynalazku, w którym blok interfejsu przyłącza się do stacjonarnego urządzenia telefonicznego i przetwarza się sygnały wybierania DTMF lub typu impulsowego z dołączonego do niego stacjonarnego urządzenia telefonicznego na format cyfrowy oraz wysyła się te sygnały do komórkowego urządzenia nadawczo-odbiorczego, jest to, że nadaje się sygnał inicjacji testu spoza miejsca zainstalowania do bloku diagnostycznego, wykonuje się, w odpowiedzi na nadanie sygnału inicjacji, testowanie komórkowego bloku interfejsu w urządzeniu do zdalnego testowania, przetwarza się wyniki testowania na dane przydatne do wysłania za pośrednictwem sieci komórkowej oraz wysyła się dane wynikowe testu do znajdującego się poza miejscem zainstalowania bloku monitorującego za pomocą komórkowego urządzenia nadawczo-odbiorczego.
Korzystnie przed wysłaniem danych wynikowych testu generuje się sygnał potwierdzenia ze znajdującego się poza miejscem zainstalowania bloku monitorującego do bloku diagnostycznego, wskazującego nawiązanie połączenia dacyjnego.
Korzystnie w trakcie testowania bloku interfejsu monitoruje się funkcje wykonywane przez blok interfejsu.
Korzystnie w trakcie monitorowania symuluje się funkcje wykonywane przez urządzenie telekomunikacyjne, dla generowania w bloku interfejsu odpowiednich odpowiedzi tego bloku oraz określa się, czy blok interfejsu działa poprawnie.
Zaletą rozwiązania według niniejszego wynalazku jest to, że może być wykorzystywany w dowolnym systemie typu komórkowego, na przykład w systemie komórkowym lub w systemach podobnych do komórkowych, na przykład ISDN lub innych osobistych systemach telekomunikacyjnych. Wykorzystuje się blok adaptera lub interfejs, podobny do komórkowego, służący do przetwarzania sygnałów wybierania DTMF lub wybierania impulsowego na format cyfrowy w celu podania do podobnego komórkowego urządzenia nadawczoodbiorczego przyłączonego do systemu podobnego do komórkowego.
Rozwiązanie według wynalazku przeznaczone do wykorzystania w komórkowych blokach interfejsowych i systemach znanych ze stanu techniki, może być wykorzystywane z innymi radiowymi systemami nadawczo-odbiorczymi, na przykład IMTS, gdzie stosuje się bezprzewodowe łącze między stacją bazową i stacjami głównymi, których nadajniki połączo178 631 ne są z blokami interfejsowymi, które umożliwiają łączenie i normalne funkcjonowanie urządzenia typu telekomunikacyjnego, na przykład telefonu lądowego, aparatu faksymilowego, modemu itp., z radiowym urządzeniem nadawczo-odbiorczym. Blok interfejsu realizuje pewną liczbę funkcji, zależnie od jego docelowego wykorzystania. Na przykład w specjalizowanych systemach alarmowych, gdzie radiowe urządzenie nadawczo-odbiorcze realizuje tylko połączenia wychodzące, blok interfejsu nie musi realizować generacji dzwonienia, generacji sygnału zajętości itp., przekazywanych do urządzenia telekomunikacyjnego. W odróżnieniu od tego, w takich systemach, w których wymaga się realizacji tylko połączeń wchodzących, blok interfejsu nie musi przetwarzać sygnałów wybierania DTMF lub typu impulsowego na format cyfrowy. Według niniejszego rozwiązania stosuje się oprogramowanie, które ma dostęp do mikroprocesora bloku interfejsu komórkowego lub bloku interfejsu radiowego systemu nadawczo-odbiorczego, przy czym oprogramowanie może być uruchamiane albo ręcznie albo automatycznie w celu uaktywnienia urządzenia testującego. Oprogramowanie diagnozuje prawidłowość funkcjonowania wszystkich systemów programowych i sprzętowych. Istnieje możliwość sprawdzenia każdej z poszczególnych pozycji. Na przykład w bloku interfejsu może być sprawdzany konwerter DTMF, interfejs z czterech przewodów na łącze dwuprzewodowe, może być sprawdzane oprogramowanie tonu zajętości, jak również inne cechy charakteryzujące działanie interfejsu. Poza tym, sprawdzane może być urządzenie nadawczoodbiorcze, akumulator, a nawet dowolny inny parametr interfejsu. System konserwacyjny ma możliwość realizowania połączenia przez sieć komórkową do zadanego numeru telefonicznego stacji bazowej, przy czym stacja centralna następnie może albo wysyłać ton zwrotny, albo wybierać aktualny numer systemu interfejsowego, w celu pobrania sygnału zajętości. Można to uważać za pewien test. Można dokonywać również wysłania przez system komórkowy innego numeru telefonicznego w celu wywołania tej samej lub innej stacji centralnej, tak że może być wysłany precyzyjny ton wsteczny (1000 Hz), a oprogramowanie może porównać ten ton 100 Hz z własną konfiguracją w celu określenia, czy ma miejsce połączenie liniowe i czy system komórkowy działa poprawnie. Rozwiązanie jest szczególnie użyteczne, ponieważ pozwala abonentowi końcowemu uaktywnienie telefonu w przypadku, kiedy abonent jest przekonany, że ma kłopoty z tym telefonem. Test ten powoduje powiadomienie przedsiębiorstwa telefonicznego o wystąpieniu, bądź nie wystąpieniu nieprawidłowości w centrali systemu komórkowego lub o wystąpieniu problemu w jednostce bazowej abonenta końcowego.
W rozwiązaniu stosuje się dwa różne obwody. Pierwszy stanowi obwód telekonserwacyjny, a drugi - obwód zaliczający. Obwód telekonserwacyjny generuje test wielokrotny, który obejmuje realizację połączenia telefonicznego pod określony numer. Układ melduje wyniki testu pod tym konkretnym numerem. Układ może łączyć się przy wybieraniu własnego numeru, w celu upewnienia się, przez odebranie sygnału zajętości, że prawidłowo funkcjonuje odbiór i transmisja bloku. Te zespoły testów mogą być inicjowane przez abonenta, przez wciśnięcie przycisku znajdującego się w bloku. Po naciśnięciu przycisku, dioda LED, znajdująca się w pobliżu przycisku zaczyna migać ustawicznie, identyfikując wykonywany test. Jeżeli na końcu testu dioda LFD pozostaje włączona, to wskazuje to, że występuje problem związany z tym blokiem. Ten test łącznie zajmuje nie więcej niż 40 s. Z drugiej strony, jeżeli dioda LED przestaje migać i zostaje wyłączona, to wskazuje to, że test wypadł pomyślnie i że blok jest w porządku w odniesieniu do pozycji sprawdzanej w teście. W dodatkowej opcji zapewniona jest możliwość prowadzenia testu z numeru zewnętrznego, w której urządzenie nadawczo-odbiorcze pracuje poprawnie odbierając numer telefonu.
Działanie drugiego obwodu polega na tym, że wykorzystuje sygnał zaliczający z systemu komórkowego i generuje odpowiednie impulsy zliczające dla standardowego telefonu domowego lub automatu telefonicznego. Urządzenie interpretuje sygnał nadchodzący z systemu komórkowego i nie wymaga taryfowania lokalnego. Pracuje ono w sposób podobny, jak przy generacji drugich tonów. Może ono być wykorzystywane w dowolnym komórkowym systemie mającym możliwość wysyłania sygnałów zaliczających.
Sposób według wynalazku objaśniono w oparciu o przykład wykonania przedstawiony na rysunku, na którym fig. 1A i 1B przedstawiają sieć działań procesu samotestowania, fig. 2 przedstawia sieć działań podprogramu autotestującego odwieszenia słuchawki, fig. 3 6
178 631 sieć działań podprogramu autotestującego generacji tonu wybierania, fig. 4 - sieć działań podprogramu autotestującego generacji sygnału DTMF, fig. 5A, 5B i 5C przedstawiają sieć działań podprogramu autotestującego generacji dzwonienia, fig. 6 przedstawia sieć działań podprogramu autotestującego procesu odpowiedzi na dzwonienie, fig. 7A i 7B przedstawiają sieć działań podprogramu testu wywoływania, który sprawdza prawidłowość detekcji wywoływania i odpowiedzi na połączenie wchodzące, fig. 8A i 8B - sieć działań podprogramu generacji kodu błędu, fig. 9 przedstawia sieć działań podprogramu resetu, fig. 10 - schemat blokowy urządzenia testującego, zaś fig. 11, 12, 13 i 14 przedstawiają schematy układów do realizacji symulacji testowanych zdarzeń, fig. 15, 16 i 17 - sieci działań podprogramu wywołania ośrodka telekonserwacyjnego, fig. 18 przedstawia sieć działań podprogramu odbioru komunikatu inicjacji z ośrodka telekonserwacyjnego, zaś fig. 19 - sieć działań procedury weryfikacji stanu pętli głównej.
Wywołanie sekwencji testów operacyjnych jest dokonywane przez wciśnięcie przycisku autodiagnostyki i wtedy sterowanie bloku interfejsu 14 zostaje przekazane do głównego podprogramu autodiagnostycznego urządzenia testującego 10 w celu wykonania autotestowania.
Na figurach 1A i 1B przedstawiono podprogram wykonywania testu, czyli główny podprogram autodiagnostyczny. Wykonywana jest pewna liczba połączeń z różnymi procedurami testowymi. Po wykonaniu każdego podprogramu sprawdza się flagi błędów. W przypadku wystąpienia jakiejś nieprawidłowości sekwencja testowa zostaje zatrzymana. Następnie koduje się stan, a wynik przedstawiany jest użytkownikowi za pośrednictwem czterech diod LED, jak to opisano poniżej.
Jak to przedstawiono na fig. 1A, w kroku 1, sekwencja testu operacyjnego rozpoczyna się od inicjalizacji zmiennych i flag. W kroku 2 program wywołuje podprogram testu odwieszenia. W podprogramie testu odwieszenia telefon użytkownika zostaje odłączony od linii wyszukiwania i dzwonienia, w to miejsce do bloku interfejsu, dołączane jest urządzenie testujące, opisane poniżej szczegółowo. W kroku 3 dokonuje się sprawdzenia, czy w podprogramie testu odwieszenia wykrywa się jakiś błąd. Jeżeli wykryto błąd, sekwencja testu zostaje zawieszona, a program przechodzi do kroku 14 na fig. 1B. Jeżeli natomiast nie wykryto błędu, to program wywołuje podprogram testu tonu wybierania w kroku 4. W kroku 5 następuje sprawdzenie wystąpienia błędu tonu wybierania. Jeżeli wykrywa się błąd, sekwencja testu zostaje zawieszona, a program przechodzi do kroku 14 przedstawionego na fig. 1B. Jeżeli natomiast nie wykrywa się błędu, to program wywołuje następny test - podprogram testu DTMF w kroku 6. Program jest kontynuowany w przedstawionym na fig. 1B kroku 7, gdzie sprawdza się wynik podprogramu DTMF. W razie stwierdzenia błędu, sekwencja testu zostaje zawieszona, a program przechodzi do kroku 14. Jeżeli natomiast nie wykrywa się błędu, to program wywołuje następny test, podprogram testu dzwonienia w kroku 8. W kroku 9 dokonuje się sprawdzenia na wystąpienie błędu dzwonienia. Jeżeli wykrywa się błąd, to sekwencja testu zostaje zatrzymana, a program przechodzi do kroku 14. Jeżeli natomiast nie wykrywa się błędu, to program wywołuje następny test, podprogram testu odpowiedzi na dzwonienie w kroku 10. W kroku 11 dokonuje się sprawdzenia na wystąpienie błędu odpowiedzi na dzwonienie. Jeżeli wykrywa się błąd, to sekwencja testu zostaje zatrzymana, a program przechodzi do kroku 1c. Jeżeli natomiast nie wykrywa się błędu, to program przechodzi do podprogramu testu zestawienia połączenia w kroku 12. W kroku 13 dokonuje się sprawdzenia na wystąpienie błędu wywoływania. Jeżeli wykrywa się błąd, to sekwencja testu zostaje zatrzymana, a program przechodzi do kroku 14. Jeżeli natomiast nie wykrywa się błędu, to program przechodzi do podprogramu testu Fin Self w kroku 15. Jeżeli podczas wykonywania podprogramu wykrywa się błąd, to program przechodzi do kroku 14. W kroku 14 program wywołuje podprogram błąd połączenia. Ostatecznie sekwencja kończy się po skasowaniu w kroku 15 wszystkich zmiennych i flag, zwracając sterowanie na powrót do urządzenia telefonicznego i realizując normalne działanie bloku interfejsu 14.
Poniżej objaśniono na podstawie fig. 2 do fig. 9 i opisano szczegółowo poszczególne wspomniane powyżej programy testowe.
Przedstawiony na fig. 2 podprogram testu odwieszenia (krok 2 z fig. 1A) rozpoczyna się od inicjalizacji zmiennych i flag w kroku 16. W kroku 17, program kasuje wszelkie sygnały
178 631 wejściowe diod LED. W kroku 18, telefon użytkownika zostaje odłączony od linii wyszukiwania i dzwonienia bloku interfejsu 14, natomiast w kroku 19 na miejsce telefonu zostaje włączone urządzenie testujące 10. Krok 20 wnosi opóźnienie czasowe zapewniające dostatecznie długi czas reakcji, wystarczający do tego dołączenia. W kroku 21, urządzenie testujące symuluje i generuje odwieszenie. Krok 22 zapewnia opóźnienie czasowe dostateczne dla dokonania zdjęcia słuchawki z widełek. W kroku 23 program sprawdza stan widełek bloku interfejsu 14, który jest teraz dołączony do urządzenia testującego 10. W kroku 24 następuje sprawdzenie odwieszenia. Jeżeli nie wykryte zostanie odwieszenie, program przechodzi do kroku 25, gdzie zostaje ustawiona flaga Error_Flag i następuje ustawienie na „1” flag MainFlagError. Jeżeli jednak nie nastąpi wykrycie błędu, to program trwa do kroku 23, gdzie następuje odblokowanie tonu wybierania, jak to przedstawiono na fig. 3. Na koniec, podprogram kończy się, a program wraca do głównego podprogramu z fig. 1A i 1B.
Przedstawiony na fig. 3 podprogram testu wybierania rozpoczyna się inicjalizacją zmiennych i flag w kroku 27. Krok 28 zapewnia opóźnienie czasowe potrzebne do prawidłowego wybierania tonowego. W kroku 29 następuje testowanie tonu wybierania. Jeżeli ton wybierania jest nieprawidłowy, program przechodzi do kroku 30, gdzie następuje ustawienie flagi ErrorFlag, a flaga MAIN_FLAG_ERROR jest ustawiana na wartość 3. Jeżeli jednak nie nastąpi wykrycie błędu, to program przechodzi do kroku 31, skąd program zawraca na powrót do kroku 29, testując ton wybierania w ciągu przynajmniej 711 ms. Jeżeli nie wystąpił błąd i upłynęło 711 ms, to podprogram zostaje zakończony, a program wraca do podprogramu głównego z fig. 1A i 1B.
Przedstawiony na fig. 4 podprogram testu DTMF, który sprawdza prawidłowość konwersji na dane cyfrowe za pomocą bloku interfejsu 14, rozpoczyna się w kroku 32 zablokowanie tonu wybierania z poprzedniego podprogramu testowego. Krok 33 powoduje ustawienie pierwszego tonu DTMF na 0. W kroku 34, urządzenie testujące 10 wysyła ton DTMF odpowiadający tej wartości. Krok 35 realizuje opóźnienie czasowe zapewniające ilość czasu dostateczną do realizacji włączenia. W kroku 36 następuje zablokowanie tonu DTMF. Krok 37 realizuje opóźnienie czasowe umożliwiające interfejsowi wykrywanie impulsów tonowych DTMF. W kroku 38 blok interfejsu 14 odczytuje ton. W kroku 39 następuje sprawdzenie odebranego tonu DTMF. Jeżeli ton DTMF nie jest taki sam, jak odebrany ton DTMF, lub jeżeli ton DTMF nie zostanie odebrany, to program przechodzi do kroku 40, w którym następuje ustawienie flagi Enror Flag, a flaga MAINFLAGERROR zostaje ustawiona na wartość 4. Natomiast, jeżeli tony DTMF sąjednakowe, to program przechodzi do kroku 41 i następuje wybranie kolejnej cyfry DTMF. W kroku 42 program sprawdza, czy zostały przetestowane wszystkie tony DTMF. W przeciwnym przypadku program zawraca do testowania następnej cyfry. Na koniec, po przetestowaniu wszystkich tonów DTMF, podprogram się kończy i wraca do głównego podprogramu według fig. 1A i 1B.
Na figurach 5A i 5B przedstawiono podprogram testu dzwonienia. Ten podprogram testuje taktowanie dwóch impulsów dzwonienia generowanych przez układy dzwonienia bloku interfejsu 14. Jak to widać na fig. 5A, podprogram rozpoczyna się od inicjalizacji zmiennych i flag w kroku 43. W kroku 44 urządzenie testujące 10 generuje odłożenie słuchawki na widełki. Krok 45 stanowi opóźnienie czasowe umożliwiające blokowi interfejsu 14 wykrycie odłożenia słuchawki. W kroku 46 blok interfejsu 14 jest ustawiany dla upewnienia się, że odbywa się realizacja połączenia wchodzącego. Zatem blok interfejsu 14 generuje swoją sekwencję dzwonienia. Celem kroków 47 do 53 jest weryfikacja rozpoczęcia dzwonienia w ciągu następnych 2 s oraz braku wykrycia zdjęcia słuchawki z widełek. W kroku 47 następuje skasowanie bloku czasowego. Krok 48 sprawdza zdjęcie słuchawki i w razie wykrycia zdjęcia słuchawki następuje zatrzymanie testu, a program przechodzi do kroku 49 na fig. 5C w celu wskazania błędu. Natomiast przy wykryciu odłożenia słuchawki program przechodzi do kroku 51, w którym urządzenie testujące 10 sprawdza aktywność dzwonka. W kroku 52 sprawdza się rozpoczęcie dzwonienia. Jeżeli dzwonienie się rozpoczęło, to program przechodzi do kroku 54, przedstawionego na fig. 5B. Natomiast, jeżeli dzwonek jeszcze nie dzwonił, to program sprawdza blok czasowy w kroku 53. Jeżeli ten czas wynosi mniej niż 2 s, to program zawraca w puli do kroku 48, aż do rozpoczęcia dzwonienia. Natomiast, jeżeli upłynął
178 631 czas 2 s, to test zostaje przerwany i program przechodzi do kroku 49 według fig. 5C, w celu sygnalizacji błędu, jak to przedstawiono na fig. 5B. Krok 54 wnosi opóźnienie czasowe. Celem kroków 55 do 59 jest sprawdzenie, że dzwonek dzwoni w ciągu przynajmniej jednego okresu 1,3 s i że nie wykrywa się podniesienia słuchawki. W kroku 55 następuje skasowanie bloku czasowego. W kroku 56 sprawdza się odwieszenie. Jeżeli wykrywa się podniesienie słuchawki, to test zostaje zatrzymany, a program przechodzi do kroku 49 z fig. 5C, w celu sygnalizacji błędu. Natomiast, jeżeli wykrywa się odwieszenie, program przechodzi do kroku 57, w którym urządzenie testujące 10 sprawdza aktywność dzwonka. W kroku 58 sprawdza się, czy dzwonienie zostało zatrzymane. Jeżeli dzwonienie zostało zatrzymane, to program sprawdza blok czasowy, w kroku 59. Jeżeli blok czasowy działa mniej niż 1,3 s, to program zawraca w puli do kroku 56, aż do ustania dzwonienia. Natomiast, jeżeli czas upłynął, test zostaje zatrzymany, a program przechodzi do kroku 49 z fig. 5C. Celem kroków 60 do 62 jest sprawdzenie, że dzwonek dzwoni nie dłużej niż 2,5 s.
W kroku 60 urządzenie testujące 10 sprawdza aktywność dzwonka. W kroku 61 sprawdza się czy ustało dzwonienie. Jeżeli tak, to program przechodzi do kroku 63 z fig. 5C. Jeżeli jednak dzwonienie nie ustało, program sprawdza blok czasowy, w kroku 62. Jeżeli blok czasowy wykazuje upływ poniżej 2,5 s, to program zawraca w pętli do kroku 60, aż do ustania dzwonienia. Natomiast, jeżeli czas upłynął, test zostaje zatrzymany, a program skacze do kroku 49 z fig. 5C.
Celem kroków 63 do 65 przedstawionych na fig. 5C jest sprawdzenie, że w okresie 2 s nie wykrywa się podniesienia słuchawki. W kroku 63 następuje skasowanie bloku czasowego. W kroku 64 sprawdza się odwieszenie słuchawki. Jeżeli wykrywa się odwieszenie słuchawki, to test zostaje zatrzymany, a program przechodzi do kroku 49, w celu sygnalizacji błędu. Jeżeli nie wykrywa się podniesienia słuchawki, to program sprawdza blok czasowy, w kroku 65. Jeżeli blok czasowy wykazuje upływ czasu poniżej 2 s, to program zawraca do kroku 64, aż do rozpoczęcia dzwonienia. Natomiast, jeżeli czas upłynął, program przechodzi do kroku 66, w którym sprawdza, w ilu cyklach tego podprogramu sprawdzano dzwonienie. Jeżeli dzwonienie było sprawdzane tylko raz, program przechodzi do kroku 67, w którym zostaje ustawiona flaga Ring Second. Następnie program zawraca do kroku 47 w celu sprawdzenia dzwonienia po raz drugi. Natomiast jeżeli dzwonienie było sprawdzane dwukrotnie, to test zostaje zatrzymany, a program powraca do podprogramu głównego. Jeżeli podczas dowolnej części podprogramu testu odczytu został wykryty błąd, program przechodzi do kroku 49. W kroku 49 następuje skasowanie stanu połączenia wchodzącego i sekwencja zostaje zakończona. Następnie program przechodzi do kroku 50, w którym ustawiana jest flaga ErrorJFlag, a flaga MainFlag Error ustawiana jest na wartość 5. Następnie podprogram zostaje zakończony, a program powraca do podprogramu głównego.
Na figurze 6 przedstawiono podprogram testu odpowiedzi na dzwonienie. Ten podprogram sprawdza odpowiedź bloku interfejsu 14, kiedy do niej zgłoszono podniesienie słuchawki w cyklu dzwonienia, podczas odpowiedzi aparatu telefonicznego na połączenie wchodzące. Celem kroków 68 i 69 jest sprawdzenie, że w okresie następnych 2 s rozpocznie się dzwonienie i że nie wykrywa się podniesienia słuchawki. W kroku 68 następuje skasowanie bloku czasowego. W kroku 69 sprawdza się odwieszenie słuchawki. Jeżeli wykrywa się odwieszenie słuchawki, to test zostaje zatrzymany, a program przechodzi do kroku 73. Natomiast, jeżeli wykrywa się odwieszenie, program przechodzi dalej z aktywnym dzwonkiem. W kroku 71 sprawdza się rozpoczęcie dzwonienia. Jeżeli dzwonienie się rozpoczęło, to program przechodzi do kroku 74. Natomiast, jeżeli dzwonek jeszcze nie zadzwonił, to w kroku 72 program sprawdza blok czasowy. Jeżeli blok czasowy wykazuje upływ czasu poniżej 2 s, to program powraca w pętli do kroku 65, oczekując na rozpoczęcie się dzwonienia. Natomiast, jeżeli upłynął czas powyżej 2 s, test zostaje zatrzymany, a program przechodzi do kroku 73. W kroku 74 urządzenie testujące 10 generuje sygnał podniesienia słuchawki. Krok 75 stanowi opóźnienie czasowe umożliwiające blokowi interfejsu 14 wykrycie podniesienia słuchawki. W kroku 76 blok interfejsu 14 sprawdza stan widełek. Jeżeli nie wykrywa się podniesienia słuchawki w kroku 77, następuje zatrzymanie testu i program przechodzi do kroku 73.
178 631
Natomiast, jeżeli blok interfejsu 14 wykrywa podniesienie, program przechodzi do kroku 78. Jeżeli podczas dowolnej części podprogramu testu odpowiedzi na dzwonienie został wykryty błąd, program skacze do kroku 73, w którym następuje ustawienie flagi Error_Flag, a flaga Main_Flag_Error ustawiana jest na wartość 6. Następnie program przechodzi do kroku 78. W kroku 78 następuje skasowanie stanu połączenia wchodzącego i blok interfejsu 14 wstrzymuje sekwencję dzwonienia. Następnie podprogram się kończy i program przechodzi do podprogramu głównego.
Na figurach 7A i 7B przedstawiono podprogram testu dzwonienia. Ten podprogram sprawdza urządzenie komórkowe lub nadawczo-odbiorcze dołączone do bloku interfejsu 14, przez sprawdzenie na początku zasilania, a następnie wygenerowanie połączenia na własny numer telefonu. Na fig. 7A krok 79 dokonuje sprawdzenia, czy zasilanie urządzenia nadawczo-odbiorczego jest włączone. Jeżeli nie, flaga Mainl_Flag_Error w kroku 81 ustawiana jest na wartość 1, a następnie program przechodzi do kroku 93 na fig. 7B. Natomiast, jeżeli zasilanie jest włączone, to program przechodzi dalej do kroku 92, w którym blok interfejsu 14 żąda od urządzenia nadawczo-odbiorczego numeru telefonu i pobiera go. Krok 83 wnosi opóźnienie czasowe umożliwiające reakcję urządzenia nadawczo-odbiorczego. W kroku 84 blok interfejsu 14 generuje połączenie na własny numer telefonu. Krok 85 stanowi opóźnienie czasowe umożliwiające połączenie między siecią komórkową a urządzeniem nadawczoodbiorczym. W kroku 86 blok interfejsu 14 wykrywa stan pracy urządzenia nadawczoodbiorczego. W kroku 87 odbywa się stan połączenia. Jeżeli nie jest to stan pracy to flaga Mainl_Flag_Error w kroku 88 ustawiana jest na wartość 4, a następnie program przechodzi do kroku 93 na fig. 7B. Natomiast, jeżeli urządzenie nadawczo-odbiorcze znajduje się w stanie pracy, to program przechodzi dalej do kroku 99 z fig. 7B. Jak to przedstawiono na fig. 7B, urządzenie testujące 10 w kroku 89 sprawdza ton zajętości. Jeżeli w kroku 90 wykrywa się ton zajętości, to program przechodzi do kroku 93 w celu wskazania, że wszystko pracuje poprawnie. Natomiast, jeżeli ton zajętości nie zostanie wykryty, program przechodzi dalej, do kroku 91, w którym następuje sprawdzenie bloku czasowego. Jeżeli blok czasowy wykazuje upływ czasu poniżej 18,2 s, to program powraca do kroku 86. Zapewnia to większą ilość czasu dla sieci komórkowej na wysłanie zwrotne odpowiedzi na zajętość. Natomiast jeżeli czas już upłynął, program przechodzi dalej, do kroku 93, w którym flaga Main_Flag_Error ustawiana jest na wartość 3. W kroku 93, blok interfejsu 14 wysyła sygnał końca połączenia do urządzenia nadawczo-odbiorczego. Następnie urządzenie testujące 10 sygnalizuje odwieszenie słuchawki do bloku interfejsu 14, w kroku 94. Program kończy się i wraca do podprogramu głównego.
Zadaniem części podprogramu z fig. 8A i 8B jest generowanie kodu ERROR_CODE na podstawie uprzednio opisanych flag błędów, w taki sposób, że wyniki następnie mogą być wyprowadzone za pośrednictwem diod LED. Jak to przedstawiono na fig. 8A, podprogram rozpoczyna sprawdzanie wartości jednej z dwóch flag błędów, flagi Main_Flag_Error. W kroku 95 odbywa się sprawdzenie, czy Main_Flag_Error jest równe 1, czyli odpowiada Hook Slic Error. Jeżeli tak, to ERRORCODE ustawiany jest w kroku 96 na wartość 1, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 97. W kroku 97 odbywa się sprawdzenie, czy Main_Flag_Error jest równe 2, czyli odpowiada błędowi dzwonienia przy odwieszeniu. Jeżeli tak, to ERROR_CODE ustawiany jest w kroku 96 na wartość 1, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 97. W kroku 97 odbywa się sprawdzenie, czy Main_Flag_Error jest równe 2, czyli odpowiada błędowi dzwonienia-odwieszenia. Jeżeli tak, to ERROR_CODE ustawiany jest w kroku 98 na wartość 2, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 99. W kroku 99 odbywa się sprawdzenie, czy Main_Flag_Error jest równe 3, czyli odpowiada błędowi wybierania. Jeżeli tak, to ERROR_CODE ustawiany jest w kroku 100 na wartość 3, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 101. W kroku 101 odbywa się sprawdzenie, czy Main_Flag_Error jest równe 4, czyli odpowiada błędowi tonu DTMF. Jeżeli tak,
178 631 to ERROR_CODE ustawiany jest w kroku 102 na wartość 4, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 103. W kroku 103 odbywa się sprawdzenie, czy Main_Flag_Error jest równe S, czyli odpowiada błędowi wykrywania dzwonienia. Jeżeli tak, to kod ERRORCODE ustawiany jest w kroku 104 na wartość 5, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 105. W kroku 105 odbywa się sprawdzenie, czy Main_Flag_Error jest równe 6, czyli odpowiada błędowi odpowiedzi na dzwonienie. Jeżeli tak, to kod ERRORCODE ustawiany jest w kroku 106 na wartość 6, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi do kroku 107 według fig. 8B. Na fig. 8B, podprogram rozpoczyna sprawdzanie wartości drugiej flagi błędu, Main1_Flag_EnOr. W kroku 107 odbywa się sprawdzenie, czy Main1_Flag_Error jest równe 1, czyli odpowiada błędowi zasilania części radiowej. Jeżeli tak, to kod ERRORCODE ustawiany jest w kroku 108 na wartość 7, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 109. W kroku 109 odbywa się sprawdzenie, czy Main1_Flag_Error jest równe 2, czyli odpowiada błędowi wywoływania. Jeżeli tak, to kod ERROR_CODE ustawiany jest w kroku 110 na wartość 8, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 111. W kroku 111 odbywa się sprawdzenie, czy Mai^1_Flag_Error jest równe 3, czyli odpowiada błędowi tonu zajętości. Jeżeli tak, to kod ERROR_CODE ustawiany jest w kroku 112 na wartość 9, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 113. W kroku 113 odbywa się sprawdzenie, czy Main1_Flag_Error jest równe 4, czyli odpowiada błędowi stanu pracy urządzenia. Jeżeli tak, to kod ERRORCODE ustawiany jest w kroku 114 na wartość 10, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 115. W kroku 115 odbywa się sprawdzenie, czy Main1_Flag_Error jest równe 5, czyli odpowiada błędowi 1000 Hz. Jeżeli tak, to kod ERROR_CODE ustawiany jest w kroku 116 na wartość 11 i wraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, następuje powrót do podprogramu głównego.
Na figurze 9 przedstawiono podprogram testu FIN_SELF, którego celem jest resetowanie bloku interfejsu 14 dla zapewnienia jego normalnego funkcjonowania i wskazanie końca testu czterokrotnym zapaleniem diod LED. Podprogram rozpoczyna się krokiem 117, w którym urządzenie testujące 10 generuje sygnał odłożenia słuchawki. W kroku 118 odbywa się kasowanie wszystkich zmiennych i flag błędów. W kroku 119 następuje wyłączenie wszystkich diod LED. Krok 120 wnosi opóźnienie czasowe. W kroku 121 włączone zostają wszystkie diody LED. Krok 122 wnosi opóźnienie czasowe. Krok 123 umożliwia zamknięcie puli do kroku 119, tak że włączenie diod LED odbywa się cztery razy. Na koniec, w kroku 124 odbywa się wyłączenie wszystkich diod LED, a następnie program powraca do podprogramu głównego z fig. 1A i 1B.
Poniżej opisano rozwiązanie według wynalazku, z odniesieniem do następnych figur rysunku, opisu poszczególnych obwodów wykorzystywanych do wykonywania opisanego powyżej autotestowania oraz dokumentacji programu do wykonywania wyszczególnionych w opisie operacji.
Na figurze 10 przedstawiono schemat blokowy urządzenia testującego 10. Urządzenie testujące 10 zainstalowane jest w układzie adaptera komórkowego i przeznaczone jest do inicjalizacji procesu automatycznego testowania funkcji aparatu telefonicznego przy uruchomieniu przez abonenta telefonicznego przycisku lub przy testowaniu automatycznym w odstępach około 12 godzin, zgodnie z sieciami działań z fig. 1A 9, jak to opisano szczegółowo powyżej. Końcowy wynik tego autotestowania zostanie przekazany użytkownikowi za pośrednictwem wskaźnika w postaci diod LED, zainstalowanego na prawej ściance adaptera komórkowego, bądź podobnego do komórkowego. Urządzenie 10 ma możliwość meldowania wyników testu do wolnego ośrodka obsługowego. Ten meldunek może być realizowany przez au178 631 tomatyczne połączenie z wyznaczonym z góry numerem centrum obsługowego. Ta funkcja wymaga, aby ośrodek obsługowy był wyposażony w elementy układowe i programowe niezbędne do nawiązania łączności i do interpretacji odebranych meldunków. Test autodiagnostyczny sprawdza poprawność działania adaptera komórkowego, włącznie z jego takimi elementami, jak: podstawowe układy bloku interfejsowego, kable między częścią radiową a interfejsem, linia transmisyjna, antena, urządzenie nadawczo-odbiorcze komórkowe, układ rozliczeniowy i źródło zasilania. Urządzenie testujące 10 jest skonfigurowane tak, aby przy wykonywaniu testu wywoływać ten sam numer, przydzielony do urządzenia nadawczoodbiorczego adaptera. Test autodiagnostyczny zaprogramowany jest tak, aby wykrywać sygnał zajętości lub sygnał natłoku linii, jako wskazanie, że połączenie nie może być dokonywane i że układ transmisyjny działa poprawnie.
Urządzenie testujące 10 jest przeznaczone do wykorzystania w komórkowym bloku adaptera, w celu sprawdzenia, że ten ostatni pracuje poprawnie, bez konieczności wysyłania personelu technicznego na miejsce zainstalowania sprzętu. Urządzenie testujące 10 układu telekonserwacyjnego zasilane jest bezpośrednio z bloku interfejsu komórkowego 14. Urządzenie testujące 10 nie jest układem autonomicznym. Jego działanie zależy od sygnałów sterujących, które odbiera z układu nadzorującego, zlokalizowanego w bloku interfejsu komórkowego 14. Układ nadzorujący porównuje wyniki testów z parametrami systemu operacyjnego. Układ autodiagnostyczny urządzenia testującego 10 przeprowadza następujące testy: błędy odpowiedzi (nieprawidłowy numer) - test wykonywany dwoma różnymi sposobami, napięcie dzwonienia - generuje wywołanie i wykrywa obecność napięcia dzwonienia wytwarzanego przez blok interfejsu 14, odpowiedź na wywołanie - sprawdza, że dzwonienie ustaje po udzieleniu na nie odpowiedzi, ton wybieranie - sprawdza występowanie tonu wybierania, działanie MFTD - sprawdza, czy blok interfejsu 14 prawidłowo wykrywa tony odbierane przez wieloczęstotliwościowy detektor tonu (MFTD), test urządzenia nadawczo-odbiorczego, test układu zaliczającego - sprawdza charakterystyki częstotliwościowe impulsów generowanych przy 12 kHz, zasilacz urządzenia nadawczo-odbiorczego, sprawność układu zasilania. Testy te zostały wyszczególnione powyżej, w opisie sieci działań z fig. 1A-9.
Urządzenie testujące 10 połączone jest z konwencjonalną kartą bloku interfejsu komórkowego 14 za pośrednictwem 20-kołkowego gniazda wtykowego. Podprogram testujący jest inicjowany za pośrednictwem wyłącznika ręcznego zainstalowanego po prawej stronie skrzynki adaptera. Po stwierdzeniu jakiejś nienormalności w działaniu aparatu telefonicznego, jak na przykład braku słyszalności sygnału wybierania po podniesieniu słuchawki odbiornika, abonent podchodzi do skrzynki adapterowej i naciska odpowiednio oznaczony przycisk testowania. Urządzenie testujące 10 dokonuje przerwania połączenia aparatu abonenta z blokiem interfejsu komórkowego 14 i realizuje sekwencję testów autodiagnostycznych, opisaną powyżej. Urządzenie testujące 10 zaprogramowane jest przy tym tak, że inicjuje samoczynnie program testujący w odstępach około 12 godzin od momentu włączenia bloku interfejsu komórkowego 14. Przy automatycznej inicjalizacji testu nie jest generowana sekwencja wychodzącego połączenia testowego. Po dodatkowym opracowaniu można zapewnić inicjowanie funkcji automatycznego generowania testu z ośrodka zdalnego. Ta funkcja telekonserwacyjna wiąże się z modyfikacją oprogramowania operacyjnego bloku interfejsu 14 i wymaga dodatkowo opracowania nowych układów i oprogramowania urządzenia testującego 10. Po zainicjowaniu programu autotestowania pomarańczowy wskaźnik świetlny (dioda LED) błyska, wskazując abonentowi, że odbywa się testowanie. Między kolejnymi testami występują przerwy w błyskającej sygnalizacji trwające około 1 s. Pełny test trwa w przybliżeniu 40 s. Po zakończeniu testu, jego wynik jest przedstawiany za pomocą pozostającego włączonego wskaźnika świetlnego. W tym przypadku występujący problem może się odnosić do odpowiedniego połączenia przewodowego lub zastosowania aparatu telefonicznego dołączonego do bloku interfejsu komórkowego 14. Kiedy wskaźnik świeci w sposób ciągły, blok interfejsu komórkowego 14 wraca do swoich warunków roboczych. W przypadku uszkodzenia bloku interfejsu komórkowego 14 stwierdza się to na podstawie testów, a wskaźnik świetlny przy tym pozostaje w sposób wyraźny wygaszony. Wskazuje to użytkownikowi, że uszkodzenie wystąpiło w adapterze komórkowym. Po zakończeniu procedury testującej, bloku interfejsu
178 631 komórkowego 14 wraca do swoich normalnych warunków pracy, niezależnie od tego, czy zostało wykryte uszkodzenie. Użytkownik może kontynuować wykorzystywanie adaptera nawet przy występowaniu ograniczeń, w wyniku wykrytego uszkodzenia. Wskaźnik świetlny diody (LED) w bloku interfejsu komórkowego 14 może być wykorzystywany do identyfikacji wykrytego uszkodzenia. Zobrazowanie takie stanowi pomoc dla technika serwisu, który ma dostęp do wnętrza skrzynki w celu sprawdzenia prawdopodobnej przyczyny uszkodzenia. Kombinacja włączonych (ON) i wyłączonych (OFF) diod LED może identyfikować pierwotnie wykryte w teście uszkodzenia. Ta kombinacja pozostaje zapalona podczas 60 s po zakończeniu testu. Listę kodów możliwych uszkodzeń wskazywanych przez diody LED bloku interfejsu komórkowego 14 zamieszczono poniżej.
Jeżeli w wyniku wykonania testu wykrywa się uszkodzenie, to może być inicjalizowane połączenie z ośrodkiem telekonserwacyjnym. Po nawiązaniu łączności meldowane jest stwierdzone uszkodzenie. Ta funkcja telekonserwacyjna umożliwia prowadzenie bazy danych dla każdego z bloków. Jeżeli test został uruchomiony ręcznie, za pomocą przycisku, to pełny wynik zakończonego testu, niezależnie od wykrytych uszkodzeń, będzie meldowany do ośrodka telekonserwacyjnego.
Poniżej zamieszczono listę kodów wyświetlanych na tablicy diod LED:
4.10 KOD BŁĘDU
Typ błędu LED 5 LED 4 LED 3 LED 2
Bez uszkodzenia OFF OFF OFF OFF
Błąd pętli OFF OFF OFF ON
Błąd pętli OFF OFF ON OFF
Ton wybierania OFF OFF ON ON
Detektor MFTD OFF ON OFF OFF
Detektor dzwonienia OFF ON ON ON
Odpowiedź na wywołanie OFF ON ON OFF
Zasilanie nadajnika OFF ON ON ON
Nadajnik (połączenie) ON OFF OFF ON
Odbiornik (zajętość) ON OFF OFF OFF
Detekcja tonu przy 12 kHz ON OFF ON ON
Zasilacz główny ON OFF ON OFF
„BRAK OBSŁUGI” ON ON ON ON
Obwód nadawania ON ON ON OFF
Nie określony ON ON OFF ON
Nie określony ON ON OFF OFF
Sekwencja autotestowania jest następująca. Pierwszym działaniem realizowanym przez urządzenie testujące 10 jest odłączenie instalacji abonenta.
Następnie symuluje się warunki „odpowiedzi na telefon abonenta”. W tych warunkach przez generację tonu wybierania sprawdza się poprawność wykrywania zamknięcia puli. Następnie sprawdza się poprawność generacji tonu wybierania w minimalnym zakresie częstotliwości i poziomów. Następnie rozpoczyna się test detektora tonu wieloczęstotliwościowego MFTD. Składa się on z karty autodiagnostycznej generującej pełną sekwencję 16 tonów MFTD, wysyłającej ją do konwencjonalnej bloku interfejsu komórkowego 14 w adapterze komórkowym i sprawdzenia poprawności odbioru tych tonów. Następnie wykonuje się test służący do sprawdzania poprawności funkcjonowania generatora dzwonienia. Generuje się prąd dzwonienia, przy sprawdzaniu jego częstotliwości i poziomu, w określonym zakresie minimalnym. Następnie na nowo symuluje się warunki odpowiedzi telefonu, czyli odpowiedzi na połączenie, w celu sprawdzenia działania układu dzwonienia, który powinien być zdezaktywowany przed odpowiedzią telefonu. W następnym teście wykrywa się zdolność układu zaliczania do generacji impulsów o częstotliwości 12 kHz, w minimalnym zakresie
178 631 częstotliwości i poziomu, dla przypadku adapterów telefonicznych komórkowych. Impulsy generowane przez kartę układu zaliczania są wykrywane przez precyzyjny detektor impulsów w urządzeniu testującym 10 w znany sposób. W przypadku adapterów systemowych komórkowych, które nie mają modułów zaliczania, w takim przypadku ustawia się w położeniu rozwarcia łącznik J1.3 karty bloku interfejsu komórkowego 14. W tych blokach, które mają zainstalowany moduł zaliczania, należy stosować mostek zwierający.
Następne testy sprawdzają działanie komórkowego urządzenia nadawczo-odbiorczego. Po pierwsze sprawdzane jest zasilanie urządzenia nadawczo-odbiorczego. Po pierwsze sprawdzane jest zasilanie urządzenia nadawczo-odbiorczego. Ten test wykonuje się przez wykrywanie stałego napięcia + 12 V, otrzymanego ze złącza danych urządzenia nadawczoodbiorczego. Następnie jest sprawdzane urządzenie nadawczo-odbiorcze, to znaczy w warunkach usług dostępu komórkowego charakteryzującego się brakiem sygnału „NO SERVICE”. Obecność sygnału „NO SERVICE” zostanie rozpoznana jako uszkodzenie. Takie warunki mogą być spowodowane wadliwą detekcją, a nie po prostu uszkodzeniem komórkowego urządzenia nadawczo-odbiorczego. Następnie jest generowane połączenie przez sieć komórkową z numerem abonenta. W ten sposób sprawdzane jest działanie urządzenia nadawczoodbiorczego, przez wykrywanie sygnału zajętości z systemu, ponieważ odbywa się wywoływanie samego siebie. W przypadku natrafienia na natłok w sieci nastąpi poinformowanie urządzenia nadawczo-odbiorczego o warunkach „PATH ENGAGED” („TRASA ZAJĘTA”). Urządzenie nadawczo-odbiorcze wtedy generuje ton NATŁOKU (zajętości). Obecność tego tonu jest interpretowana jako poprawność działania bloku nadawczo-odbiorczego, podobnie jak sygnał zajętości. Ten ton interpretowany jest jako wynik poprawnego działania urządzenia nadawczo-odbiorczego, tak samo jak sygnał zajętości. Test ten może być realizowany tylko wtedy, kiedy podprogram inicjowany jest rocznie, na przykład za pomocą przycisku. Test nie będzie realizowany w blokach, które inicjują proces automatycznie. Następnie sprawdzane jest napięcie zasilającego układu mocy. Jeżeli napięcie stałe jest mniejsze od 14,5 V, zostanie wykryte uszkodzenie źródła zasilania.
Na figurze 10, urządzenie testujące 10 jest przyłączone do standardowego komórkowego adaptera, bądź bloku interfejsu 14. Urządzenie testujące 10 jest zbudowane z układów diagnostycznych wykorzystywanych do realizacji testów autodiagnostycznych opisanych powyżej. Tymi układami są: detektor 16 sygnału zajętości, wykorzystywany podczas testu prawidłowości odbioru wywołania, wykonywanego przez urządzenie testujące 10 podczas opisanego powyżej autotestowania, z wywołaniem zwrotnym, przedstawionym na fig. 7A, układ 18 detektora 12000 Hz wykorzystywany do testowania zaliczania, który sprawdza parametry częstotliwościowe impulsów generowanych przy 12 kHz. Układ 20 generatora MFTD, który generuje sygnały DTMF przetwarzane przez komórkowy blok interfejsu 14, jak to opisano powyżej w odniesieniu do fig. 4, układ 22 detektora sygnału dzwonienia, wykorzystywanego do wykrywania sygnału dzwonienia generowanego przez blok interfejsu 14 komórkowego, podczas podprogramu testu dzwonienia i odpowiedzi na dzwonienie, opisanych powyżej w odniesieniu do fig. 5A i 6, układ 24 detektora tonu wybierania, który sprawdza prawidłowość generacji tonu wybierania przez blok interfejsu 14 komórkowego, bądź podobnego do komórkowego, jak to opisano powyżej w odniesieniu do fig. 3, układ 28 detektora napięcia do sprawdzania zasilania urządzenia nadawczo-odbiorczego i całego urządzenia oraz telekonserwacyjny blok sterujący 30, który jest blokiem sterującym i który jest również wykorzystywany do nawiązywania połączeń i meldowania, do centralnej stacji meldowania, wyników autotestu. Rzeczywista konfiguracja każdego ze wspomnianych powyżej na figurach 11, 12, 13 i 14 układów jest poniżej opisana bardziej szczegółowo.
Na figurach 11, 12, 13 i 14 przedstawiono schematy układów do realizacji symulacji opisanych powyżej testów w ciągu całego procesu samotestowania. Na fig. 11 przedstawiono urządzenie testujące 10. Część oznaczona schematycznie na fig. 11 literą „A”, stanowi miejsce, w którym następuje przyłączenie urządzenia testującego 10 do linii wyszukiwania i dzwonienia konwencjonalnego bloku interfejsu 14 komórkowego. Przekaźnik RELY1 wykorzystywany jest do odłączenia telefonu użytkownika od bloku interfejsu 14 komórkowego podczas konserwacyjnego testu działania. Zamiast tego, urządzenie testujące 10 jest przyłą14
178 631 czone do linii wyszukiwania i dzwonienia, w celu wykonania tych testów. Kiedy sygnał odblokowania testu ma stan wysoki, tranzystor Q3 wchodzi w nasycenie i następnie zasila przekaźnik RELY1 dołączając układ telekonserwacyjny do linii wyszukiwania i dzwonienia. Część układu w uproszczeniu oznaczona na fig. 11 literą „B” stanowi przełącznik widełkowy telefonu abonenta, przy czym mikrotelefon abonenta może być odwieszany na płycie na dwa możliwe sposoby, J1 jest łącznikiem dwuzaciskowym normalnego gniazda telefonicznego P1.
Część układu w uproszczeniu oznaczona na fig. 11 literą „C” stanowi układ interfejsu fonicznego, wykorzystywanego jako interfejs między linią wyszukiwania i dzwonienia a linią foniczną. Tl oznacza telefoniczny transformator dopasowujący. Jego zadaniem jest utrzymywanie podobnych parametrów prądu przemiennego i stałego dla telefonu przy realizacji odbioru i nadawania sygnałów fonicznych. Diody Zenem D1 i D2 służą do eliminacji wszelkich sygnałów o napięciach większych od ± 4,5 V. Zainstalowany jest również optoizolator SSR1, który w połączeniu z tranzystorem Q4 zapewnia zwieranie linii wyszukiwania i dzwonienia.
Kiedy sygnał przyłączania pętli jest ustawiony w stan wysoki, to tranzystor Q4 wchodzi w nasycenie, co powoduje zasilanie optoizolatora SSR1, zamknięcie obwodu i realizacji funkcji zdjęcia słuchawki.
Część układu w uproszczeniu oznaczona na fig. 11 literą „D” stanowi układ wykrywania dzwonienia, zawierający dwa układy scalone: układ U2 wykrywania dzwonienia i U9 optoizolatora zapewniający właściwy poziom CMOS sygnału wyjściowego. Do układu U2 wykrywania dzwonienia doprowadzany jest sygnał wejściowy, kiedy na linii wyszukiwania i dzwonienia występuje napięcie dzwonienia. Sygnał ten jest transformowany przez układ U9 optoizolatora, który następnie generuje aktywny sygnał niski na linii I/0.
Część układu w uproszczeniu oznaczona na fig. 11 literą „E” stanowi układ wykrywania pętli prądowej, zawierający kolejny optoizolator U17 zapewniający wykrywanie prądu pętli. Kiedy ten test jest wykonywany (sygnał odblokowania testu w części A ma stan wysoki) i realizowane jest podniesienie słuchawki (sygnał przyłączania pętli w części C jest w stanie wysokim), linie wyszukiwania i dzwonienia zostają zwarte zapewniając prąd podniesienia słuchawki. Prąd ten jest transformowany przez optoizolator U17 na aktywny poziom niski na linii I/0.
Część układu w uproszczeniu oznaczona na fig. 11 literą „F” stanowi zespół układów fonicznych wejściowych/wyjściowych zbudowany z 14 scalonego wzmacniacza operacyjnego Ul. Głównym zadaniem tego obwodu jest izolowanie i wzmacnianie wejściowych sygnałów fonicznych. Wyjście tego układu jest wejściem fonicznym. Również i w tym przypadku sygnał wyjściowy DTMF generowany przez urządzenie testujące 10 przekazywany jest na linię wyszukiwania i dzwonienia. Ten sygnał DTMF pojawia się na wyjściu tonowym.
Część oznaczona schematycznie na fig. 12 literą „G” jest generatorem sygnału DTMF, który zbudowany jest z układu U4, generowania sygnału DTMF oraz z 14 scalonego wzmacniacza wyjściowego Ul. W celu generowania sygnału DTMF, podaje się najpierw czterobitową wartość kodową na zaciski wejściowe oznaczone DTMF1-OUT, DTMF2-OUT, DTMF3-OUT, DTMF4-OUT układu U4. Następnie utrzymując tę wartość czterobitową, powoduje się, że sygnał zezwalający na zacisku wejściowym oznaczonym DTMF-OUT zmienia poziom z niskiego na wysoki umożliwiając w ten sposób generację sygnału. Częstotliwość akustyczna wyprowadzona jest na wyjście tonowe po wzmocnieniu sygnału przez wzmacniacz U1. W celu wyłączenia tonu, sygnał zacisku DTMF-OUT sprowadza się na powrót do stanu niskiego.
Część oznaczona schematycznie na fig. 12 literą „H” jest układem scalonym U8 portów I/0. Ten układ scalony z portami wejściowymi i wyjściowymi jest wykorzystywany przez mikrokontroler bloku interfejsu 14 komórkowego do odczytu danych wejściowych i do sterowania wszystkich sygnałów wyjściowych urządzenia testującego 10. Łącznik J4 stanowi przełącznik dla automatycznego testu periodycznego zapewniający wybór 12 lub 24 godzin. JS wykorzystywany jest dla umożliwienia „automatycznej odpowiedzi” na wywołanie.
Części oznaczone schematycznie na fig. 12 literą „I.1” i „I.2” są złączami zasilającymi, złączami przesyłania danych i złączami sterującymi. W ich skład wchodzi głowica wtykowa J2 z kołkami stykowymi 2x10 wykorzystywana do podawania zasilania, jak również do
178 631 nadawania i odbioru danych portu I/ 0. Zawierają one również głowice J3 z czterema kołkami stykowymi wykorzystywanymi do sygnalizacji stanu testowania oraz do zewnętrznego przycisku służącego do ręcznej aktywacji testu.
Część oznaczona schematycznie na fig. 12 literą „J” jest stabilizatorem zasilania i zawiera układ U7, 5-woltowego nieregulowanego stabilizatora napięcia dodatniego, dostarczający napięcie niezbędne dla układów cyfrowych.
Urządzenie testujące 10 zawiera sześć pojedynczych detektorów tonu, wykorzystywanych do testowania toru fonicznego, częstotliwości i taktowania czasu trwania tonów ROH, wybierania, zajętości i natłoku. Każdy z detektorów tonu składa się ze wzmacniacza operacyjnego i oddzielnego detektora tonu. Wejście wzmacniacza 10 operacyjnego jest dołączone do linii wejścia fonicznego. Częstotliwość detekcji ustawiana jest za pomocą rezystora i kondensatora, które są włączane między kołki stykowe oraz masy. Kiedy tonowi programowanemu przez obwód rezystora i kondensatora odpowiada ważny ton, to sygnał wyjściowy detektora tonu zmienia stan z niskiego na wysoki.
Część „K” na fig. 12 stanowi układ detektora sygnału wybierania. Kiedy na wejściu układu U3 wykrywania sygnału wybierania występuje ważny sygnał wybierania, linia wykrycia wybierania jest ustawiana w stan niski.
Część „L” stanowi układ detektora sygnału zajętości. Kiedy na wejściu układu U6 wykrywania sygnału zajętości występuje ważny sygnał zajętości, linia wykrycia zajętości jest ustawiana w stan niski.
Część „M” z fig. 13 stanowi układ detektora tonu 400 Hz. Kiedy na wejściu układu scalonego U14 występuje ważny ton 400 Hz, linia wykrycia tonu 400 Hz jest ustawiana w stan niski.
Część „N” z fig. 14 stanowi układ detektora tonu 800 Hz. Kiedy na wejściu układu scalonego U13 występuje ważny ton 800 Hz, linia wykrycia tonu 800 Hz jest ustawiana w stan niski.
Część „O” stanowi układ detektora tonu 1020 Hz. Kiedy na wejściu układu scalonego U16 występuje ważny ton 1020 Hz, linia wykrycia tonu 1020 Hz jest ustawiana w stan niski.
Część „P” stanowi układ detektora tonu 12 kHz. Kiedy na wejściu układu scalonego U12 występuje ważny ton 12 kHz, linia wykrycia tonu 12 kHz jest ustawiana w stan niski.
Część „Q” z fig. 13 stanowi układ detektora sygnału DTMF, złożony z układu U13 wykrywania sygnału DTMF oraz 14 scalonego wzmacniacza wejściowego U1. Kiedy na wejściowej końcówce występuje ważny sygnał DTMF, linia DTMF-STROBE jest ustawiana w stan niski, a układ U13 dokonuje wykrywanie sygnału DTMF. Po zdekodowaniu sygnału, na końcówki oznaczone DTMF0-IN, DTMF1-IN, DTMF2-IN, DTMF4-IN, wprowadzana jest wykryta wartość czterobitowa. Następnie linia DTMF-STROBE jest ustawiana na powrót w stan wysoki.
Część „R” stanowi monitor składowej zmiennej, zawierający układ U10, detekcji obniżenia się napięcia poniżej 4,5 V. Rezystory R17 i R33 stanowią dzielnik napięcia, który powiększa napięcie detekcji układu U10 z 4,5 V do 13 V. Układ pracuje przy założeniu, że kiedy dochodzi napięcie zasilające z zasilacza, na wejściu urządzenia testującego 10 występuje 13 V. W przypadku zaniku zasilania prądem przemiennym, napięcie spada do poziomu podtrzymywania baterii, który nie przewyższa 13 V. Układ ten wykrywa zanik i ustawia linię wykrycia sygnału zmiennego w stan niski.
Na figurach 15, 16 i 17 przedstawiono sieci działań podprogramu wywołania ośrodka telekonserwacyjnego wykorzystywanych przy meldowaniu wyników testów autodiagnostycznych do zdalnego ośrodka telekonserwacyjnego.
Na figurze 15 począwszy od góry (blok 200) znajduje się punkt wejściowy procedury wywołania ośrodka telekonserwacyjnego. W etapie 1 (blok 201) zmienna zliczająca próby transmisji jest ustawiana na wartość 3. Liczba ta określa, ile razy został nadany przekaz do ośrodka telekonserwacyjnego przed przerwaniem połączenia. W etapie 2 (blok 204) kasowany jest bit niezakończenia połączenia. Następuje skasowanie wszelkich dotychczas występujących połączeń i przy założeniu, że poprzednie połączenie trwa i nie zostało zakończone, następuje ustawienie flagi wywołania zwrotnego. W etapie 3 (blok 206) przed wywołaniem
178 631 ośrodka telekonserwacyjnego, sprawdzana jest systemowa flaga obsługi. Jeżeli występują warunki braku obsługi, to połączenie zostaje przerwane i następuje ustawienie flagi CALL_BACK. W etapie 4 (blok 208), z bloku pamięci urządzenia nadawczo-odbiorczego zostaje wywołany numer telefoniczny ośrodka telekonserwacyjnego. W etapie 5 (blok 210) program wydaje polecenie nawiązania połączenia radiowego. Na figurze 16, w etapie 8 (blok 212), licznik/blok czasowy jest ustawiany na czas maksymalny (upływ czasu) oczekiwania programu przed zrzuceniem połączenia przy wystąpieniu błędu nadawania/odbioru w ośrodku telekonserwacyjnym. W etapie 10 (blok 216) sprawdzane są flagi BRAK-OBSŁUGI i PRACA, w celu sprawdzenia, czy połączenie zostało zrzucone. Jeżeli połączenie zostało zrzucone, to program przekazuje wykonanie do etapu 6 (blok 211) z fig. 15. W etapie 11 (blok 218) i po odebraniu jakiegokolwiek sygnału z odbiorczego kanału fonicznego, odebrany sygnał sprawdzany jest na konkretne kombinacje tonów, na przykład zajęty i wtedy połączenie zostaje zerwane, a wykonanie przechodzi do etapu 7, do procedury wyjścia (patrz fig. 15). W etapie 12 (blok 220) i po odebraniu jakiegokolwiek sygnału w odbiorczym kanale fonicznym, odebrany sygnał sprawdzany jest na występowanie kombinacji sygnału RING/BACK. Jeżeli wykryto sygnał RING/BACK, to program przekazuje wykonanie na powrót do etapu 9 (blok 214) w celu sprawdzenia, czy upłynął okres 1 minuty, przed wejściem w procedurze wyjścia. W etapie 13 (blok 222) sygnał jest sprawdzany na występowanie tonu 1020 Hz. Jeżeli ton wystąpi w ciągu przynajmniej 100 ms, to program przekazuje wykonanie do etapu 14 na fig. 17, w celu uruchomienia podprogramu wysłania komunikatu. W etapie 14 (blok 224, fig. 18) zliczana wstecz zmienna powtórzeń transmisji jest ustawiana na wartość 3. Licznik określa maksymalną liczbę retransmisji do ośrodka telekonserwacyjnego. W etapie 15 (blok 226), program przekazuje komunikat do ośrodka telekonserwacyjnego. W etapie 16 (blok 228), licznik upływu czasu 10 ms jest ustawiany na zero. Licznik ten wyznacza oczekiwanie programu w okresie 10 s, na ton potwierdzenia (1020 Hz) z ośrodka telekonserwacyjnego. Jeżeli ten ton nie zostanie odebrany wciągu 10 s (etap 16, blok 232), to program przechodzi do etapu 19. W etapie 19 (blok 234), zostaje zmniejszona o 1 wartość licznika powtórzeń transmisji (wstępnie ustawiona na wartość 3). W etapie 20 (blok 236), zawartość tego licznika jest porównywana z zerem. Jeżeli wartość licznika wynosi zero, to ustawiana jest flaga CALLBACK i następnie program przekazuje sterowanie do etapu 7 w celu wykonania procedury. W etapie 17 (blok dacyjny 230) jeżeli po nadaniu komunikatu odebrano ton 1020 Hz z ośrodka telekonserwacyjnego oznaczający potwierdzenie odebrania komunikatu, kasuje się flagę CALL_BACK, kończąc połączenie z wynikiem pomyślnym.
Na figurze 18 przedstawiono sieć działań podprogramu odbioru komunikatu inicjacji z ośrodka telekonserwacyjnego przy inicjalizacji testowania autodiagnostycznego przez zdalny ośrodek telekonserwacyjny. Celem etapu 23 (blok 240) jest zaznaczenie, że procedura radiowej obsługi przerwania wykonuje zadania inne, niż zadanie opisane poniżej. Zadania te związane są z podstawowymi funkcjami interfejsowymi. W etapie 24 (blok dacyzyjny 242) sprawdzany jest blok kompletności komunikatu. Jeżeli komunikat nie został odebrany, to program przekazuje wykonanie do etapu 29 (blok 244), w którym wykonywana jest procedura obsługi przerwania. W etapie 25 (blok 246) wchodzący w części radiowej bajt danych porównywany jest z kodem aktywacji zdalnego testu telekontrolnego, przesyłanym przez ośrodek telekonserwacyjny w systemie. Jeżeli z ośrodka telekonserwacyjnego został odebrany kod aktywacji testu telekontrolnego, to program wykonuje etap 26 (blok 248), w którym flaga jest ustawiana na zmienną CALLBACK w celu wskazania, że przez ośrodek telekonserwacyjny został zainicjowany test. W etapie 27 (blok 250), ustawiana jest flaga TEST ENABLE w celu odblokowania procesu testowania. W etapie 28 (blok 252) zmienne skojarzone z wynikami testowania przed rozpoczęciem testu autodiagnostycznego są wstępnie ustawiane w stan początkowy.
Na figurze 19 przedstawiono sieć działań procedury weryfikacji stanu pętli głównej z podprogramem kontroli odwieszenia. Celem etapu 30 (blok 260) jest kasowanie bloku czasowego WATCH DOG, w celu zapobieżenia kasowaniu jednostki centralnej. W etapie 31 (blok 262), testowana jest flaga TEST ENABLE. Jeżeli flaga TEST ENABLE jest ustawiona na 1, oznaczając, że test został odblokowany (ustawienie następuje ręcznie, automatycznie
178 631 z bloku czasowego lub w trybie telekontrolnym) to program odgałęzia się do etapu 34 (blok 262 wykonaj proces testu). Po wykonaniu tego procesu, program wraca do pętli kontroli odwieszenia. W etapie 32 (blok 226), testowana jest flaga „słuchawka zajęta”. Jeżeli ta flaga jest ustawiona na 1, oznaczając, że telefon został zdjęty z widełek, program odgałęzienia się do procesu słuchawka zdjęta (etap 36, blok 272). Po wyjściu z tego procesu program wraca do pętli kontroli odwieszenia. W etapie 33 (blok 270) testowana jest flaga „słuchawka zdjęta przy połączeniu wchodzącym”. Jeżeli ta flaga jest ustawiona oznaczając, że odebrano połączenie wchodzące oraz że telefon został zdjęty z widełek, program odgałęzia się do podprogramu odpowiedzi na wywołanie (etap 36, blok 272). Po wyjściu z tego podprogramu program wraca do pętli kontroli odwieszenia.
Poniżej zamieszczono wydruk programu źródłowego realizacji wynalazku.
$nopi nosb db noge nomo nopr ep
Snolist
Sinclude (reg252.pdf)
Slist ;Maxjack, aut. Alexis V.Torres dla Telular International, Inc. ;(C) Copyright Telular International, Inc. 1993-1995 ;Interfejs telefoniczny/komórko wy:
;Program główny z tablicą obsługi ;92.11.29 maint.asm ;Uniwersalne kody klawiszy telefonii naziemnej zero equ Oah ;kod klawisza [0] star equ Obh ;kod klawisza [*] pound equ Och ;kod klawisza [#] ;Wskaźniki dla wyświetlaczy HS i komunikatów TRU
dspbuf_start equ 80h ;Początek bufora 16B wyświetlacza LCD
dspbuf_end equ 90h ;Koniec bufora wyświetlacza LCD
msgbuf_start equ 90h ;Początek bufora komunikatów TRU (itp.)
msgbuf end equ Oh ;Koniec bufora komunikatów TRU
main_flay equ 0b0h ;Do sprawdzania flag używaj adresu ;bezpośredniego
;hook_slic 1
;dial 2
;dtmf 3
;ring_test 4
;ans_test 5
mainflagerror eou 0b1h
;hook_slic_error w ;błąd odwieszenia
;hook_ring_error w ;błąd odwieszenia
;dial error ;błąd tonu wybierania
178 631
;dtmf_error 4 ;błąd dtmf
;ringjtestjerror 5 ;błqd dzwomema
;ans_testjerror 6 ;błąd odpowieclxi na dzwonienie
main1jflag equ 0b2h jjak wy^j
;power_radio 1 ;błąd ^silEnia-radio
;calljtest 2 ;błąd poląezema
;calljtone 3 ;błqd rozmowy
main1jflagjCrror equ 0b3h jpk. vy/żej
;power_radiojerror 1 rezerwa
;calljtest 2 rezerwowy bkąd
;calltone 3 rezerwowy btad rozmowy
;inuse 4 ;Mąd pracy
;1000hz 5 Błąd 1000Hz
error_code equ 0b4h ;ostatec:ma sygnaiizacai LED)
;hookjslicjerror 1 odwieszenie
;hookjring_error 2 odwieszenie
;dial_error 3 ;wybierame
;dtmf_error 4 ;dtmf
;ringjtest_error 5 ;dzwomeme
;ansjtest_error 6 odpowiedź na d;womeme
;powerjradio_error 7 ;zasilame-radio
;calljtest 8 ;połączeme
;calljtone 9 rozmowa
;inuse 10 ;praca
;1000hz 11 1000Hz
cero equ 00h
uno equ 08h
dos equ 04h
tres equ Och
cuatro equ 02h
cinco equ Oah
seis equ 06h
siete equ Oeh
ocho equ Olh
nueve equ 09h
estrella equ Odh
libra equ 03h
;Wewnętrzne definicje zmiennych Ram ; Rejestry zajmująbajty 00h-07h (bank rej. 0) ;r0 wskaźnik pamięci (również wskaźnik adresowy dla ekspandera I/O) ;rl wskaźnik pamięci danych z TRU ;r2 liczba cyfr ;r3 pętla opóźnienia dla bloku czasowego magistrali ;r4 pętla opóźnienia dla bloku czasowego magistrali
178 631 ;r5 wykorzystywany w bloku czasowym rrhtone r6 wykorzystywany w acmdtimc ;r7 wykorzystywany w bloku czasowym rchnonc ; Lokacje pamięci zmiennych
;time_off1 daai 10h ;mierzy czas podniesienia słuchawki
;time_off:2 ratki 11h milerzy czas podniesienia słuchawki
;time_off3 data 11h ;mier;y czas podniesienia słuchawki
;time_onl data 13h ;mierzy czas odłożenia s^^Lctb^r^w^kii
;times0e2 chiUi 14h mtierzy czas odłożenia słuchawki
pulse_digio rhoai 15h ;wartość cyfry w-wybieranej impulsowo
in use off timer data 16h ;sprawdza, czy w 2 s po uruchomieniu zaczyna działać lampka
rieg_timer dala 17h ;blok czasowy sprawdza czas międty dzwonkami
bell_timer data 18h ;blok czasowy generuje 20 Hz dla dzwonka
bell_timer2 data 19h ;blok czasowy dla dzwonka
gndstart_timer1 daLa lah izwalnia linię GS, jeżeli nie ma połączenia przez 1 s
gedstarts0imer2 i^ata lbh jjak yvyżej
^igEpoinO daaa l1h ;zapisuje dph dla lablic 1ι^ηοη^^<3ΐη
;lowpomt rhidi IcHh ;zapisuje ddl dta taMic tonenysh
highpomt daia 35h ;zapisuje dph dla labie lonorw^ch
lowpoinO data 36h ;zapisuje ddp di taMic tonowys·Il
test_min data 11h
;free <^ata Uh
.*********************************************************** ;Obszar RAM 20h-29h jest zarezerwowany do wykorzystania przez główny moduł, ;albo jako dane w postaci bajtów, albo poszczególnych bitów .***********************************************************
9 flags DATA 20h ;ten bajt zawiera poniższe flagi w postaci indywidualnie adresowalnych bitów
fhook bit OOh ;Flaga ustawiana przy zdjęciu słuchawki, kasowany po przetworzeniu
fsend bit Olh ;Flaga nadawania
fflash bit 02h ;Flaga flash
fhang bit 03h ;Flaga zawieszenia rozmowy
ftime bit 04h ;Flaga bloku czasowego 40 s
fdigit bit 05h ;Flaga impulsowego wejścia cyfrowego
fonhook bit 06h ;Flaga odwieszenia ustawiana w 700 ms po odłożeniu, kasowana następnym podniesieniem
fdtmin bit 07h ;Flaga wejściowa dtmf
inds DATA 21 h ;Wskaźniki-ten bajt zawiera następujące bity :
roam bit 08h ;wskaźnik przemieszczania się roam
noserv bit 09h ;Wskaźnik braku obsługi
lock bit Oah ;Wskaźnik zablokowania
rdis bit Obh ;Kasuj wyświetlenie cyfry
horn bit Och ;Wskaźnik sygnału dźwiękowego
f_init bit Odh ;Ustawiany wyłącznie przez TRU! (l=inicjalizacja wykonana)
178 631
tystart btO 0ee
test_enable lito Ofh
indasc daaa 22h
inuse bito 10h
ap1 lito 11h
ap2 lito 12h
test end bito 13h
;not_error bito 14h
retum_ring bto 15h
erns flag bto 16h
ring bito 17h
io status DATA 24h
strobe bitt 1 ch
ftζgs2 DATA 24h
fdig_ready bito 20h
fanswer bito 21h
fsąndrimer bito 22h
fjnuseofftiming bjto 233i
funtoaktimąr b)to 24h
fdtone bito 2^5h
fdąaoder_busy bito 2^h
fbąllsound bito 27h
pxl_temp DATA 25h
mitelq1 bto 28h
mitelq2 bito 29h
mitelq3 bito 2ah
mitelq4 bito 2bh
powerhold bito 2ch
spare1 bito 2dh
spa^ bito 2eh
no_ring bito 2ff
dx2_rąmd DATA 26h
toopswitah bto 30h
ring_ bto 31h
mute bitt 32h
roh_boost btt 33h
sw sendtimer bt3 34h
sw dialKme btt 35h
sw gndstart btt 36h
sw_data bit 37h
lampstemp DATA 77h
free bit 38h
;1-przerwanie odłożenia zablokowane na 500 ms ;autotestowanie po pierwszym zdjęciu słuchawki ze względu na wibrację styków ; Sterowanie włączeniem wskaźników i fonii, ten bajt zawiera następujące bity:
; Wskaźnik praicy ;ścieżka fonii ;ścieżka fonii ;bez błędu w samojestowantu ;biąd sa^motestowζlnijl ;bity 18h-1fh ;bity 20h-27h ;flaga gotowość; cyfry ;flaga odpowiedzi na dzwonek ;flaga do nadania po 4 s ;flaga wskazująca działanie bloku czasowego przy sprawdzaniu wyłączenia lampki przy pracy ;flaga do odblokowania po 4 s ;flaga wskazująca! włączenie DT ;flaga wskazująca; że dekoder dtmf nie jest jeszcze skasowany ;flaga dz.iaianiai dzwonka ;bufor we-w,}; dla portu px1- ζ^ηνίοηι iiiy/:
z dekodera dtmf ;z dekodera dtmf ;z dekodera dtmf ;z dekodera! dtmf podtrzymuje zasilmńe po awarii zasilenia do wyłączenia TRU ;zapasowy pin I/O ;zap<sowy pin I/O ;zapasowy pin I/O ;bufor I/O dla portu px2 (30h-37h) ;stan mski zamyka pętlę ;stan niski włącza dzwonek ps ;wyciszeme odbiou radiowego ;zwiększa χνζιποαύεηία daa tonu roh włączcner zazZerζczr dajo opcjonalne nadawanie 4 s ;zwieracz włączoryv=różnicowy km evybiejania dla roam wyłączony oznacza moduł obsługowy modułu ;IN=start pęlii, OUł-skrri podsaawowy zwieracz w^czony umemożiiwaaevyłączony umożliwia przekazanie danych cyfry do TRU po nadaniu (dla umożliwienia funkcji cątl.switah) Zaweera btty:
;me dotyczą, koniecame a;mpek-zapamiętują bieżący stan wskaźników
178 631
free bit 39h ;
free bit 3ati 3
free bit 3bh 3
roamlamp bit 3ch 3
noservlamp bit 3dh 3
locklamp bit 3 eh 3
inuselamp bit 33f 3
flags3 DATA 28h ;pozostałe flagi - bajt zawiera następujące indywidualnie adresowalne bity
frohtimeout bit 40h kiedy robione wyssępowal prxex 1 minutę
fcall t»it 41h ;ustawiony przy wchodzącym polączenśu, skasowany przy jego braku
f_one_sec bit 42h ustawiony przy zdjęciu sSlIelaov^^i na 1 s tak. aby nie powodować zdalnego odwieszenia, jeżeli słuchawka zdjęta natychmiast po lokalnym odwieszeniu
roh_on bit 43h ;wdącza i wyłącza robione
fspec1 bit 44h ;flaga do wykorzystania z danymi TRU przetwarzana w update_displays co 71,1 ms, wywołuje spec2
fspec2 tiit 4^1i flaga do wykorzystania z danym TRU przetwarzana w blokach czasowych odwieszenia i zdjęcia słuchawki co 277,8 ps, wywołuje spec2
fremote_hup bit 4<^1i woskaznje zdalny impuls SYnchronizujący opóźnienie 700 ms
flocktimer tiit 47h fflaga zablokowania po 2 sekundach
;Realizowane zadania TRU f_cmds DATA 29h ;opcjonalne własne numery zadań TRU ;Zadania TRU są wywoływane z programu głównego w module TRU.
;Zadanie 1:
;a) Sprawdzenie braku zasilania dla NEC 3700 (patrz nae01) ;b) Przesłanie zmiany stanu przełącznika odłożenia słuchawki do OKI i wysłanie wstępnego CLR do Motoroli (patrz oee02 i mae04) ;c) Wywołanie podprogramu rdbus w celu odczytania stanu wskaźnika w blokach TRU Autovidox (patrz tae01 i tbe01) ;d) Monitorowanie trybu cichego alarmowania w Autovidox CTX-3100A i ustawienie w razie potrzeby trybu cichego alarmowania (patrz tbe01) ;Zadanie 2:
;a) Podwójna komutacja NAM dla NEC 3700 (patrz nae01) t ;Zadanie 3:
;a) Sprawdzenie braku zasilania dla NEC 3700 (patrz nae01)
178 631 ;b) Przesłanie zmiany stanu przełącznika odłożenia słuchawki do OKI i Motoroli (patrz mae04 i oee02) ;c) Wywołanie podprogramu rdbus w celu odczytania stanu wskaźnika w blokach TRU Autovidox (patrz tae01 ;i tbe01) ;d) Monitorowanie trybu cichego alarmowania w Autovidox CTX-3100A i ustawienie w razie potrzeby trybu cichego alarmowania (patrz tbe01) ;Zadanie 4:
;a) Wywołanie podprogramu rdbus w celu odczytania stanu wskaźników w blokach TRU Autovidox (patrz tae01 i tbe01) ;b) Monitorowanie trybu cichego alarmowania w Autovidox CTX-3 100a i ustawienie w razie potrzeby trybu cichego alarmowania (patrz tbe01) ;Obszar RAM 2ah do 2dh jest zarezerwowany do wykorzystania przez moduły TRU albo jako bajty DATA albo poszczególne zmienne BIT.
.***********************************************************
;TRU_bits1 data 2ah ;bit 50h do 57h
;TRU_bits2 dt^ata 2bh ;bit 58h do 5fti
;TRU_bits3 duat 2ch ;bit 60h do 67h
;TRU_bits4 dnau 2dh ;bit 68h do 66h
9 ;Używane do tablicy obsługi. Sprawdź podprogram
9 10 m b data 2eh ;bit 70h do 777i
#td0 bit 70h
#td1 bit 71h
#td2 bit 72h
#td3 bit 73h
#dtmf_out bit 74h
#enable_test bit 75h
#enable_tone bit 76h
#enable_tone_in bit 77h
io m_c data 2fh ;bit 77h dd 7fh
#ext_led bit 78h
#enable_special bit 79h
#enable_busy bit 7ah
#enable_ 16h t»it 7bh
#conn_loop bit 7ch
;Reszta zmiennych wewnętrznych RAM (adresowalnych BAJTOWO) .*********************************************************** 5 looptest_timer looptest_timer2 display_delay dsp_ptr msg_ptr
data 30h
data 31h
data 32h
data 33h
daaa 34h
;opóźnia test pętli do 2 ms po zwarciu loopsw ; zamyka dla umożliwienia odpowiedzi SLIC ;opóźnia aktualizację wy świetlacza do kolejnych 71,1 ms ;wskaźnik bufora wyświetlacza LCD mikrotelefonu wwskaźnik bufora komunikatu TRU
178 631
;Następujące bajty są zarezerwowane dla modułów TRU do wykorzystania tylko jako bajty DATA (nie adresowalne BITOWO)
;TRU byte0 data 38h#
;TRU bytel data 39h#
;TRU byte2 data
;TRU byte3 data 3bh#
;TRU byte4 data 3ch#
;TRU byte5 data 3dh#
;TRU byte6 data 3eh#
;TRU byte7 data 3fli#
;Stos zajmuje bajty 49h - 5fh ;Wybierane cyfry są przechowywane w bajtach od 60h do 7fh w liczbie łącznej 32, włącznie z kodem SND wykorzystywanym jako terminator
prefix data 60h :ważne tylko [0] i 11] jjelii nie , FFh
first_digit data 61h ;Pienvsze trzy lokacje w buforze cyfr
second_digit data 62h ; (numery ^l^i^oe^e, rek kierunoowy.
third digit data 63h ;poezątek mimem y-cybOwego itp)
;Definicje bitów portów, port1 i port2, 8051 (wspólne dla wszystkich bloków)
#io_szlect bit pl.2;
#dt_pwm bit p1.4 ;Pwm ^bi^^a^nk tonowego
#twenty_hz_pwm bit pl .5 ;Pm 20 Hz dk dzwonka
#;power_fail_ bit p1.6 , 0=brak zaillania
#1c_ bit p3.2 ;Splawdzl(nie obccnocc i prądu w p^flii, ESirtlirtO)
#ring gromad- bit p3.4 ;ν^οίβ : woska/uje zżemię na ρι·ζο\νΌ0ζίο dzwonienia
#;steobz bit p3.5 ;Wueacie : gotowość z dekodera DTFM
#a0 bit p1.6
#a1 bit p3.5
;Punkt wejścia przy włączeniu zasilania i wektory podprogramów przerwań:
org 0000h jmp init ;Wektor resetu
178 631
org jmp db 0003h nihiook edge ofaf^faf; Wektor obsługi ExtInt0 Podniesienie, flas^ wybieranie impulsowe Wypełnienie dla Epromu i emulatora
org jmp db OOObh οιΛοο]< timer 333ι,0Αϊι,03Ι^,03& Wektor bloku Timeri') ;Do śledzenia czasu odwieszenia słuchawki
org jmp db 0)013h int1 sewice 0fh),0f:h),3ff),33ho ;Wektor obsługi Hxt Iu11 ;Zwykle służy do odczytu danych z TRU 5
org jmp db OOlbh offirooktimer 03h),0fh),03.f),03ho Wektor (th0)svc bloku Timeri ;Do okresowych przerwań bloku czasowego 9
org jmp db .serporrl devćce OfflgOffhfflgOffls Wiktor svc portu szeregowego ;Zwykle służy do odczyto danych z TRU 9
org jmp db OO^l^h timer2 devćce O3fl),O3fll,33hr,33flo Wektor svc bloku Timer2/ext2 9
org jmp 0033h ; pcase^ićce Wektor obsługi PCA ;Dla modulatorów szerokość; impulsu
db db c); CopyrighO Codecom 1992
$include(main.msg) $include(tru.msg) init:
%set(intmask,0) mov sp,#3fh;
clr ssO ;
clr rs1;
mov a,#0 ;
mov r0,#0 ;
fill_ram:
mov inc ri) ;
cjne ri)#^O,fill_ram clr pl.2;
;Zwykle dwa poziomy przerwań chyba że intmask w TRU, sekcji(TAE01.ASM:Audiovox) ustawiony na wartość różną od zera;
;Stos roxpocxyna się od 40h ;Wybierz baiks rejestrów 0 Jak wyżej ;Wypehdeme RAM zerami ;Wskaż ρΐεπν^ RAMI ;Ρ(ηοάγηοζ.ο tokaje e ;Wkkaż r^^sb^jmą lokaję ę ;Komco wypetoianaa iALMu (FFh) mov r 1 ,#ra^i__:a ag mov @^,,#0 iW/zzytej nasęępnąltogę inc rl mov @γ,,#0 inc rl
178 631
mov @r1,#0
mov @r1,#0
call reset itgm ;resetj1 tabićcę obłługi
mov i()jm_b,#0 nooduł
call write_io_m_b
mov io_m_c,#0 moduł
call writJ_i__m_j
call resetio rresel io> ro/.s/.erzony do #13
mov p2,#0f8h ;ustow p2 na sterowante ekspand<trem portu
mov px 1_temp,# 11111111b r<szem zpower hold
call write_px1
mov px2_temp,# 11110011 b imjejalrzuj : k)opsw otwarty, brak dzΆvonienia
call writej)x2
call read_px2 iwcyj klucze opcii
mov tmod,#0000001 1b ίΤΐοηβΟ^ 1 j^o<^v^<jjr^^ : i ii mor 1 może być generatorem taktującym
mov ip,010C^1(^^0b ;ustaw ρΩοη-Ιοί}-' pi-zcrwani
mov ie,#110^1(^^lb odb^jl PCA\ : Timer1 , TimerO , 10x0!, Tmi/bxt2 SerPort, Ext1 przez inlcealizację TRU
setb it0 ;Εχύη0θ eetl wwzwakiny zboczem
setb it1 ;Extłnt1 ^1 :z;^o^^^m
mov cmod,#80h wyłbccz Hctniik w st^rnieta(ovyymi coock/l2
mov ch,#0 dudal górny
mov cl,#o dadnj ikmiki dokiy
mov ccap01,#0fhi jdokiy bajj 1 dki komparatora Noku czasowego
mov ccap0h,#0 ;gómy bjj 1 db komparatora bloku czaoowego
mov ccapm 0#0')49h ; ;PCA0: programowym btok czasowy
mov ccapml,#0 ;PCA1 1 (1%! Tone1 t^os^^^e wyłączony
mov ccapm2,#0 ;PCA2: ipwm 20 Hz1 wyłączony
clr tri ;ρΓζαΛνηηκηνν book c^z^aow^y zdjęła jeszcze nie uruchomiony
clr to ;Mok czasowy zawieszenbreszcze nb dżuda
;Iricjaiizacja zmiennych bajtowych
mov iime_onl,#0 inicjjaiz^cja {rrt^irw^^no^wy^i^h Moków czasowych odwieszenia
mov iime_o n2,#0
mov iimeofn ,#0 inikjj aib^iK^.p1 przcrw'an(owych Moków czasowych zdjęcia słuchawki
mov time_off2,#0
mov time_ofB,#0
mov fbgs,#0 ;kate1 w/SLy^^dite flagi
mov flags2,#0 ;katul wszystkśe flagi
mov Α^;^ϊ^3,^0 ;kate.1 v^a^L^^\;sd<e1 flagi
mov inds,#0ffti początkowe
mov irdiasc.>Ofh: ;wafrojn i ροοζρ1%ουό
mov Ρ^ι^Ι^ϊ^Ο ;0=me os^aba od teraz żadna cffra impulsowana
mov _ miods^O ;0=ηΐε z^^d^i^e żadne zadanśe 'RUJ
178 631 ;Iniceaiizacja zmieeenhh bitowych
clr test_enable
clr test_end
clr eiror_flag
clr returnring
setb fonhook t^iakdada odwiezzenie słuchawki przy włączeniu zasilania
clr finit Ojezzczc me imi^jahant^ja TRU
clr fremotehup
clr fcall ;O=jezzcze me ma połączenia wchodzącego (A.i.,IRTI )
call clr dsp bufor ysyywielracza LCD mikrotelifonu
call clrmsg k^is^iuj bffor komunikatów TRU
call specificinits ;dh>konaj inicjał izacj i typowych dla 'TRU
mov ccap41,#0ffo d^ob^y bal l dta słowa kontrolnego
mov ccapi-h,#;)®! ; górny bąil dta słowa kontrolnego
mov ccapm4,#48h ;PCA4: odblokuj komparator i przerwanie
orl cmod,#40h ;odblokuj kontrolujący blok czasowy
setb cr ;uruchom licznik PCA
selb trO ;uruchom blok czasowy odwieszenia słuchawki
;Odczekaj 2,55 s na przebudzenie się TRU. Skasuj lokację wybranych cyfr, następnie wskaż R0 na początek bufora (60h), i skasuj R2 (liczbę wybranych cyfr).
time_wakeup:
call yγaIchdn.)g
mnv aiiimc_on2 ;podaj upływ czasu
cpe a,#25 5 itimc.wakc up ;odczekej tu 2,55 s na przebudlzenie TRU
mov c,sw_gndstarl ;sprawdiz zwieracz C^LSi 1=(jS
mov taopswhch_,c ;zapisz tryb startu
clr noring
call write_jpx2
jmp staot
$include(tru.asm);moduł TRU, zatem przy assemblacji można otrzymać INTMASK .*********************************************************** ;SOart i punkt ponownego wejścia po odwieszeniu .*********************************************************** start:
mov c0,#60h ;wskaż poczaich bufom ^sit'r
mov ,,#(ϋΑι ηϊε^βηηη
mov @;0,a lłokajje pjj edynczo
inc ;0 ;wskaż następną fokajję
cpe dighta· ;do ffli
mnv c0,#60h ;wskaż ρbfOora
mov γ,,00 ;mieraiiząl iiazba cyfr
selb _ tarot ;1-wvlącz '’degiitthing' ' klucza hook_ywitth
clr ecO :kasj.y pazrwvema w danym pzzppadku
178 631 setb ex0 ;odblokuj przerwanie zdjęcia słuchawkij jeżeii zablokowane ;Zamknięta pętla aż do wykrycia połączenia wchodzącego, albo podniesienia słuchawki w celu ;wybierania.
hookchk:
call watchdog
jb test_enable,do_test ;jeżeii uaktywnione samυteslow'anje
mov ł^cmid^^,,^1 ;ładuj rozkaz ID
; cali trucmd ;wykonaj w razie potrzeby zadanie task1 dla TRU
jb fliook,first1 ;prze]warnte j eeżeii zdjecne słuchawki
jnb fmswer,hookchk ;wróć , jeżeii nie wykryto wchodzącego dzwonienia
jmp ring_answer todpoweedz na dzwonek, zdjętoi słbc^ław^k^ę podczas trwania stanu ALERT (połączenie wchodzące)!
first1:
jmp first
do_test:
mov r 1 ,#main_flag_error
mov @r1,#0 ;ustaw b^ądi tonu jako zajęty lub 1000 Hz
mov r 1 ,#main 1 flagen-or
mov @r1, #0 ;ustaw błąd tonu jako zajęty hrb 1000 Hz
clr test_end
clr errorflag
clr error tlag
mov rł,#main_flag
mov a,@r1 ^οζζ^, pierwszą flagę
anl a,#0000000 lb sspjrawitó cy wykonano book
call start hook test ttcsi odweeszenia
test_hook:
jb erroiyJEig.rouerror
call dial_test ;test wybeerama
test_dial:
jb errorJlag.rmgerror
call start dtmf ttest dtmf
test_dtmf:
jb errorllag.rouerror
call stat_ ringi _tesi desi dbwrmtcnal
test_ring:
jb erroiyfl agynui_error
call startjćngyins tesi desi odpona dzwonienie
test_ringa:
jb errop tlag.rouerror
call makecalt desi po^czema
jb error_Jlag.roueriOr
call nnti_Jiniinj wyjjśck bez błędów
rouerror:
call ^rror_^t^c ł^^dui mierną Wędu
; jmp wait_end
178 631
until fin tim:
setb test_end
clr trO
mov time_on2,#0 przy odweeszeniu co 10 ms
mov time_on1,#0 ;resei na następnych 36
mov mm,#0 110 mt x s
setb ΠΌ
wait end:
call w tym miejjsc^u do uplyniecna 1 minuty
mov 34ε8__ππη
cjn ;255 x236 = 60J8
call nnseft' ;wróć do normal
jmp hookchk ;wróć do normal
; starthook_test - początek testu odwieszenia słuchawki start_hook_test:
mov ^cydaj flagą mam
mov a,@r1
orl a,#0000001b
mov @rl,a ąssa^w flagę ζφςοϊα skichawbi
setb enabth_test ;odłącz apafat
clr coim loop
call write_io_m_b i i dokcez moduł
call teset_io_m ;tetaiuj aalliccę obługgi
call wrtte tp m b
call
clr loopswiclt ;odąączono drugą tfronę
call write_px2
test hup:
setb fremotehup
call Kup
mov Lamptten^pJ()
call wπte_lo c zzaktoalizuj lED)y
mov r6,#10
nose:
push 6
mov 60,#00Αι ;moduł wł^łkki
loop_m:
mov 77,#Ο0Αι
djnz f7,$
call wat^ceboog
djnz r6Joop_m
mov rófi wytoki
loop_ma:
mov 77,#00Αι
178 631
djnz call djnz mov r7,$ wacchdog I6]l0ot_ ma r6,#0fhi ;modui zwłoki
loopmb:
mov ^^#^0)fhi
djnz r7,$
call watchdog
djnz r6,loop_mb
mov r6,#0fh ;moduł zwłok i
loopmc:
mov r7,#0Ufh
djnz r7,$
call watchdog
djnz ródoopmc
pop 6
djnz r6,nose
tzst_hup2:
clr fanswer
clr thook ;kasuj flagę
jnb Ihook.not hook det ;mzwyneyaie zdjęcia słuchawki - O.K., wykrycie
jmp hookerror zdjęcia słuchawki - błąd
noi_hook_dzi: ;test zdjęcia słuchawki
setb fonhook
setb conn_loop ;wyseępuJące zdjęcie słuchawki do
call wriie io m c ;intzrUzjsu
mov r6.#0fh ;moduł zwłoki
loff_m_oUf:
mov r7#i0lfh
djnz r7,$
call watchdog
djnz r6,loop m off
mov r6,#0ffh ;moduł zwłoki
loop_m_ofU2:
mov r7,#0ffti
djnz r7,$
call watchdog
djnz r6,loop m oU2
mov r6,#0ffh ;moduł zwłoki
loop m_off3:
mov £77#Κ)1^4Τι
djnz r7,$
call watchdog
djnz rólloop m offi
mov r6,#00fb ;moduł zwłok i
loop_m_off4:
mov r7,#0ffh
djnz r7,$
call watchdog
djnz rójoop m off4
mov r6,#00fh ;moduł zwłoki
178 631 tood_m_ofh5:
mov ^iTOffh djnz r7,$ call watehdog djnz r6,toop_m_oth5 testyfhook:
jb htook,dejecjed_hook detecarą_hook: clr ex0 clr hookswout setb hookswout_ clr fhook dt_deb_1:
call watchdog jnb 1a_,stitl_ohh_hook jmp hook_ąrror still^offtyhook: jb fĘstarkdtydelayi clr ią0 setb ex0 setb fdroną call dtone ret hook_ąrror:
mov r1,#mζin_ftag_error mov @r1,#1 setb en-or-flag ret
4:4(4:4:4:^4(4=433^3^3^3^3^3^3^3^3^3^3^3^3^3^3^3^3^3}33^3^3^3^3^3^3)133^ ?
;diat_tąst sprawdza ton wybierania ?
,*********************************** jjeżeló wykryto zdjęcie o O.K,5 ϊοζεϋ nie wykryto zdjęcia - błąd ;zζ^biokuj ρΐ'Ζϋηνϋηίο odwieszenia do eysądiienia tonu wybierania dla uniknięcia wybierania zakłóceniami komutacyjnymi pokaż TRU z^dj^cto słuchawki jak wyżej ;kasuj flagę ;bąąd dzosjanie usbwtony po elimmaeji zakłóceń komutacyjnych 500 ms jkaujo flagę przerwanźa ο<1ϋΪ683!ω3 db tego przypadku o 1=Diao Tonę jesi włączony pdbtokuo Dżao Tonę y_jjs<ib z ^^sto odwieszenb fc*********************** ^czytaj flagę main ;ustaw flagę tonu uybteląnb ;odóźalienie zdjęcia opóźnienie zdCeęb słuchawki dial_test:
mov r1 ,#main_flag
mov a, @r1
orl a,#0000010b
mov @r1,a
mov r6,#0fhi
delay_dial:
mov r7,#0fhi
djnz r7,$
call watchdog
djnz r6,deby dżal
mov rófh
deb__dbl2:
mov
178 631
djnz r7,$
call wsafhdog
djnz r6,deiay_diar2
clr frl ^dozkl^; 711 msaa wykracie azybirrania
mov time_ofn,#0
mov iime 3322,#O
setb ri
veri3z_dtal:
call mad iom a tan γzγbierai^ia
anl a,#00000001b
cjne a,#00000001b,dial_ok Jeżeli 0 to wybieranie O.K.
call wacchdog
mov οΛπηεοΙΏ nie wykryło ννγΗοηιΜι
cjne a,#l Ο^^^^Ζ__<^Ϊ3·; ίί^οζβ]^; 711 ms j^że! i ηϊ; wzyRy-U) aąisroac i
błąd tonu wybierania
mov r),#maIn_fla__error
mov @rl#0 błł^d νγγ^ο™©!
ret
diia_k:
ret
9
9 ;start dtmf' - początek dtmf
9 9
staił _tmf:
clr fdtone
mov ccapml,#0
anl r0_m_b,#3r0h
orl o3_m_b^^cen:; ^wyślij 0
call senddtmf
call delaydtmf
call disable_dtm f
call delaydtmf
call j^ef_^^st
te^tcero:
cjne ad/Oh.dtmf erna Hag lsraawdź 0
anl
orl io_m_b,/'uno ;wyślij 1
call senddtmf
call delaydtmf
call disabledtmf
call deanY-dlml'
call
test_1:
cjne a,# lh.dtmf rma Hag lsprawdź 1
anl ϊΟ_ι__Β,#30Ό1ι
orl to_m_b,#dof ;wyślij 2
call senddtmf
call delaydtmf
call dtrabie_dtn3f
call dclaydtmf
call gel-test
1π1_2:
cjne a,#2h,dtmfrrrrofffigg sprawdź 2
178 631
ani orl i0_m_b,#0fDh io_m_b,#tres ;wyślij 3
call send_dtmf
call delaydtmf
call disabledtmf
call delay_dtmf
call get_test
test3:
cjne a,#3 h,dtmf_error flag ; sprawdź 3
ani i0_m_b,#0fDh
orl io_m_b,#cuatro ; wy ślij 4
call send dtmf
call delaydtmf
call disabledtmf
call delaydtmf
call gettest
test_4:
cjne a,#4h,dtmf_errorflag ; sprawdź 4
jmp go_to_5 dtmf_error_flag:
jmp errordtmf
go_to_ 5:
ani i0_m_b,#0f0h
orl io_m_b,#cinco ; wy ślij 5
call senddtmf
call delay_dtmf
call disabledtmf
call delaydtmf
call get_test
test5:
cjne a,#5h,dtmf_error flag ; sprawdź 5
ani iO m_b,#0fl)h
orl io m_b,#seis ;wyślij 6
call senddtmf
call delaydtmf
call disabledtmf
call delay_dtmf
call get_test
test__6:
cjne a,#6h,dtmf_error_flag ;sprawdź 6
ani i0_m_b,#0f0h
orl io_m_b,#siete ;wyślij 7
call send_dtmf
cali delay_dtmf
call disabledtmf
call delay_dtmf
call get_test
test_7:
cjne a,#7h,dtmf_error_flag ; sprawdź 7
ani i0_m_b,#0f0h
orl io_m_b,#ocho ;wyślij 8
call send dtmf
call delaydtmf
call disabledtmf
178 631
call call delay_dtmh gei lesl
Oest_8:
cjne a#;8hdltm_.ern)_ Oeg Sprawdź 8
anl ;0_m_b,#J0Dh
orl io_m_b,#nuevo ;wySlie 9
call senddtmf'
call delas_dtmf
call diaιllie_dtf ff
call deaay_dtaif
call ;^<ι__16οΙ
Oesi_9:
hene ιι#9Ε,,ι1ιι]Α'ιτιτο_1Ε^ ;sprawdź 9
anl ;0_m_b#0h00h
orl io_m_b,#05h wyyśjij a
call senddtmf
call delaydtmf
call disabledtmf
call lkikyΛdltfil'
call ^e__e^st
iesi_a:
cjne a,#0ah,dtmf error flag ;odbierz a
anl ΐ0_π__ΐ##0ίϋΗ
orl io_m_b,#0dh ;cs b
call senddtmf call ddayjitmf call disabledtmf call delaydtmf call ge_Jest testb:
cjne a,#0bh,dlmf_error_flag1
.JW go_h__c
dlmf_ error flag1:
error_dtmf
go„t_. c:
anl 0)_η_!ΐ^.0ΐΗυΗ
orl ło_m_b#003h ;es 3
call senddtmf call delaydtmf call dtsable_dtmf call dteiassdtml' call ραΐ^ο!
Oest_c:
cjne a,#0bh.dtim' error ila; 1
anl orl ;ο_π__ι>#^ο[Μι io_m_b#d)bh ;es d
call send_dtmf
call ddayjlmff
call
call delaydtmf
call ^e__teot
178 631 eesehd:
cjne le#0bh,dtmf_eieoe_01ae 1
anl i 0_m_b,# 0))0)11
orl io_m_b,#07h ;es 7
call szKddtaiU
call delaydtmf
call disablz_dtmU
call delay_dtmf
call getiest
test e:
cJuz aaί()bh.dtmfh'zeorl]agl
anl i0_m_b,#0fl)h
orl io mi b,#0ihi ;zs f
call sznd dtmf
call dzlaydtmU
call disabledtmU
call delaydtmf
call
tes^U:
cjne a,#0bh,dtmfheπΌr_flae 1
ret jwyujście bzz błędów
error dtmU:
mov r^mam flag ζπό£
mov @r1,#4 ibłąd dtmf
sztb ζπό£_0^
ret
;startheine_tesi - początek testu dzwonienia
9 9
start_ring_tzst: ;micjuj dzwoniznie
mov r 1 ^mamUag ;wczqduj flagę main
mov a,@r1
orl a,#00001000b
mov @r1,a ;ustaw tzstu dzwonienia
clr rmg_second
clr οοΜ_1οορ słuchawka οο11<ι>^^θΓ^ίΐ
call write_iz_m__u setb fremotehup call hup mov r6,#6 loop_ring_waie:
push 6
mov ^^#^0^:Ufl] zwloką
loopmbb:
mov r7,#00fli
djnz r7,$
call wacchdog
djnz r6ltoop_mbb
mov r6,#0ffl] zwłoka
178 631 bo^mcc:
mov r7,#0ffh
djnz r7,$
call wacchdog
djnz Γ64οορ mcc
pop 6
djnz r6,Ioop_rmg_watt ^Dołączenie' wchodzące
clr ap1 Jnicjuj połączenie wchodzące
jb Sc_lłoop fmgjfff
jmp ring_fflg
lpopringopf0: wracaj m dojna niero>_p)cznie się dzwOnienie 1ł0d
clr rrO ;u_łyną2 s
mov iimcyondwO
mov tinte οηΙ,Κ)
setb UD
waiah2hSec:
call wacehdog
jnb
jmp γπο2_Π;ο ;błąd wystąpienia odpowiedzi
not_answer:
call wrdc ioma
anl a,#00000100b
cjne a,#OOOOO1OOb,ring_atafSt jjeżeii O-rozpoczyna się d;wvomeme
mov atiime_on2 sprawdź, czy upłynęły 2 s
cjne 3,#200,\ν3ΰ__2_5εε ^<^1] 2 s do zatrzymania dtmf
jmp ring_flag ;upłynęfy 2 s, błąd
ringhStatas:
mov r6,#000t ;zwłoka
loopmbbc:
mov r7,#00flt
djnz r7,$
call wacehdog
djnz rójoop mbbc
mov r6,#0fflt ;zwłoka
loop mccd:
mov r7,#0fflt
djnz r7,$
call wacehdog
djnz r6|loop_πsccd
ring start: yprawilza ciągłość dzwonienia w 1,3 s
clr rrO
mov iimc_on22iO
mov ΐϊιη_ on7,#0
setb rrO
wait 130msec: sprawdza dzwonienie w ciągu 1,3 s
call
jnb aanswer,no__answer 1
jmp ;błąd wystąpienia odpowiedzi
not_hnswer1:
call read_io_m_a
test_130:
ani ć7#^(^(^(^(^0K^(^b powinien być niski podczas 1,3 s
cjne a,#00000 0 00trrmg.expii'c
178 631
jmp iCng_flag ; ddwetaen;e oznia w o 13
ring_exdire:
mov aąimeomd
cjne 3 Οηϋϋ ;czekaj tdąme
wζit_250msąa bwOmeme ρϋήηηο utiać po 1,5 s
call watchdog ζpjo czekamy 2^ o na spzawdzeme, ety
call r^adąo_m_a ;ustanie
test_250:
aal 3,20000100(^ powitaem by o nodz popowy pj wyżej 2 s
cjne a,#000001 OOtymgnot- cmpiee
tesi_stod:
rang ^ορ . ldewonianie aninZa rzedd s
ring_not_ąχdire:
mov cjne aąimeon2 a,#250,watt_250mąco ;po U s powaman byó e_ytoki ;czekaj cz^Oze s
tąst_ftag:
jmp abaJlag jbłkąd n^^utZ^aib dwOrnenia w 2^ s
ring stop : ;czekaj 2^5 s
clr k0
mov dime_oti2,#0
mov iime onl,#0
setb k0
wait_2seca:
call wacchdog
jnb ianswel.not_anewer2
UW ringjlag ;błąd wystąpienia odpowiedzi
aot_anbwąr2:
mov a,timej)n2
ajae a,#25 5 ,wait_2_seaa pzekaj 2,55 s do zatrzymania drugiej pętli dtmf
jb ring są·cond,riag.srod 1 ;sprawdź dzwonek 2 razy
jmp lood’iiag.otf' ;iΌZdocznjj jeszcze raz
ring_flag:
setb ap1 basuj połączenie wchodzące
mov r 1,#main_fl ag
mov @r1,#5 ;błąd dzwonienia
setb error flag
ring_stop1:
tcss kmbre:
ret ;wyjścią bez błędu
;stζrt_ring_aas_resr - odpowiedź na dzwonienie ;*********ψ************************************************* start_ring_ans_test:
mov i1 ,#main_flag mov au@r1 orl a,#00010000b mov @r1,a tood_riag_off2:
;inicjuj dzwonienie ;wcd_ijej flagę main ;ustaw flagę testu dzwonienia ;wracej tu dopóko nie rozpoczane się ponowme dzwonienie
178 631
clr ro
mov iime_on2,#0
mov time on1,#0
setb ro
wait 2 sec2:
call watehdog
jnb fanswer.noran.twero ;vyejjnio pi'zy odpowśedzi
jmp ringfflag
noo nnswera:
call read oom a
anl
cjne a,#000001 Ι^Ι 1 jjeżeii 0-odbywa iię dwvonrrnie
mov a,tlmr_kr2 ^prawdy czy upłynęły 2 s
cjne a,#200,wntr_2_rcc2 ;^^^1ι31 2 1 do zatoy/mama
jmp aną-flag ;upfyn.łły 2 s
ring present:
setb connjoop 1 odpowśedź na dwomeme
call write oom c
mov r'7#^0fft1 1 włoka db ustawicnia fanswer
wait ans:
mov γ6,#ΟΟΟι
djnz r6,$
caH watehdog
djnz r7,vrajr ans
mov ¢#0001
wa.it _nsa:
mov tr6,#0ffli
djnz ró,$
call watehdog
djnz ^wafl-ansa
test ans:
jb fanswer,ok_ring jjeżei 1 ^^s1 odpowśedŹ1 to O.K.
jmp anSfflag ;me vytsłίpn;l błąd odpowśedzi
mov t1 Jim ani _flag_error
mov @rl,#6 bł^^d dzwoniema
setb ατοΜΐ^
setb ap1
clr fanswer
ret
ok_rine: ;wyeście bez błędu
timbre:
clr ianswer
setb ap1 po^czento wchodzące
ret
? φ ^ιΙ.^ιΙΙ - zestaw połączenie dla sprawdzenia radia ?4:*>ίϊ4:^:^:4:ψ$5ί:^:ψψ4:$ψ^:4:φ^:5ί:4:ψ3(:4:$ψ^:ψ*+’ί:Η::ί::ίί5Ιι:*:ί::Ι:*$:ί:$*:ϊ:5ί:’ίι:ίί::ϊ:5ί::1':Ι::1«*^*$*4ί ?
mov rl,#mainrofiag 0^x4;^ flagę main1 mov a,@rl orl a,#00000001 b
178 631 mov @ri,a ΙπΙ^^ζ:
jnb powe__,powef_is_ok ;rstow lagę testu połączema jjeżei; radio jes; O.K, , san Hni; powiner! być niski (0) mov ri ,#marn 1 _flag_error mov @r1,# 1
setb jmp βΠΌΓ_Α^ preonbook
powżr_it_ok:
mov ąffirnc
call wrirus
mov a,#7
call wrirus
call clr_dsp
mov a,star
call wrrbus
mov tffh
wait_ min:
mov ι^6),#0^331ι
djnz r6,$
call wttehdog
djnz r7,wait min
mov γ7,#031
wai mina:
mov r6,#0ffh
djnz ró,$
call watchdog
djnz r7,waipmma
mov a,#9
call wrbus
mov a,#0ah
call wrrbus
mov a.ddspbuf start
add a,#3
mov ri,a
mov a,@r1
anl a,#fhi
call wrbus
inc ri
mov a,@r1
anl a, fik
call wrbus
inc ri
mov a,@rl
anl afh
call wrbus
; ustaw Mąd zaKUjnia f funkcja odczynu rn ζιζ^Όικι zwłoka ia; pr;ritsialtie numeru do mteffejsu generuj połączenie ze swoim numerem telefonu ^obierz aktualny wskaźnik ;odczzSae komunikat w buforze ;odczzSae komunikat w buforze ;odazzSae komunikat w buforze
178 631
inc mov anl call rl a,@rl a,fffh wbbus DdczYkij Ι^ι^π^τ^^ΡΙυϊ wi bfooree
inc rl
mov a,@rl o^iczzt^aj komunikat w bοrórse
anl a,fffti
call wrbus
inc rl
mov a,@rl iodzzyiaj w bοforse
anl a,#ffli
call wrbs.ls
inc r1
mov a,@rl ;odzzatat komunikai w
anl a,fffh
call wrrbus
inc rl
mov a,@r1 ;odzzγiaj komunikai w bοforse
anl a,fffh
call wrbus
setb fsend ;usaaw flagę nadawama
mov a,#send
call wrbus
setb j^^lab^ht. spicial rcdUkuji Q4
call γτηορορΏί:
tess mutc1:
clr mirtę ;nie wyciszaj
call wirtepx2
clr rri ;zwłoka na sprawdzenie pracy
mov iimeofn ,#0
mov time off2,#0
setb
delaycall:
mov atiimejofG
call watchdog
cjne a,#80,deiay_calt czekaj 1 ? s
test_mute2: fest tonu zajętości
clr rr1 ;zwł_ka na sprawdzenie pracy
mov im^^_o^ ,#0
mov ώκ^__ο2ί,^,#0
mov time ο®,#0
setb tri
cont_waiting:
jnb muse,ttill_rnfse
mov r1,#main_flag_error
178 631 mov @r1,#4 jmp ttillslnuse:
call readsio_m_a anl a,#00000001 b cjne a,#00000001 b,busy_ok call readsio_msa anl ceee a,#00000001b,busy_ok mov aitim__ofTl call ντοΡίκΙορ cjne a,#lhICon__waiting mov r1,#main1_hlae_error mov @r1,#3 callseπΌr:
mov a,#endl call wrbus selb error Jla; jmp ρι6_οιΕοο<^ t1000hz:
busy__k:
mov a^endl call wHus pre_pnhook:
clr connloop call writesiOsΠl_c call hup rei ;error_ach - ustaw kod błędu eπΌr_ach:
mov r1,#mainsflagserror mov @r1,#4 cjne a,#a.hhehk_hook_ring mov r1,#eirOi'_^c^dle mov @r1 ,# 1 emp exit_error chehkshffksring:
cjne a#;;2.check_d^ia_il'iag mov r 1 ,#error_hnde mov @rl,#2 jmp exit. error hhecksdialsflag:
cjne a,#3.check_dtm_jflag mov r 1,#οποι'_οοι1ο mov @rł,#3 jmp exl__ercor ;ustaw bk! paicy jjeż.tiii znika uboe ustaw bądl z^pn^awdźź, łon yyώier;etia jjeżeH 0 o znijęlość O.K.
;sprawdź ton wybierania jjeżeii zajętość 10001ΗΖζ-Ιο O.K.
;nie wykyito zajętości ;czekąl 18,2 s jeżeii nie wykryto zajętości ;ustaw hniu zajjęlości lub i 1)00kH ;zesaw ρο^οτοπΐα jeest, l tłUh^^a^y^t^a οοΙυίοιζοικι zestaw połączenie jjesti i słuchawka odłożonż il przydać z moduł ;bląd ;bląd SLIC ;bląd odwieazenia pzyy ίΖ/.ν.Όηκ'ηηι ;bląd wybtrrenra
178 631
3ιζ^5.1ΐηιί'_ΙΊ ag:
cjne ring mov rl,#erfoi·_fode mov @r1,#4 jmp zxit_zeeoe chzck £Ϊ^_Ο38:
cjne ai#5,ahzckhring_ans_flag mov r 1 τΖζπ'ορζο de mov @r1,#5 jmp ΖΧΪ1_Ζ£ΤΌ£ cJuz a]#6,chzck_power_flae mov rl^eroW-Code mov @r1,#6 jmp ΖΧΪ1_Ζ£Π£
Λζ^__ο wer_flag:
;Mąd dtmf dłhid wy/krywarna dwoniema ;Mąd odpowiądzi na dzwonimie ;sprawdź flag] pohiezcń
mov r1,#main1 flag error
mov a,@r1
cjnz a,#, ,eZakhrah_iest
mov rl ,#erfOh_code ;Wąd zasiamu radu
mov @r1,#7
jmp ζχϊ1_ζπό£
check call test:
cjne a]#2]Chzck_busy_tese
mov Γΐ,#Ζζητο__ϋ(^ζ ;Wąd xxxx
mov @r1,#8
jmp e.\ii. in’or
check_busy_ test:
cjnz a,#3 ,aheck_inusz_iesi
mov rl ^errorjoode ;Mąd tonu zajętoćci
mov @rl,#9
jmp cxi( ΖΠΌΓ
ahecn_inuse IzsI:
cjne ai#4]Checkh1000_test
mov γ1#^_ oode ;Wąd stanu pracy
mov
jmp εχϊ__εηθΓ
Λζζ'η_1000_ tzst:
cjnz 3,#5ζεχΐ__εηοΓ
mov r^zrror codz ;Mąd tonu 1000 Hz
mov @rl,#11
jmp zxit. ΖΠΌΓ
exie_eeeor:
ret ;fm_selU - powrót do normal
0in_self:
clr conn_loop jjeti odwieszume su^^ł^^vsli] do call wriee_io_m_c interfejsu call hup
178 631
clr enablą_tąst jdobccz apazat
call wnte'_iom_b i o odtycz moduł
clr ΙπΟηκιΜο i;ntejaii;ueO _ο80 mam
clr ίϋί_ρηύ ; kończ test
clr ąrroi·_f.ljlg ffiaga Hędu
jnb error_flag,tuni_on_led
clr ext _e'd wtłąccz LED zewnętznty podczao ^^ste
call wrir__lo_m__ ;włącz//wyąccz Lido zcwncEzzny
call loop_bad
turn_on_led:
setb ext led ;w_Eącz IED) zeenlętdnly podczas teąbrt
call wrld^ąlo_m__ ;włącz/w_Eącz IEDO zcenl^tzzny
call loopbad
clr wyłąccz IEDo zewnętdnty podczas teste
call writ.e_jomc ^οζ^μεζ IED) zeevnęidzny
call ioopjaad
setb _χϊ_1_1 wyłŁcę2 LED zewnętdnty podczas Insto
call write_io_m_c ^1ηζΛ·\_Εζ5ζ IEDo ζηΛ-νη^-ζην
call loop__bad
clr ext_led jwydącz IED) zewnętd:nty p^dEzzas teste
call wnte'_io_m_c ;włącz'/w_4ącz IEDo zewnęrzrny
czll loopbad
setb ext led wyEacz IE/D zewnęrzzny podczao lessu
czll eiίtą_io m^ c ^εζ^μεζ IED) zewnęrznty
call lood__bad
tess on:
clr ext led ;w_Dącz IED) zewnętzzny podczao tesiu
call write__o m _ Ο^εζ^μοζ LED zewnęrzzny
call loopbad
loop_bad:
mov zzwvtoka na πϋζϋίεηίε sseZanswer
wait_emb:
mov γ6,#0ϊΉι
dacz r6,$
czll watchdog
djnz emb
mov r7,#0fhi
wait_emba·.
mov ró^Ofhl
dacz r6,$
caU watehdog
djnz r7,wat__emba
ret
gweedź tu po podniesieniu słuchawki w celu wybierania
178 631 first:
call clr_msg kasj poprzednie komunikaty TRU
clr ex0 ρηΜου! pfzcrwatiie podniesienia δΒ-ίοΤιαννΤΤ aż do tonu wybierania, w celu zapobieżenia wybieraniu zakłóceniami komutacyjnymi
clr hookswout powiadom PTR o podniesiemu
setb hookswout_ jak wyżej
clr fliook flagę
dt_dnlay:
call watchdog
nov :_cnids„#4 ;UWAGA:NJTO & TIMERO są w tym miejscu zawieszone - nie używać żadnej specjalnej funkcji TRU bazującej na tych przerwaniach
call trucmal ;wykonuje rozkazy specjalnne TRU
jb f start,dt_delay ;zostanie ustawiony po 5Hi ms elimrnauii t^kłóceń komutacyjnych
clr ieO ;kasnj lagę pr zer wanna poniesiema suicha wki aha t cggo przypadku
test lc:
jnb k_ ,alert_check ;wyskocZj teżeii słuchawka zdjęta po 500 ms
test 1c1:
call hup ;słuchawka odwieszona na powrót w ciągu 500 ms
jmp start
alert chick:
setb exO ponownie odWoką) ρινηηνηηίη ^dj^tim stochawki (DT już włączony)
jb muse,make_dt ;wyskocZt ic'zeij nie INUJSE iletteśmy gotowi do wybierania
jmp wati jj^^^ii uuz, INUSE t ot ptawdopodobme wysp pty ące podniesienie słuchawki odpowiada na połączenie wchodzące podnosimy słuchawkę na 500 ms w celu generacji tonu wybierania
makk _t:
setb adtone ;1=Ι)Ϊ3ΐ Tonę włączony
call dtone jcdNakni Lbai Tonę
call get pobiera znak bib -wyjdź w odwłeszema
jb musepheckjrreity clr adtone mov ccapml,#0 jmp watt cheskh_tηhix:
jb tockpreityO a,#pound,no tend ;vyskoeZjteiei I TRU na zabtokowane ;wyskocz.i ice.eiI złbtokowatyi wanty tylko # (odblokowanie)
^ΟΊχ./):
cjne a,#zero,prefix_l ;vyakor7jIeηai i nte[0]
jmp ttorett ;skocz do 0)i akko pηefikru
cjnn a,#l,no_prefix ; yykkocz jteżet i nie[1i albo
jmp storehtt ^kocz do zapamiętania [1 ) jako prefiksu
178 631 no_prefix:
inc rO pozostaw ρΓζε<1ζΪΗ; prefiksu me muernony (FFh)
inc 2 ;lecz zwiększ hczbę cyfr
Opamiętaj aktualną cyfrę i następną aż do czasu ich wysłania,
storrit:
cjne rO,'//7tfΊ,clost.ore_it ; wy skocz; ΐεζεΗ bufor eyfr jeszcze me ζπρΝηίοηγ
jmp check_numbei' wvyskocz,; jeżei; bufor ^^ϊ.-Ιαζ,; bez ζοροζηίί^ιηίη
do_ttorr_it:
mov @rO,a νηρίΐΩΒ^ίρ cyfrę
inc rO ;j9iz^^^r^r; do przodu wskaźnik bułora cyfr
;sprawdź wprowadzone cyfry i przeanalizuj je na ważność sekwencji.
checkknumber:
clr fsendiimer ;upeanief sęę; że ayłłączony
mov afti^l-digi; ;wskaż na p^dzaa; pieIaγrzef cyfry
cjae aWffhgcheck—One ;wyskocZ; ^zei; wprowadzono aSko pieawrzy znak cyfrę
jmp checksend w przeciwnym pzypadku sprawdź, czy czas na wysłanie
check oae:
cjne a.;pKnind.checkyend ;wyskocZ; reżei; me [#; (zaWoko warne, odblokowanie itp)
mov a^ccnd^^^: ;wskaż na cyfrę; ^zei; ρΐ6ην5ζ ees; [#]
cjne a,#3fh),check_Wro iwyskocZ; re:Ż3^i ; wprowadzono a ako dmgż znak cyfrę
jmp check_send W Jir^^ttavi^^m pzy padku sprawdź; czy czas na wysłanie
check two:
cjne a,#pound,check_n<mn iw^y/skocZ; jjeżei i me##]##; lub odblokowanie)
mov ;dwa ## mogą tz^^ra'a^zaWokowaine lub odblokowanie
cjne a,pound,check_unrock trzy # oznaczają ζαΜο^χγοηΐε
eab ;me bloku) Jęli ; :rabtokowίaee
jmp ;[# ][#][#; macza zabtokowanie
check nam:
cjne a,#srar,check_send ρ^ην!,j^li ż me l^<o]<a^ι^;aeja [#][*]
mov a1fhird_digit ;w pzzecwnym pzzypadku poWere ó^\^^^ż trzeci znak cyfrę
cjne aJfffh.c hec knam 1 ;wyskozZj ζοζοΙ ż wprowadzono psko hzec^ -^rffrę
jmp fhcck_rand wv pzzecwzny m pzz.y padku sprawdź, czy zass na wysłanie
check nami:
mov f_cmds,22 ;aaiadej numer fvaSaei i, ^^γριη; skozz
call rrucmd ρινγ^ο; na miry NAM
;Przerwij przy niedozwolonych sekwencjach cyfr (wybierania), no,send:
178 631 clr 0uniocktimrr setb setb jmp chsck unlock:
forώook ic0 start wyłączenie bloku czatkwreo odblokowania, znak # go ustawia ;jak w przypadku odwicszcnai ;skocz do JUrkjej1 obsług1 ExtIntO jjak przy ponownym podniesieniu .sUtelr^wlli cjne a,#0ffh,unlockine_le jmp chs'ck__send unlocking_ie:
setb Iunlocktimer jmp getnswt.
;wytkocz, jeżeli jeśli wybrano jakąkolwiek cyfrę po ## ;w przeciwnym przypadku rprawi1Ź1 czy czas na wysłanie ;wyśle po 2 s bez kodu SND ;dla uniknięcia wysłanai kodu odblokowania jako cyfy ważnej ;Wejdź tu, jeżeli sekwencja cyfr nie kwalifikuje się jako któraś z funkcyjnych opcji specjalnych ;(blokowanie, odblokowywanie, podwójne NAM, itp.).
checksend:
setb jmp sw ssndtimer,check_int1 fsendtimer get_next okocy jeśli swr=/l odblokowane połączenia wewnętrzne odblokowane nadawanie po 4 s 1 jeżei1 sw7==0 i na powróte po następną j^yotr^
chsc^ intl:
mov a,prefix ;te:sUij prefiks w akumuiakrrze
φ. a,#0,check_op ;skocz1 seśió no (0]
mrv a,first_digit ;w przeciwnym przy padku pierwsza cyfra w-a-n^ewm
cjne f,#1,checkJop ;skocz1 jeśió nie [1, może być wywołaniem operaom
setb fssndtimer połączenie międzynarodowo 1 rozpoczyna sęę na a 1;„
jmp eet_next. ;na powró1 puo resztę 1 teraz nadaje tylko Mok czslrorvy
chrckJop.·
mov cjne cjne setb a.prefix a,# 10, che ck_service r2,#0,check_service isendlimer cyfrę prefiksu Jkrk)wuie ;skocZl reśió proik'ts jes1 nie 0 ;skocz1 seśi1 cyfra (pyry) wybrana również ;w przeciwnyni Jn'zyJfldku może to być przzy w-danie operatora
check seryics:
cjne r2,#3 ,chrck_di stance 1 skocz1 jeśH nie 3 cyfry
mov a,second_digit ;w pz'zeciwnym przypadku, 1 reżei 1 tn0otmfces itp
cjne a,#1 ,check_distarjce skocz! reśi 1 duigą- cyfrąres1 1
mov a,third__digit ; pDołii^^z rrzecią cyfrę
cjne a,#1 odrę ck_dist£ince sskoCZ1 SelU 1 leżeH rrzecią cyfrą nie res1 1
jmp ΝΐΠ._ρ1 ;nrawkooodobme 1
checty distancr:
cjnr r2,# 10,checkloca1 ;czy ννγΒ^ηο 1(1 cyfr?
jmp send_i1 ;wyśii1 10-¾ reżei 1 nie międ:tynarodowy
clicck local:
cjnr ^^#^^;g(^r_n^?et ^^1—^^^1 seli 1 wybrano mniel 1 niż 7 cyfr
setb fsendtimer przy^I^c^^j wydanie w cng^u 4 s
mov a.secorlcldigj1 ;pobiesz drugą cyfrę
178 631
subb a,#1 ;cy rotest #1?
jz gs'terre'xt ^Ιιοοζ, jest t aaki może być kteIsuk_wyt uiub fokafoy
mov a^scond digit ippoberz p o_o_ore drnuą ą yi'rę
subb a,#10 ;cy to jest 0?
jz ;skocz, teżeti aak, może to być rn ktennkowy, może być lokalny
clr fsendtim^r ;nte pobteraj wiń^c^ijj, wyślij 5 s późn^jj
jmp tendeis geinert: inc r2 call get jmp storę it ;ρο^βΓζ nową cyfrę ;dokphqt weswystSięh s_\alγdzeń z nową cyfrą .*********************************************************** ;Wzbietanis wykonane, wyślij numer ;
;Sprawdź, czy TRU jest zablokowane, i przerwij, jeżeli nie wprowadzono kodu odblokowania send_it:
jb locksd' l_ck,tsnd1 ;skocz, jeżeii TRU ust jest zablokowane
A thirddigit. a,#00fh,tend1 ;pobierz trzecią cyfrę
cjns ;skocz, jeśti wprowadzono cyfrę
jmp nossnd nie oysyiajt jeżeit nie wprowadzono kodu odbtokowanai
;Wyślij wybraną cyfrę.
ssndt:
setb mute wy^cssz l^<^łcó3r r fonii
call writep.\2
mov yirO.ksend ; wstaw wy sarnie ici końen cyfr
mov a,#clear ;kod kasowanća
call wrbus ;wsfaw η:.ιίpierw kod ^^tr^ioα^nat w <^^ht skasowanta ws/elkćeh cyfr z pamięci TRU w przypadku wprowadzenia z mikroSslsOonu jako pierwszego
mov r0,#60h wskaźnik pmttyci
mov a,@r0 ;wsfaw prefiks do aksιmuk;tora
cjns a.bbfiaout
inc r0 ;ztuić psffiks , teżeit FF
out: mov a,@r0
call wrbus na magisrraty
jnb fiaing_send_ok tssS_lc2·.
call jmp hop saart ;;akrończ podawanie, Seiei t odwlezzenle
send _k:
inc
cjns ajsediyont do kodu SND
sstb isend wyśllij lOgg, nadawama
clr mule iodbloUaj fonty rx
call wctte__px2
178 631 ;Wybieranie zakończone, cyfra warunkowego echa do TRU, polem czekaj na następne eweniualne cyfry ;(wewnętrzne ilp.) lub zezwól na przejęcie sterowania przez przerwania.
wail: call gel
jnb sw_dara,walr
call wbbur
jmp waill
;sprawdź cyir z aparatu MJ ;zlikwidue daną po zablokowaniu snd ;w przeciwnym przypadku wyśljj daną do TRU ;pozostań w pęt.ii do czasu podniesienia zluchawki przez nas słuchawki lub drugą slronę ;Generator Dial Tone ;Ten podprogram wybiera i generuje odpowiedni ton wybierania, zależnie od naszego bieżącego sianu ;(roam - ruchomy, holler - wywołujący ilp)
dtone: puzh psw
jb fockiServ_check
mov dpra,#rabt__35O ;350 Hz dta blokowana
jmp toneout
zerv check:
jb noseΓVIfoam_check
mov dpta,#rabte_620 iłon 620 Hz dta sygnata meobstagiwema
.^p fone_out
roam check:
jb sWsdialtnne,normal jjeżei i opejoIraiisy sweeil :am'lietięty (=0)) wytwarzaj ton różnicowy wybierania dla roam
jb foima,nomra
mov dpra,#rabte_roam ;440-620 Hz dta roam
.^p toneout
normal: mov dptr,#tarle_dt 3350 o 440 Hz rnomautae DT)
lonc. _ul:
mov Οοχγροπή^ρΐ ;;npamięat , gdzee rozpoczynaa się abiica
mov h;ghpoint,dpl·ι
mov ccapm 1 ,#0 0 0000 0 Ob Ιΐ^(^1;^θ^^αί łon
pop psw rei ;Pobierz cyfrę z klawiatury mikrotelefonu ;Podprogram przelwarza wchodzące cyfry i/lub hlagi przetwarzania ;Przy powrocie, zwraca daną w akumulatorze get:
push pww geU:
mov 0ίπ1ζ,#3 ;flaea wskazuje zlosowaną funkcję
178 631 call bnccmd (wykonuje któreś z poleceń specjalnych TRU call watchdog ;CzekaJ na impuls. Jzżeli impuls nie został oznaczony przez EXTINTO(O00_Hook_Szrvicz) flagą jako impuls wejściowy wybierania, sprawdzamy jako cyfrę wejściową DTMF. Jeżeli stanowi sygnał wejściowy wybierania impulsowego, odbywa się w dalszym ciągu siiasrniz impulsów, aż do upłynięcia 250 ms po odebraniu ostatniego impulsu. W tym miejscu uważamy za zakończone zestawianie cyfry wybieranej impulsowo, tak żz kopiujemy ją do akumulatora i ustawiamy flagę fąig_ezrdy.
gethPnisz:
jnb ΐυ'^ίί..υϋυόΐπ) 1'
clr ądco(te (kasuj Hagę tonu wybieralna
mov ccapml,#0 (wy^cz ton wybieralna
mov a,#2 (jeżeli występuje sygnał wejściowy
clr c (kasaj przruiie'sienie przed odejmowaniem
subb ι,ιΙΙ^^-ΟΟΕ] (sprawdź] cy upłynęło 2133 ms (3x71,1 ms)
jnc ge_ dtoif (jeżeli jeszcze nie] to cyfra nie jest pełna
mov a#1131
clr c (kasaj f^i^>^^t^niesz^riic przed ojlejmowr(niem
subb a1Sime_of31 (sprawdź] cy uplynęoi dodatkowych 36,7 ms (132x277,8 ps - łącznie 250 ms)
jnc 5^Ο_311ιΓ (jeżeli jeszcze niej to cyfra niejest pe(na
mov a,pu;se_digi] ;wprrowadź cyfrę do akumuiatorao
mov pu;se_digi],#0 (kasaj dila następnej cyfy
setb ;w celu wskazaina] że cyfra jest gotowa
clr fdigit (kasaj flagę
Jeżeli wybierana cyfra DTMF jest gotowa, skopiuj ją do akumulatora. Sprawdź na warunki specjalnt, flash, odwieszenie bp. Wykonaj skok warunkowy w przypadku warunków specjalnych lub kontynuuj sprawdzenie dla dalszych impulsów i/lub pełnych cyfr.
gzt dtmU:
jnb fdtmfm,hang
clr fdtonz
mov acrpm1,#0
clr fdtmfin
mov a,px1 temp
anl a,#OUfh
setb fdig_ready
;kasaj flagę tonu wybierania Wyłącz ton wy biemma (kasaj flagę wejśda DTMF (wprowadź cyrrę do akumuaatora ;zarrymej tylko dobę eziet'y tuty W celu wskazaina gotowości corty (Sprawdź odwieszenie (impuls 700 ms).
hang: jnb Uhang,Ulash pop psw test_1c3: call hup dec sp dzc sp jnb f·zmote_hupino_ezmoie clr iiemiotejiup nojemote: jmp saari jjeżeii nb odwieszenie ssloo^gaj wskaźnik stonu (op^zcza) tce podpoogamn bez i ret ;skosej teśii oyyer¾iłj sygnai no remote
Wyjdź, koo] odwieiłi słuchawkę
178 631 ;Sprawdź w przypadku Azs! (200 < impuls < 700ϋ).
gflash: jnb flash time jjeżlli nte 'ΊΖϋΗ
dr fpjb7h Z^uj flag) l^ah
mov ccapml,#S ZwYrdacz ten wytaczania
jb fdtonejturthljb7h jząel i w^anty ton eytatjntaa,wyśjij tyKo onomnme:
ostatnio wybierany numer
jb bąandjturthfib7h jjeżd i flaga eysyjanaajbrO π^ιχνζοηΐ; nte eprtowadaej
cyfr, tylko wyślij
clr Cctiol_s iksaj flago tonu wytaczania
pop pwv
dec pp ;akorgguj waaźnnik stouu
dec sp Opuszczając podprogram bez instrukcji ret
jmp t Zwyprowadź cyry + wyślUj
;Nadaę tylko kod SEND, ale bez cyfr, jeżeli albo Dial Tone, albo flaga Send ma stan wysoki.
just _ash:
clr ;kauuj flagę tonu wytaczania
mov f_cmds,#5
call trucmd
mov a,#send zw^^ijjj kod
call wrbus
set fsend ZwylUj flagę
pop psw
dec sp ^koryguj wskaźniki) stouu
dec sp 0)pudzczejąc podprogiam bez o ηΠ
Ump wait Zwróć po Ο'-ι,, odwtezzente ttp.
Jeśli jeszcze nie wybraliśmy pełnego numeru telefonu i upłynęło 40 s od ostatniego wciśnię-
cia klawisza, rozpoczyna się 1-minutow_ ton hollera.
time:
jnb fiime,send_iime jee^lii nte uptynąl cass
pop psw
dec sp ;ako:^guj wkkźźmk stouu
dec sp Zopuzzcająo podprogzam bez zc_
jmp rohtone Zweedy bez n^hk^^e
;Sprawdź, czy nadszedł czas nadawania (upłynęły 4 s od wciśnięcia ostatniego klawisza).
jnb mov cjne clr fsendiimeiontockjime rótiimeoffl r6,#56,untock_iime fsendtimer ;w r6 czas ΊΊ ms Sprawdź dla 4 s (56 x 71,1 ms = 4,99 ss
pop psw
dec sp χΑ-ηου) waka:ndik stouu
dec sp (opudaczejąo podprogram bzz ste
jmp sendtl ;w_prowadź cyfry i wyśiej
Sprawdź, czy żądano odblokowania.
udock time:
jnb ygnlocktimer,toak time
mov r6iiime_o22 ;wró zass 7l ,4 ms
cjne ró^SJook sprawdź na (28 x 71,4 ms
178 631
clr fUnlocklimer
pfp psw
dec sp
dec sp
jb lock,no_unlock
W unlock_il
no imlnck:
zelb fonhook
selb ΐεΟ
jap start
l^iro^;^ur wskaźnik słosu jopuazc^jąc podprogram bez i ret ;me odblokowuj . eelii iuż odblokowany jjak pozy odwteszenłu tskocz dhi ^11^1 obshigowcl ΗχΙΙιιΟ) ;jak pozy ponownym podntesienłu sUuchawki ;Dodanie wartości flocktimer w celu umożliwienia zablokowania upływu czasu przy mniej, niż 4 cyfrach.
;Do TRU irzeba dodać etykietę g^lock jak również (w razie konieczności) ustawić flocktimer.
lock_lime:
flocktimer,look tskocZj eeli 1 nee
mov ^^itim^ ii02 wr r6 izasr 71,4 ms
cjne r6,#28.,look isprawdź na 228 x 71.,4 ms = 2 s)
clr flockflmer
pop psw
dec sp ^^1^os^;^u1 sp
dec sp jmp go_lock ;Sprawdź, czy mamy (całą) cyfrę look: jb Odle_reads,eol_asdtgil
jmp get1 ^^pra^v^dź ponowiie. cy nee wYpi-owadiono cjIty
;Mamy cyfrę (impulsową lub DTMF), zwracamy ją w akumulatorze.
;ο0___1ϊ;ϊ1: clr ddigready k^a^^i flagę gołowohci coIS-y
gol_inust: mov time_off1 ,#0 ;ηι·ηο1ιοιηίγηίγ' bloków czatsowych pzyy każdym
mov mov pop rei iimeoU2#d) ϋϋβ_ο0Β,#0 psw wprowadzeniu cyfry
;Pobierz cyfrę z klawiatury mikrotelefonu .*********************************************************** ;Podproeram przelwarza wchodzące cyfry i/lub hlagi przetwarzania ;Pray powrocie, zwraca daną w akumulatorze gel_lesi:
puzh pww
178 631
Jeżeli wybierana cyfra DTMF jest gotowa, skopiuj ją do akumulatora. Sprawdź na warunki specjalni, 0lash, odwieszenie itp. Wykonaj skok warunkowy w przypadku warunków specjalnych lub kontynuuj sprawdzenie dla dalszych impulsów i/lub pełnych cyfr.
gethdamf:
jnb fdtmfin,no dtmh_test
clr fdtone jkami flagę tonu vy^linra^n^a
mov ccaf>m1,#0 ;wydącz ton wybierania
clr fdtmfin ;kasui flagę wejścia DTMF
mov a,px1_temp ;wprowadź cyfrę do akumulatora
anl a,#00hi ;zafrzymąi tykai do^e cztery bity
setb fdig_ready w ceto wskazania gotowość i οίγ·
nOhdtmehtηsa:
clr fdigready ;kasut flagę i^oło^l3^(tl cyfy
mov time_offl ,#0 ;uruchomienie Hoków cmsowych pry
wprowadzeniu cyfry mov time_off2,#0 mov time_off5,#0 pop psw
ret
. *********************************************************** 9
9 ;snnd_dtme - wyślij ton wybierania
9 9
send dtmf:
call wacchdog
clr ciπnhp’ut ^Μο^ ton dtmf
call write_io_mb
setb atmfout odWoku ton dtmf
call ret write_io_m_b
;clr_dtmf - wyślij ton wybierania .****************************************************:!:******
disabln dtmf:
clr damfhPzt ;pdblo;ujj ton dtmf
call ν,τΐίορίΟ-ΠηΗ
rnt
aelay_atmf ;opóńiienie tonu DTMF
clr tri ;zwłoka na sprawdzenie pracy
mov time_ofi2,#0
mov tim__0ff7,#O
setb tr1
wait_ until dtmf
mov ιΡίπηροΙΏ
call watchdog
cjne a,#4,wart until_dt.mf ;odczekaj 40 ms na zafrymanie dim!'
178 631 rst .*********************************************************** ;Generator tonu ROH .*********************************************************** ;40 s po podatssisaiu mtktoSelsfoas, bez wybrania żadnej cyfry, lub od wybrania ostatniej cyfry. Gsaerujsmz ton ROH (przerywany w odstępach 80 ms) w ciągu 1 minuty, lub do podniesienia mikrotelefonu - hangup, zależnie od tego, która sytuacja wystąpi wcześniej.
roifone:
clr ftime ika^cj flagę
clr fctonne k^issuj flagę tonu wyblerama aak, aby zmimy wskaźników nie powodowały zmiany tonu ROH
mov
mov hlghpolaS,dph ^ρ^ι^Ιη' fokację
mov lowpornt,dpl
ssSb tOhbooti ^tyksz poztom fonii
call wctSejrx2
mov ccapm 1 ,#0 00000 0 Ob ;wąącz ton
^zostań w pętli przez 1 minutę albo do hang_up (odwieszenia), phecPlhaaąsp:
call watchdog jnb Olaaą,pheck_tlmeout testlc-l:
call hop jmp start chsck_Stmeout:
jb frohtimeout,roh_timeout jb roh_on.n)htone_on mov pcapm1,#0 jmp phepk_hanąup toh_ttmsost:
mov ccapm1,#0 clr rohboost tsSb loopswitch_ call wnte.px2
SssS_1c5:
call hup jnb sw_gr_dstart,loopSesj jmp OoptS^sls^nd ;odśwież wacchdog oczekuj cc w tym mtajpcu ^Ι^οο,, jślit nadat zdjęcie suachawki w-pykoncj zwykle odwlezzenle, Seżeti shichawka na powrót odwieszona ;wprowadź nowy start ;skocz, jeśli upłynął czas roh (po 1 mmudci ;wyłącz ton fa pęfla nę mamę wiccza i wybccza roli ;wyłącz ton ;wyłącz zwiększenie poziomu fonii ;rozeiwij pętlę ;wyprowadź do portu podprogram odwieszenia ;wykoncj test pętli, jeśtt start pętii mis' wykonaj tesuu, jeżeli start od uziemlema, tylko pozostaw pętlę otwartą do uzismisnia dzwonka
178 631 ;Wejdź tu jesteśmy w trybie LoopttarS. looptζtt.·
mov b,#40 ;ustaw zwłokę 2 s (40 x 50 ms)
loopti:
mov a1iime_0Ir2 pobiera aktuanny czas odwieszema
add a,#5 ^odj; 50 ms do czasu obecnego
loosi2:
call waCchdog ;odśwież watehdog
cjne atiime ol22|toopr2 zwłoka wynos; 50 ms
deaz bjooptl ;czekjj ogółem 2 s
clr loopswiich ;zamy]aj pęUę co 2 s w celu sprawdzema
call wrritejaKd ;cy mikroteiefon odłożono na powrót; na wtdeiki
mov toopres__sticζer2,#215 ;ładuj zwłłokę 2,22 ms (8 x 2778 lis)
loosi3:
mov toopres__timer,#3fhf w celu zapewnienia dostatecznej ϋοέοΐ czasu alb układu sLiC
deaz ioopres_ dmer^ ;w celu wskazania stanu odwieszema
call watehdog ;odśwież watehdog
deaz ioopres__tmrrr2lioopt3
jb ^όοορΖειΙε^ skocz; ześi; brak prądu pęliż (ponowne odwieszenie)
setb ioopswiich_ pozewry; ponownie wyłącznik pętli
clr ioopsw1icll_ jzmiyką; pędę co 2 s w celu sprawaZzenla
call widic.__px2
jmp kopies; ;czeka; do odwieszenia
loopSsrt end:
clr frohtimeouf ;0 = wystąpito odwieszenie lub praca w ty bie GS
mov time_oal,#0 ;reset bloków czasowych odwieszema
mov ύίηί._οη2,[0)
jmp start ;start na now;o
;Podsrogram dla odwieszenia
hup:
call watehdog
clr ex0 ;rabIokąj extint0 (zdjęcie,LC__)
clr .digi; ;w jarzypadkt; podniesienia podczas wybierana impulsowego
mov putse_digίź,#0 ;w przypadku taktu poaCczas impasowego wprowadzania cyfry
clr adg__ready ;w Jarr^^r^s^^dS^t; taktu podczas wprowadzana impultowego/dtm3
clr adtmfin ;w przypadiu; taktu podczas wprowadzana; alimf
clr flockdmer ;w przypadku taktu podczas blokowama
clr fiinlockdmef ;w pz^zypadkt; taktu podczas odMokowy wania
jnb sw_gndstart,hup 1 skocZ; reśh start pęlii
seto loopsw1ich ;przy starcie od uziemiema otwarcie loopsw na 750 ms
call write_px2 ;dla symulacji; taktu
mov asdme_on2 ;ζ\ν^χζηην co 10 ms
178 631
add a,#75
push acc
jmp hup2
hupl: jb frohtimeout,hup2
clr loopswitch_
call write_px2
hup2:
cb ftime
clr fsendtimer
mov ccapml,#0
clr fdtone
clr roh_boost
call write_px2
jb fremote_hup,no_end_sent
mov a,#endcall
call wrbus
no end sent:
clr fsend
setb hookswout
clr hookswout_
jnb sw_gndstart,hook4
POP acc
clr c
hup3:
call watchdog
cjne a,timeon2,$+3
;zwłoka 750 ms (zachowaj na później (jeżeli start pętli (kasuj flagę bloku czasowego (kasuj flagę nadawania bloku czasowego (upewnij się że dtone jest wyłączony (kasuj flagę tonu wybierania (fonia normalna
jnc hup3
hup4: setb clr clr fonhook fhang f_one_sec
clr f_inuseofftiming setb ex0
;nie wysyłaj końcowego jeżeli takt zdalny, ponieważ nie ma takiej potrzeby i nie są niezbędne kasowania bufora Motoroli (wprowadź kod końca (najpierw wyślij do TRU, następnie kasuj flagę (w przypadku wysłania cyfr lub odpowiedzi na alarm ;pokaż do TRU odwieszenie (jak wyżej ;nie taktuj przy starcie pętli (pobierz na powrót opóźniony czas (kasuj flagę przeniesienia przed następną instrukcją (Odczekaj 750 ms dla umożliwienia otwarcia pętli i pbx w celu sprawdzenia, żejest wyłączony. Skocz do następnej instrukcji bezwarunkowo ;nie przenoś, dopóki time_on2 jest większe od akumulatora (w przypadku jeżeli zapis na magistralę zajął więcej niż 750 ms) (ustaw flagę odwieszenia (kasuj flagę podniesienia (czyli blok czasowy powinien wystartować ponownie po zdjęciu słuchawki (kasuj flagę (odblokuj extint0 (zdjęcie słuchawki) (Aktualizacja stanu TRU .*********************************************************** (Podprogram uaktualnia stan TRU co 71,4 ms oraz włącza i wyłącza dzwonek. Sprawdza również występowanie przerwy 3,9 s po dzwonieniu update_displays:
178 631 push acc push psw uptpec/:
jnb f specd .contmueuipdate call spse1 continue_update:
jb Sest_enabSe,go_to_self mov aJamJtstemp mov CriOam cpl c mov roamfmΊp.c mov c,noserv cpl c mov noservtamp,c mov Cl-ock cpl c mov (ocktamp,c mov Ctinuse cpl c mov rnusetamp,c call write_io_c jb swdiaj-o;ten^or_maini tese_puth:
call rsαd_rk_m_J anl a,#00010000b cjne a,(#Oh.,r(or_ptttsl·ι setb eete_snαbls setb fremote_hup sstb loopswjt.ch call writej>x2 not_push:
jnb Sest_enabte,nor_mam1 go_eo_sel0:
jnb tesrendn-o_crrogye1 jnb error_flag,pass_ok eest_lsd:
mov rO,#error_code mov a,@cO rl a rl a rl a rl a mov iamps_temp.a call wnte_lo__c sstb exr_ted jmp wrtSe_to_c clr οχ_)οι1 ;sprawdź flagę specjaHią podprogram specjalny w sekcj 1 TRU ;sprawdx.1 czy tes1 sm rozpoczął ;zatrzymaj wartości do późniejszej komparacji ;w rzeczy wts-ośc1 no ma lampek dla Maxjacka!
zwskaźnik roam (tylko do zapamiętania) ;wskaźnik braku (bmsUeii (tylko do zapamiętania) ;wskaźnik zablokowama (tylko do zapamiętania) ;wskaź.nik pracy (tylko do zapamiętania) aktualizacja LliDów jjeżei1 opcja sw wyłączona (=1) bsz modułu obsługowego ;sczyta1 przyctsk μη^ΐ^ test obsługi ;ustaw takt zdalny na 000 ms ;odłączono drugą stronę sprawdź rozpoczęcie StsUu nie stwierdzono błędu ;aktuaizzacja LEDów ;włącz ted zewnęrr;my na 1 nimitk:
;włącz ied ζεΛνηρΕζην na 1 mmudę
178 631 jm! wrąC-loc nol_effofsyet:
jb ex__ted,ctr_led οχ_1οι1 wrbe h_ c ;wlącz led zewnętrzny pidiczas tesłowama
zelb
clr led:
clr ext_eed ;wyłącz icdi zewnętrzny podczas tesnw^mai
wrile lo c:
call wτitc_o)_c zwlitcz/wy-ąicz. UD) zewnętrzny'
noł mail:
mov a.iaηepstemp ;lt^^^i^tloyηjje wartości do pózmtejszej k;)ηlparaei
jb frohtimeout,compate
mov c,ap2 Sprawdź. c^zy j^seeśmy w stanśe ALERT
anl c,/ap1 ;(tzni: a oczekiwame na połączeme wchod^ce)
jnc compaee skocz. jeśii nie ALERT (me polączenże wchodzące)
ΪιΙ Γοι-τοοΙ,,compare Skocz. jeśii SłłLh^law^tra zdjęta . nie łIruchaηliej dzwonka!
clr loopswhch . zzamknjj wyłącznik pętU. jeśii stan ALEART,
call writeJpx2 (oczckiwanże połączenia wchodzącego)
jb kalltIrescSrieet_tmtca tskocz. jeśii rwa już dzwomeme
zelb ball 1 1l (i początek dzwonienia (wykyło ALERT)
mov 1ι6ΙΗ:ϊπι6,,#0 skasz. klOki i czasowe
mov bcb ύΓηε22,#0
selb fbellzound jflaga działarna dZzwornka
mnv dpta,#rabte_20 ;pry d^zw^r^nż^nbi wskaż na υιΒΖίοο 20 Hz
mnv lowpombdpi początek dzwomema
mnv highpombdph
selb lweelSsCZsPwm ;tak więc pm może być pwm
mov ccapm2.,#0100010 Ob ;odbloką1 pwm
testl:
0 clr fines ;włącz ps dzwonienia
zelb noring
call writeJpx2 ;wyprowadź do portu
rcscg ring iimer: kraski mń^cZy dzwonkami blok czasowa. dopólk
mov ring-tirne,,; jj ^st^^ηny w χύιηίο ALERT
compare:
xrl akampSotemp ;bby różniące sęę powiresy być = 1
jb __(^ne_^^^dOrbitr ;odczekiwanże 1 s po zjj ędu sSuchawki pozed sprawdzeniem lampki pracy zapobiega rozłączeniu, jeżeli zdjęcie słuchawki nastąpiło już po sygnale taktu
mov aihcc.0 ;pobżerz saoUtr NUJSE
anl ;1=nie N1USE
jnc ύηιϊ^ΐη^εοΟΟ tumchom blok czasowy . żżźei i tampka muse już wyłączona
mov n_ ue_ οΓ__ΐίηκ“,'.#20 justow ponowne blok cza/owy na 1,99 s (28 x 71,1 ms)
zetb _ ΐη^οο©™^ ;wskaż że blok cza/owy yvył;hcxeital z pracy
działa timing_in_uze_ohO:
jnb inzseiηmp,con_in_ιιs_if ubieg ;czy lampka pracy nadal wyłączona
178 631
clr __ΐηη8ΰ00ϋΪΓη^ ;jeżeii nie i kasui flagę i ζηΟ/λππΙ odmierzanie czasu
conr_in_hse_ timing:
jnb fhinzsnofeiiming,dtbtas jeżeli flaga jest ustawiona kontynuuj odmierzanie czasu
djnz in_useοΙϊiimer,abbits rozłącz, kiedy Mok czasowy dojdzie do 1,99 s
clr f muse(f0ftimmg kasej flagę
jb porlłook,dibtts ;jeżeii odwieszenie lokake i nie dokonuj
synchronizacji z zewnętrznym taktem ;Wchodzimy tu, jeżeli druga strona dokonuje odłożenia słuchawki i nin odkładamy słuchawki z powrotem na widełki w ciągu 2 s.
dtskonnekt: setb rremote_hup ;ustaw takt zdatoy na 700 ms
setb loopswtSch_ ;dmga strona odłączona
call wriic_px2
dtbits:
anl a,#01110000b ;sprawdź tylko btty dotyczące tonu wybierania
jz ringiinteoui nie ma mian
jb adłonetring_timeout ;lubjeżeirDT niejest włączony
mov ccapm1 ,#0 ;wyłącz bieżący DT
call dtone ;rnień na nowy ton wybierania
rmo_timeout:
jnb kcall,update_done ;nie odmierząi czasu dzwonienia jeśii nie ma połączenia wchodzącego
inc ring timer ;co 71J ms
mov 17,^^3 ;54 x 71,1 ms = 3,h4 s
clr c ;kasuj przeniesienie odejmowaniem
subb arringtimer
jnc ηρΟοΙορΙοηο ijnżeli przynajmniej 3,84 s bez dzwonienia
jb flteltsoirnd,update_dorIe ;czekaj również aio zamknięcia dzwonienia
chnkk_stop_ring__s:
mov L7#^3 ;4 x 25 rns - 100 ms
clr c gotów do odejmowania
subb a,bel_ iimei'2
jnc upOat done jeśli przeniesienicy 100 ms
jb rmg_,check_stop_nul i ;skocZi jeśii dzwonek ps już wyłączony
setb ring_ ;w przeciwnym przypadku wyłącz teraz dzwonek ps
call wrttejtó wyprowadź do portu
clr noring call wrtte__x2 ;wyprowadź do portu sheckhSaoPhnull:
mov a,#77 h x 25 ms = 200 ms
clr c gotowe do wykonania odejmowani i a
subb a.bell iimead
jnc upłatetknie jeżeli przemiesieniei 200 ms
mov ccapn22,#0 zatrzymaj pani
clr twentyhhZh_wm gozostaw wyjściowy pin w stanin niskim, pwm działało 10 ms dłużej od ps dzwonka, dla wygładzenia przebiegu
clr fcali ;0 = nie ALERTi zapewnia niedzwonienie
jnb sw_gndstart,updaIe_done sskocZi teli i sitatt pęlii
setb łoopswtSch_ ;GS nie odpowiada na dzwonek
178 631
call wnee-PYZ
gpdare done:
jb kcall,no_jeset_io
jnb tc_,no_ąeset_io
jb ftohlimeouLno__'eąet jo
no_reset_io:
pww
acc
ret
.4:*****43****3*******:*:*:*3!3*****3*3*3*******’**43***434343*343******43 ^-^Ιζ^μ słowo porównawcze kontroli watchdog ?4:4:4c4:4:4:4:4c4:4:4:4:4:4:4:4:4:4:4:4(4:4(4:4(4:4:4:4:4:4:4:4:4(4:4(4:4(4:4:4:4:4c4:4:4:4:$4:4c4:4:4:4:4:
watehdog:
push clr mov mov pop ret te ea ccαd41#0 kcap4h,c7 te ;zzblokuę przerwania ;wskaż nz początek strony bieżąca strona
4(4:4:4:4:4:4:4:4:4:4(4:4:4:4(4:4:4:4:4:4:4(4:4(4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4:4(4:4:4:4:4:4(4:
;Podprogram obsługi przerwania odłożenia słuchawki Timer0(TI,O)
?4:4(4:4:4:4:4:4:4:4:4:4:4:4:4:4c4c4:4:4:4:4:4:4:4:4:4:4:4:4:4e4e4:4:4:4e4c4:4:4c4c4:4:4e4e4:4:4e4c4(4(4c4:4c 9
on7ook_rlmąr
push psw
push acc
clr tri ;zatrzymaj blok czasowy zdjc'aia słuchawki
clr fl ;skasuj związane przerwainia bloku czasowego zdeckia słuchawki
mure_c7eck:jb mure,on_bdec2 jjeżeli już wyciszony, zrzuć
setb mute ;w_vaiszanίe fonii rx w celu zapobieżenia fałszywemu dekodowaniu dzwonienia yonicdnągo jako dtmf, zapobiega również yonlcznąmu sprzężeniu zwrotnemu
call wdtjeJpx2 ;w_prowadź do portu
on_sdąc2:
jnb bd;je^^ ,on_dpec2__done ;sprawdź flagę
call dpcc2 ; wy wolej podprogram specjalny w sekcji TRU
on_spec2_done:
Hucz didpaay_deaay,gt_;ntj ;w ciągu 711 ms
call updaje_didparys ; co 71,1 ms
gsimt: jb kcalllCont_ąrrdko ;prz_ nadejściu połączenia zrzute wychodzącą
jnb w_ gndrjrrt,tont_ąrrvteo inlcjatldaaUc GS ^^zz j eel^l i nte tryb GS
j'nb Oonhookltcnt_ąrrvteo ;nie czekaj na uziemienie dzwonka dla
uruchomienia GS do rzączywittągo odłożenia słuchawki
178 631 jb sing etonuąi ,οοηί Łtonuą;srtet clr ioopewiech_ (zadlnniz obsługi startu przy uzizmizniu
call wniejx\2 mov gndstart_timer1,#0 mov gndsearehtimze2,#0 aont_groundeeart: inc gndsta]r:_ti^ei'1 mov rigndstart_timer1 cjne r,#90,cone_serviae inc gndserrt_tlmzr;2co 25 ms mov gnąstrrt_timzr1i#0 mov rigndstrethtimer2 cjne r,#40,cone szeviae sztb ioopewiiah_ ;;ηιϊ(8ΐΐ;η( blok czasowy (abonent zwolnił zizmię dzwonka ;25 ms (90 x 277,8 μs) (reszt dla następnego odliczania 90 ;1 s (40 x 25 ms) (otwórz pętlę po sekundzie, jeżeli abonent niz zamknął pętli
call wriee_px2 aon(_szevlcz:: jb faaiiiring_aonteol (skocz, jeżeli stan ALERT dla generacji dzwonienia
jmp onhookhtimers (w przeciwnym przypadku tylko πι1<Π.ηϊη^^ΐ(| bloki czasowe
(Uruchamiamy dzwonek, jeżzli TRU jest w sianiz ALERT (połączenie wchodzące asekr na
odebranie). ringcontrol: jb fbzlieound]timing_rine (kiedy dzwonek nie dzwoni w cyklu dzwonienir] sprawdź zizmię dzwonienia, w czlu sygnalizacji odpowlzdzi na impulsy dzwonienia
jb ring_ground_,timinghring ((zżeli nie ma ziemi dzwonka, odmierz czas dzwonienia, następnie ignoruj impuls na ziemi dzwonienia, po ustaniu dzwonienia
mov r,beii_iimze2 cjne a]#0,seaei_beilsound mov a,#28 clr c subb r,bellhiimze jnc timing_ring (impulsy co 25 ms (skontroluj ziemię jisovonna po 25 ms (29 x 277,8 ps = 8,1 ms gotowość do odejmowania (brak przeniesienia do 8,1 mis po ustaniu dzwonienia zignoruj jedyniz zizmię dzwonienia po 8,1 ms
jmp seari_bellsoπnd (jeżeli ziemia dzwonienia wskazuje zdjęcie słuchawki w czasie ciszy, uruchom 20 Hz ponowniz w czlu wymuszenia ciągu dzwonienia
timing ring: inc ΙζΗ^^^ mov a,bzll_timzr cjnz a,#90,ringzr_on mov (ζΙΠ^^^ inc bzll_timzr2 ringer-On: jnb lbzllsoπnd,einger_of? (co 277,8 ps ;25 ms (90 x 277,8 pis) ^ε8€Π(ϊ na następne 90 ;co 25 ms ;skocZi jeżeli w tej chwili dzwonek nie dzwoni
178 631 ;Czas włączenia dzwonka zmodyfikowany z 1,95 s na 1,975 s, ponieważ dzwonek zatrzymuje się przy impulsie dodatnim, który powoduje dzwonienie ciągłe. Ten problem wyniknął przy skrzynce z pięcioma dzwonkami, stosowanej z Mariack. (ssh) chspk_stop_bslltouad:
mov αibele_Simst2 cjne a,#5d,onho_k_timets mov a,bell_Simżf #0^^ upfyw czasu wlączenia dzwonka ;skoczj iżż(^li mniej, niz 79 x 25 mit := 19775 s ;45 x 277,8 μa = 12,5 ms Οροζηϊο 1,987 s) cCns a,#45,oahook_timsts stop_bslltound:
mov cpapm2i#0 clt Obellsound mov dptr,#Sablż_nule mov lowpointedpl mov highpoiat,dph mov ccapm2,#01000010b clr sa clt no_rmg call wtitżePx2 tżSb sa call watchdog Cmp fżtżt_bsll_Stmżft tingesifO':
mov ajbsle_Simżr ;d:wonek ΟζάΤιό po 1,987 pmy impulsie ujemnym, wycina ostatnią ćwiartkę cyklu w celu skorygowania ciągu dzwonienia
O_<rle0^iS^t pwm ;0 = dwonek nie dzwoni ;wskaż iabttęę tonu zerowego Stoli zerowy powoduje, że dzwonek ma zerową wyjściową składową zmienną, wyłącznie napięcie baterii ;zapnrmaicj początek ΙηΟΠρυ zero\żej lodblokuj pwm btok i czas o we pjaż a,# 120,onho_k_Simers ttart_bellsouad:
call teset_io call wtite_px1 call wtiSż_px2 clr sa setb no_ring call wfltż_pxf setb ea mov cpapm2,#0 mov dptf,#Sαblż_f0 mov lowpotnt,dpl mov highpoinS,dph mov cpapm2,#01000010b testtelaγ1:
setb Obellsound tiset bell_timers:
mov bell timet,#0 mov bell_Stmżr2,#0 oahookettmers:
inc Stmż_on1 ;4 s bzz dwomema 1160 x 2)) odblokuj pwm ;wska£ tablicę dla 270 Hz ^parniiętej początek tablccy odMoko, pwm ; 1 = dzwonek właśnie dzwoni ;co 27778, Ps , kiedy odwieszenie
178 631 mov a,tlme_on1 cins a,#36,—nho—k_done inc tims_on2 mov ttms_on1,#0 mov f,tlme_on2 cenea,#0,not_lnc255 inc test min not_inc255:
jp frohtlmsout,—nhook_dons ;36 x 22^^81 ps = 10 ms ;co 10 ms 1 kiedy odwieszenie pesej na rf_sd^f^;yje!l 36 ;10 ms x 255 = 255 s eest_fhfng1:
jb fonhook,onhook_done eeseJfhfng2:
mov flelme_kn2 ; ;STATUS ON-HOOK ; cjnea,#r0lOnhook_eone cjnea,#3rlOnhook_done eestJfhang3:
setb fhang clr f_inuseo0f^tmtng ;zrzuć informacje dotyczące odwieszenia aż do pozytywnego wyniku testu ;rtie ι^<^1<ο;^ιι1 nowego odwieszenia1teżeli jedno zostało dokonane ;700 mt wskazuje na odwieszenie ;700 ms wskazuje na odwieszenie ;ustaw flagę -.uW,κ_^z^^^^na^ ;zatrrymą1 blok czasowy w ceUu zapobieżenia ewentualnemu taktowaniu zdalnemu onhook_done: po acc pop psw reti ? .
;Podptkgtfm obsługi przerwania - zdjęcia słuchawki z widełek Tlmer1 (TH0) ?
offhork_tlmer:
puth ptw sam wyjściowy push acc jn; ftpec2,checkJSttobe .kocą Seżei 1 spec 2 nie odblokowany call tpec2 w Jtz'zeciwnym przypadku wykonuj specjalne zadanie TRU
Sprawdzenie obecności cyfry DTMF, i odczytanie jej z MT8870, jeżeli jest tam dostępna.
ζΗοζ1_ strobe:
call tead_px/_tetobe jb sttobe,decode_dtm0 clr fdecoder_busy jmp ttime decodeJdtm0:
jb fdecodet_buty,ttime ;skocz, jrzel i ocznkujs tyesa DTMF ;resetuj, jeżelr naduzedł strob ;i po prostu wykonu- zudanik odmierzania czasu zdjęcia słuchawki ;skocz, jeżeli odczytano 1uż cyfrę DTMF
178 631
call rzadjpx1 (w przeciwnym przypacilni odczytaj ją teraz
sztb fdem0ln sztb Udzcoder_busy i 1 = odebrano cyfrę DTMF! i 1 = cyira DTMF w przetwarzaniu
(Sprawdzenie upływu czasu zdjęcia z wldełzk, uaktualnianie wyświetlaczy co 70 ms i rozpo częciz-zakończeniz w razie potrzeby ionn ROH
ttime: inc timz_oU01 (impuls młodszego bloku czasowego zdjęcia słuchawki (@277,8 μ s)
mov a,timz ofU1 (JMP TEST_HOOK cjne r,#0,t_onz_sea inc eimz_oUU2 (pobierz młodszy czas zdjęcia słuchawki (skocZj jeżeli < 256 x 277 μs = 711 ms (impuls młodszego bloku czasowego (co 71,1 ms)
caU update_dleplrys (ualeΠlalnlaj co 711 ms
mov a,tlme_off2 cjnz a,#0,t_onz_sea inc eime_ofl3 (pobierz główmy czas odwieszenia (skocZj jjeżeli < 256x 711 ms = 18,2 s (impuls łączny bloku czasowego podniesienia słuchawki (@18,2 s)
t_one_sea: mov a,ilme_off2 cjne a]#14,trohtimee (pobierz główny czas podniesienia (skocZj jeżeli minęło < 14 x 711 ms = 995 ms
setb U_one_sec ;tak że zmiana olampki INUSE nie może spowodować odwizszznia, jeżeli słuchawka zdjęta z widełek zbyt późno po odwieszeniu
irohtimzr: (b Usend,idone (skocZj jeżeli rozpoczynamy rozmowę (bzz ROH)
jnb Ιη^ζ^ηζ (skocz, jeżeli jesteśmy w stanie INUJSE (równlzŻ bez ROH)
inc r5 (impuls młodszego zegara ;^taI'Πl/l^0Irt^a ROH
cjuz e5,#36,eeohsiaei inc r7 (skocz, jeżeli minęło < 35 x s = 10 ms (impuls młodszego bloku czasowego włączznla/wyłąazenia ROH
mov r5,#0 cjne e7,#10.ieoheiaei cplroh_on ;reset do następnego przejśda (10 ms) (skocZj jeżeli minęło <10 x 10 ms=100ms (naprzemienne \vl gezami e/0vyhcczanie rOh co 100 ms
mov r7,#0 resct do ηίΚ8υ^{ηζ<^^ϊ iazy włączanlr/wyłączrnlr
trohstart: mov a,time_o0U3 ;podej ogólny upływ czasu zdjęcia z widełek
cjnz a,#2,erohquie mov ritime_off2 cjne a,#51 ieeohquie skocZj jeżeli minęto < 2 x 18,2 = 36,3 s (pobierz również c0ąain^ooey czas główny sskocZj jeżeli ąączniie < 40 ms zdjęda z wldełzk
sztb Uiime ieohquii: i 1 =] rozpoczął sęę o krre s ROH
178 631
Ι.ϋζ:
mov a,sime_off3 ;pobierz znowu ogólny upfyw czasu zdjęcia z widełzk
aeaz ,#5ltdoaz ;skocZ; jeżdż mmęto < 5 x 18,2 = 9; s
mov a,iime off2 ;pobierz również dodatkowy czas główny
cjne a,#127ltaoae lskocZireżei; < 91+1127 x 711 ms; = 10)0 s
setb frohtimeout ; 1 = upłynął okres ROH
jnb 3_siarS,tdoae0 ;skocZ; reżeb brak taktowania 500 ms po pierwszym
mov a,sime_o332 ;pobicrz upfyw czasu zdjęcia z wtdeżek
cjne ι^^^ζΙ ;skocZ; jeżeb ιφΙνηςΊο < 285 ms
ccne 8,#7,Μοηε1 ;skocZ; jeżeb uplynęio < 500 ms
clr ^starS ;odblokoaywaine po 500 ms ρΓζεΐϋηΰε odłożenia
;Wzjdź tu dopiero po upływie 500 ms przy pierwszym zdjęciu z widełek po każdym odwieszeniu. laonzC):
JiI lc_lSdone1 lesklO:
clr tri setb tr0 tdonzl:
pop acc pop psw reti ;skocZ; jeżeiź występuje obecnie stan zdjęcia z widzłek ;w przeciwnym prz-zypadkt; zaiz'zymei blok czasowy zdjęcia z widełek i; uruchom 14<] czasowy oaiw'ieszenla ;odiwvóz
Podprogram obsługi przerwania zewnętrznego Extemal Interrupt 0 offhookedge:
jb frohtimeout,offhookreturnl jnb fcall,not_inc_call jnb no_ring,ok_wait setb ring_ call write_px2 clr no_ring call write_px2 setb retum_ring clr ieO clr trO clr tfO ;wyłącz dzwonek ;zrzuć przerwanie związane EX0(LC ) ;wylącz onhook_timer i flagę ;w przypadku związanego przerwania bloku onhook_timer ok_wait: mov r7,#0ffh loop_ring:
mov r6,#0ffh
178 631
djnz r6,$
call watchdog
ι;ιζ r7.no eit
esla set:
jnl seSuηt_ring,do_not_seηtm
call ^^s^__1o
call write_p)x1
call wihe_px2
zelb norneg
clr ring_
call
clr nimm ηκτ
mov U^Offli
looprineł:
mov 66,#00Ώι
ι;;ζ r6,$
call waichdog
djnz Ukoop-ringl
crll ^^ϊ<ι__1ο
call wriSe_J)xl
crll wriSe_px2
zelb rrt)
mov t;o,#o
reli
οΟΟ-οοΕ felure1:
jmP oOd^<^<^l__^^^^ni
no_zel:
nof inc call:
clr roO
clr jor
push pww
push acc
clr ϊε0
zelb rrl
clr ibang
mov Λ0,#0
mov ύιηεοΓΠ #00
mov time_oU2,#0
mov time-OfOj/OO
clr ι-πιΑ
call wrEe-p^d
U1 Γonlon>taC^^eckofazsC
clr ιrorClook
ok_nffhook:
P1 fcansetjiookoflag
zelb fanswer
;wyłącz dzwonek ;wyłącz blok /^ι-^οοΙΊ^ϊπιζ^γ i ilagę wyłącz blok onbooktimer i flagę ;w przypadku. kiedy przerwanie onCookslimef jesl oawiszonns ;zrzuić zawieszone przerwanie EX0(LC_) turmchom blok czatsowy zdjęcia słuchawki ;kasuj flagę odwieszenia dla bezpieczeństwa blok czatsowy zdjęcia słuchawki ;bloki czasowe inkrementowane p^i^zrcz przerwania lh0 ;usuń śetszeme fonii x ;skocz. jeśii me na powrót było odwieszenia po zdjęciu kasni iLigę. byio odwieszenie Ιππο.
skocz. nee w stanśe ALERT ;1 (zdjęcie z widełek podczas połączenia
178 631 nadchodzącego
clr fcall ;kauuj flag) AIEdTI' todpow_cddi na
setb ring_ dołączenie) wyłącz dwoonek
czll write_p.x2
clr no_ring
czll W'τite_dx2
mov ccadm2,#0 ZdzzeiwYj; dzwΌnienie pwm
klear_twent__hz_pwm pozostaw pin wyjściowy w sranią niskim
.W off7ook_done
set_hooa_flzg
ϋΛ fhiook ;sygnalżguO z widejekj jepii me
W offliookdone stan ALERT
ΕκΑ flash:
mov a,# 19 ;20 x10 = 200 ms
clr c ;kauuj pdzen_ed_en_e do odejmowania
subb time_on2 ΙΟΟΥΟΟ ms Sianowi t^^hh
jnc checkdigit
jnb loaa,oyfhooa_done bez l^^ili . jząpi i TRU z^^tιka^iw^^ajc
setb ;usiaw liagę tZaih
t)tf7oc^a done
checa_diglt:
mov a,#1 ;2x 10 = 20ms
clr c ;kauuj pdzen_es_en_e do odeimowzniia
subb time_on2 ;20-200 ms Sianowi impuks
jnc offhook_done tyłko zJdóceme
inc pułsecligit zzaw_era numer
ϋΛ fdigit ;usiaw Hagę ewenUzannej ieyfiyΛ
off7ook_doną:
mov time_on1,#0 -reseO taoków czasowych odw_eszenZa,
mov time on2,#0 tak aby mogły one być uruchomione przy odwieszeniu
mov t10,#0
p^ acc
p^ psw
oyfhook_retgrn:
reti ^Podprogram przerwań PCA ’444444444444444444444444444444444444444444444444444444 ;Przerwania PCA generowane są z wykorzystaniem opcji komparakyjnyk7/dodasowująkyk7 modułu zerowego (programowego bloku czasowego) przy każdej zgodności dolnej części liczby z FF. W ten sposób możemy generować przerwanie na końcu każdej strony, 00Γ-0100,01-0200 itp., co daje nam przerwanie co (256*1,085 ps) 278 μ s.
;Niniejsza imdlemąntakja Masjac-k do wytworzenia zmodyfikowanego programu obsługowego PCA dla bloków TRU o bardzo dużych prędkościach przekazywania danych wykorzystuje ζ^^^ζ. warunkową (Audiovox wymaga zmienionego podprogramu PCA).
$ge dca_sątvlce:
178 631 %i0%intmask ne 0) thnn ( push in ;pznejście do 5γπιιύΗΐϊ i poziomu _rtptyantów przerwań
mov in,#%intmask ;oitreślony w sekeji TRU
call masklabel w t^eht wykonania neii
push acc
push psw
mov a,csa_π1 sszukaj pwn tonowego
orl sszukaj pwnn d^oniema
anl a,#00000010b ;vyyrzukeJ tylko Μι pm
jz pca donn izzzlć nasjępnączęśe, jeżei i na wyjścm nin ma tonu ani dzwoninnia
dOh_ca:
nov a,#0 ;rmetatiuuj waka:źiik
readtaWe:
movn a.@a+dptr gobiera daną z ^^licy
cjni a,#255 ,wri teptone
nov dphdiighpoint Τΐε^ο wkkaźrnk, ojteti koniec tabUcc
nov dpljowpoint
mov a,#0 jak więc wakaźnik będzie pra\vidło\cy
jmp reaal (abln ;odczytaJ pierwsza, poyeję
wrianhapne:
nov nap H^a ;wstaw daną w tonowi' pwnn
mov cca_2h,,a ;wstaw daną w pwrn dzwonienia - tylko pwm tonowe lub pwm dzwoninnia działają w każdym zadanym czasie
inc alpt^r ;wskaż następną pozycję' tablicy z następnym czasim
pca donn:
clr cd ^ηβΐ) flogę moduto 0
clr ea ibobloUuj przrπbźnia
mov ccapp0I,#0fhi zładuj ponownie dolną część porównywaną i zawieś komparator
nov a,ccap0h ;przejdź na ostatnią stronę'
inc a ;wakżę neajępną tt^^nę
mov ccap0h,a iautaUuj górną ηγηΐ dniea oip porównama i ponownin uruchom komparator
sntb ea ;c^albll o^tli na now-Ό przerwania
pop psw
acc
pop ni lodtwórz rrnrr\aźnia
ret
maskla0nl:
reti
)nlse(
push acc
push psw ;rzkbaj ρνπη topowooo
mov accapmi
orl alCc_pm2 trzkbaj [wim dρwźmźnta
anl a,#0000001 Ob ;werukbaj Λνϋο bit wnn
jz pca_done irzzuć besj_źnąrneśćjtżnei n aa wejścm
nie ma tonu ani dzwonienia
178 631 ;Jeżżlt w danym momencie generujemy ton wybierania - Dtal Tone, to należy pobrać wartość bieżącą z tablicy wybranego tonu i przesłać ją do PCA1, tak aby w CEX1 (p1.4) była generowana właściwa częstotliwość DTMF.
do_pca:
mov a,#0 ;inicCatr;sjj wskaźnik
readtabls:
movs a,@a+dptr ipobisrz, daną z tablicy
cjne a,#255,wriie_tone
mov dph5icighpoint ;rsseUcj wskaźnik, to jest koniec tablicy
mov dpńo-wpomt
mov a,#0 ;tak więc wskaźnik będzie prawidłowy
jmp πί__ table ;_dprytaj pierwszą pozycję
write_tons:
mov ccapih,a ;wstaw daną w tonowe pwm
mov ccap2h,a ;wstaw daną w pwm dzwonienia - tylko pwm Sonowi lub pwm dzwonienia działają w każdym zadanym czasie
inc dptr ;wskaż następną pozycję tabUcy z następnym czasem
pca Dons:
clr ccfij rsseijj flagę, modułu 0
clt ea zablokuj przerwania
mov ccappOl,#OOfli ;załaduj ponownie dolną część porównywaną i zawieś komparator
mov a,ccapOh ;przejdź na ostatnią stronę
inc a ;wskaż następną stronę
mov ccnpOhat zładuj górną część d^ntej do porównania i ponownie uruchom komparator
setb ea ;odbloku' na nowo przerwania
pop psw
pop acc
teti
)Oi
$nogż
.***********************************************************
;Podproątamz pomocnicze I/O
3 3
wriSżepx1: ;Dana z px1_temp do pxl
push te ;zt^paniętaj stan przerwań
clt ea ;brak przerwań
clr ÓG-Sclect
push acc
push 0 jpush r0
setb aO B
clt a1
mov a,px1 temp
anl a,#11110000b
mov b,n
178 631
mrv temp
anl a,#00001111b ;Zat.rzymaj wyższe bity wejściowe
orl a,b
mov r0,#00h ^ο^γ adrses do zatrzasku px1
mrvx @rO,a układu IiO
setb aO
setł a1
p—p (1 ;odtwórz r0
pop ^cc
pop ie ;odtwórz stan przerwań
rst
;όκ1_ρχ1:
puth te ;zapamidtaj stan przerwań
clr ea lb;rik przerwań
clr (osetect
puth ^cc
puth (1 push r0
clr aO ;A
clr al
mov r0,#0h ;dolny ndras do zatrzasku px1 scalonego
movx a,@rO układu IiO
anl a,#00001111b ;mfskuj bity wyjściowe
anl px/_Senpr,# 11 HOOOOb ;mnskuj bity wejściowa w px1 temp
orl pxl_Semp,a połącz funkżeą anl dane watśeiżwa
tetb aO i wyjściowe w jeden bajt
setb al
non 0 pop r0
pop acc
pop 11 ;odtwórz stan przerwań
rst tdadJnxl strobd:
puth t1 ;zanamidtaj stan przerwań
clr ta ;brak przerwań
żlr (o_sśtcet
push ccc
push 0 mush r0
clr a0 ;A
clr al
mov (0,#0h ;dolny adres do zatrzasku px 1 scalonego układu IiO
movx
mov (o_etet_s,a
setb (0
tetb al
pop 0 pop r0
pop ccc
non ie odtwórz stan przerwań
178 631
ret
wrire_dx2: ;Dana z dx2_temp do px2
push ie ^pamięiej stan przerwań
clr ea brak przerwań
clr żo
push acc
push 0 ;push -0)
setb aO ;B
clr a1
mov a,px1 temp
ant a,#11110000b
mov b,a
mov a,px2 eemp
ant a,#0000111 lb Zatrzymaj wyższe bity wejściowe
orl ab
mov rO,#OOh ;dolny ικήο s do zzUt/zasku pxl scalonego układu I/O
movx @rO,a
setb aO
setb a1
pop 0 ;odtwórz -0)
pop acc
pop te odtwórz stan przerwań
ret
wtltą_lo_k: ;Dzniz z px2_temp do px2
push te ;zzpamiętuj sinn r^ret^w^zziń
clr ea ; brak przerwań
clr te-Setect
push acc
push 0 ;push r0
clr aO ;B
«tb a1
mov apiamps eemp
ant a#11 11 lOOOOb
rl a
rt a
rl a
tl a
mov rO,#OOh dolny adres do zatrzasku px 1 scalonego układu I/O
movx @00,a
setb aO
setb a1
pop 0 odtwórz r0
pop acc
pop te odtwórz stan przeiwzzί
ret
-0711^2:
push _z zapamiętaj stan przerzzziri
178 631
clr clr ea io_seiect broi pz'zira\var]
push acc
push 0 ;push rO
clr a0 C
setb al
mov r0,#0h ;dolny adres do zatrzasku ρχΐ scatonego
movx a,@r0 układu I/O
anl a,#11110000b ;maskąf bity wyjcdowie
anl px2_temp,#0000111 lb ;maskąf bily w^^^^cK^w^e w px 1 żemp
orl px2_temp,a ;ροΕρζ funkcja an ; ;Ηζζ wcjjśaowc
seib aO i wzjeaiowz w jedza baji
szib al
pop 0 ;pop rO
pop acc
pop ie ^ίχνό^ ϊΙοι; pzzenvań
rzi read_io_m_a: ;dana z px2_żemp do px2
push ie ;zr.lpamięta; ρ^οΐΆ-νοτι
clr ea ;brak przea\vań
szib toseiect
; push acc
push 0 ;push rO
clr aO ;b.
clr al
mov rO,#Oh ;doiny adres .o; zafrzasku p.x 1 χο^οηορο
movx a, @ΐ'Ο układu I/O
szib aO
szib al
clr ίο seiect
0 oaSwórz '0
; pop acc
PoP to ;odwóz; saan pzzerwaii
rzi writz_io_m_b ;Dana z pxl_żemp do px1
push to zrapamiętąf san pzzeiwaii
szib
clr ea ;brak pzziri-wati
push acc
push 0 ;push '0
seib aO 3
clr al
mov ago c_ b
mov r0,#00h d^ol^y adrdf do zsfrzasku px1 scalonego
movx @'0,a układu I/O
szII aO
szII al
clr to nicst
178 631
POP POP pop ret 0 cccc to Odtwórz rO Odlwóz skin przerwań
wrile _iOsm_h: ;Dana z px2temp do [x;^2
push ie ;zapamięrej stan ;x^z^t^^w^rπί
selb K__s^^^ct
clr ea brak przerwań
push acc
push 0 ;push i'O
clr aO B
zelb a1
mov a,lo m c
mov rO#^(^0^h ; dOJny adses dhi zatrzasku px1 scalonego układu I/O
movx @O0,a
zelb aO
zelb a1
clr lo sieS^ict
POP oa odtwórz rO
Pop acc
pop to ;odtwórz stan przerwań
rei
resela io_m:
push to ;zapamiętąt stnn przewwań
clr ea ; brak przerwań
zelb lo Si^t^iCt
push acc
puzh 0 ;push rO
zelb aO Sterowanie
selb al
mov rOhOh ;dolny adres dhi zatrzasku px2 scalonego układu I/O
mov aklOOlOOOOb
movx @oO,a
zelb aO
zelb a1
clr lo seiect
POP 0 ;pop rO
Pop acc
POP to Odtwórz sani pazerwan
ret
rezel_ io:
puzh ie ;zapami<lrea stan przerwań
clr ea ;brak przewvań
zelb lo_suitot
puzh tcc
push 0 ;push rO
178 631
szib seib aO a1 ^Ιεκ^ίηπε
mov r0,#0h (doby adres do zarrzasku px2 scaontego układu I/O
mov ay# 100 llOOOb
movx @Γθ!
seib a0
setb a1
clr io select
pop 0 ;pop r0
pop acc
pop ie (odtwórz stan przerwań
rzt
(Podprogramy pomocnicze (Dla pomocy przy uruchamianiu programu można zapisać ogólne komunikaty wymieniane między TRU i CzUicS. Bufor tych komunikatów zajmuje lokacje od 90h do FFh.
alr_mee:
pnsh 1 mov r1i#msbuf_seaei mov mseJptr]t1 dlmsg1 mov @r1,#55h luc r1 cjne e1,#msgbu0_end,de_meg3 pop 1 rei savzmg:
push 1 mov r1 imseJptr cjne e1i#megbuf_end.(savem3 mov r1i#meebu0_seart savem1: mov @γ1,ι inc r1 mov msgptr.r1 pop 1 exii: rzi ;ζηρίΐπιίςΡ(ί Rl (wskaźnik na początek buftraa komunikatów ;zrIpanlielaj początleS] bobra (wypelny ulleskąo wart ości ach 55h W^^lc^ż nastypną ookaeję ;do końca buoora ;οόΐ\νόΐ'ζ R1 (ζηραιηίςηιί R1 (pobiera bieżący v^a^l^aź^^nk<
sskoczj, jeśii bufor komunikatów rUi j ess jeszcze zapełniony pr^^^sk^w począęiekj jżżel i zapermony ;zapamięlaj komunika] w t^ufir^^e (pzzesuń wskaźnik do praodu ;zapami^lai pszesunięty do naeiępnego wykorzystania ;odWvóra R1 (Kasuj kopię wskaźnika LCD mikrotelefonu w buforze RAM wyświetlacza.
de_dep:
push 1
Izapamierej Rl
178 631 mov r1 ,#dspbuf_ttαrt mov dsp_ptr,r1 clefmsg1:
mov @r1,#0Ofh inc t1 cjni r1j#dspbuf_ead,clredsp1 pop 1 tst ;Ntektóre bloki TRU muszą przechowywać w lokalnym buforze wyświs+lacza.
savs_dtp:
push 1 mov fl.dspptf cjni r1,#dspbuf_żnd,save_dsp1 mov t1,#dspbuf_start savsdsp1:
mov @f1,a iap f1 mov dsp_ptr,r1 pop 1 savs_dsp2:
;tncluds(SPAIN.atmS ret $nolltt $includż(SPAIN4.asm) $lisS nop nop end;
wskaźnik na początek bufora komunikatów zupami ρΙο, początek bufora ;wyφernjj maską o wartościach FFh ;wsiaż następną tokaję ;do końca bufora odtwórz R1 informacji wyświetlacza LCD mikrotelefonu :zapamiętcj R1 ;r^otiisr^z. bieżący wskaźnik ;skocz, jeśti bufor komunikatów nie jest jeszcze zapełniony przestaw początek , j eżeli zapełmony ;rztl·p^amł^aij komunikat w ;przs'suń wskaźnik do przodu ;ζι1:Ιιιι1ιρ wskaźnik do łα.fsłgr^ne^o wykorzystania ;odlwórz R1
ZDALNE MELDOWANIE TELEKONSERWACYJNE m_make_pall: zestaw połączenie do meldowania m make call:
mov r0,#posatet1 mov @R0#03h mov @r0,#03h mov a,@R0 an1 a,#01111111b mov @R0,a incKjj^i^^^cja hczncika ;na 3 ;kasaj bctj nlezakończema poho pzenta mi who tavoke:
mov R0,#call_back2
a.RO mov ;sptawdzentż, kto wywołuje test sprawdzenie, czy iesj jest οήΜοkowany dla tej opcji
178 631 anl a,#01100000b mov r1),#pptions cjnn tlJK)000001)1)bnnr_test_marutal jmp mr_rnsnt_iźvokna mrhtesahmanub:
cjnn 110')0000,,n1 il t<^tίhbU.ito jmp mrauto-imoked mrhaesahauto:
cjne a,#01100000b.mrmtłnut^lynwOknai jmp mr_teleinvoked mr tesetrirrvoaed:
jmp mr_who_invoke_nnd mr manuał invoknd:
;reset X00X XXXX ;auto (blok czasowy) X01X XXXX ręczn^W XXXX Telekontrola - X11X XXXX
mov a,@rO
anl a,#0000001 Ob
jnz πrhWhOhiźvokeheźd
jmp m_call__test_end
jnp mr_who_mvoke_end
;ołdbakołρmy mr auto iźvpked:
jb error flagi mrautojnyokedcont jmp msbllltesterld mr auto invoked cont:
nov a,@r0
anl a,#000000lb
jnz mr_who_invoke_end ;oddiakowany
jnp nr_who_invoke_end ;odblokołwanY
jmp m_cal__test_end
jmp mov_who_envoke_end
mrhtelnhinvoked:
nov a,@rt)
anl a,#00000001b
jnz mr_who_rnvoke_inad ;odbiokowabry
jmp m-Caltylestyend
mrhWhOhinvoke_end: mhkhnsah_owet:
178 631
w powdrJmJżheck_serv'c m_call_test_end ltprfwesdnid sasilaczf części radiowej
m chsck servc:
jb noserv,m żalling Sprawdzenie obsługi
mov R0,#call_back2 Ożywany w opcji połączenia zwrotnego
mov a,@R0
orl a,# 10010 OOOb
mov @R01 a
jmP m_call_test_end
m żHine: Strawdzzmn, ccy test prneswany przez przesunięcie PCR
jb tdst_dnable, $+6
ljmP
call datos radio
mov a,#2
call delay2 Opóźnienie 1 t
get TMCphone_Numbdr: S_nrwduznre, czy test 1»ο_.1 przerwany przdz przdtuniężie PCR
jb test_dnable1 $+6
W m call test end
mov r2,#0
mov rl,#calirng_num
mov a,@rl
swap a
anl a, #0000111 lb
mov t1, a
żall żhsck_tel_number
cjne ιι.#00Ωο m_calling_com ;dodano dn. 94.10.12 w żelu sprawdzenia nfttdpnsgo dostępnego nmetu esldfoniżzndeo, po sewisrezdnlu nieważności numeru ośrodka telskontswacyj nago
call watżhdog
mov a,#1 —późnienie 2,5 s
call delay2
Liczniki ponfwlfnlf pierwszego rdsetu mov r0.żallback2 mov a@r0) anl ^,//11100(^(^(^,1 oczyść lienniilifall_bae22 mov r(),#attempt mov a,@rO swap a anl a,#00001111 b pobierz nowe wartośc1 liczników can badcZ mov rO,# caliingnum mov a.@i'O
178 631
zwap a
inc a
swap a
mov @rO,a
ani a,#OfOh
cjne ι,#70Ε, gelsTMCspConesNumbef
Osiągnięto ostatni numer lelefoeu, nie będzie więcej realtznwaeyhh pozycji Uzlaw wzayzlkie flagi na powrót w stanie normalnym i wyjdź
mov R0,#taii_back2
mov a,@R0
anl η,#01Π 111 lb
mov @]d,a
call reset_clock
tir test_pending
W m_prs’onhook W^jj^^^ z podprogramu
msCalltne_hom:
jb jmP apl,m_sending mcalltestend
m_sending:
mov a,#send
call wTbus
mov
mloopd8s: ;sprawdzenie, tzy lezl zoslał przerwany przez
ίΐ ts'st_enabie, $·+6 przesunięcie PCR
bmp m call test end
mov a,#1
tall
djnz r0,mloopd8s
m_talled:
mov r0).>#coslnt200 iIniejaiżzaeja iicznika dta impulsów 200 ms
mov @r0,#09
mov Γθ,#^οιιηΐ60(1 lIniejaiZzaeja iicmika dta impulsów 200 ms
mov @r0,#03 ;z resztą 600 ms
mov rO,#coun__eng ;inicjalizacja licznika dla zajęcia trasy
mov @rO,#coun__fone ;resel licznika tonu RingBatk
mov @ο,#οο
mov Τ11_Τϊπζε,,#0 ;resel bloku czasowego T1 (1 Os)
tir mute odblokowanie sygnału fonii
call write_lo_b ;**** ,px2
mov time_10ma,#0 ;uslawienie liczników na oczekiwanie 1 min.
mov Οιηο_ 10πζ,,#0
mov iime ls,#59
178 631
mov ima^_lm#^l
mov iime_lhr,#l ;czas skuteczny db zapobeeżenia wyłączenia bloku czasowego
mcheckinuse:
jnb i n 1.^0.0^-425 veo jjeżeii ne dziaiame , to
m_to_425_ver: wvykrvoo ton __425
mov eO,#max cciicc iiniejuj do sprawdzenia czas maksymanty
mov
mov eO,yiitjes iinKujiuj do sprawdzenia czas maksymanty
mov @0θ,#00100001 b
mov io_sn_n,#00 0 OOOOb ;ustaw maskę db sygnato ; Sprawdzenie przerwania zz pomocą przełącznika ręcznego
Ub jert_enab_r,$+6
|jmp mcannndd Sprawdzenie bloku czasowego T1
call Check_T __ΤΪΓη-Γ
jnc con__ver
jmp mcaflend ;PrzenvUj oobdzenie. diok csasoww Tl zakończył
;Sprawdź górny czas sygnału
czll verif__ ;w_woiame podprogramu sprawdzającego wyłączenie czasu sprawdzenie, czy test został przerwany przez drzebunięklą PCR
jb
W m_calt_and2
clr c
subb ^#122 **** 14 spadek 224 db - > 150 ms
Uc 1-0111^301 ;niewiżmy; jeżeH zzsos w4ccąania <0,100
mov a,b
clr c
subb a,#27 **** S) spadek-O db-> 250 ms
jc ο__ι^1_&^]__(__^^(^0 jjeżeii 0,150 <o czcts włączenia <o 0,2550 sprawdź czas wyłączenia
mov a,b
clr c
subb a,#B8 ;**** j40 ;czas rnewżżny eżepii 0,900 < czas
włączenia < 1,4 s jc mcheoknng b jmp iimmg m_cheak_ring_b:
mov r,b
clr c
subb a,#6 62 **** ;17O jeżeelilł
jc m_7hcak_yf__3 s ssprawdź aa dew(iniani e wrrtnee
jmp m_bad_timmg
178 631 m_check_off_200:
mov rO,#filter (inicjalizacja do sprawdzenia czasu maksymalnego
mov @r0,#11100001b
mov io_m_a,# 11100001 b ;ustaw maskę sygnału
call verify_off (wywołanie podprogramu weryfikacji wyłączenia czasu (sprawdzenie, czy test został przerwany przez przesunięcie PCR
jb test_enable,$+6
ljmp m_call_end2
clr c
subb a,# 15
jc m_bad_timing (nieważny, jeżeli czas włączenia <0,150
mov a,b
clr c
subb a,#30 ·**** .95 9 9·^»^
jc m_t_200_ok (jeżeli 0,150 < czas włączenia < 0,250
mov a,b
clr c
subb a,#50
jc m_bad_timing (nieważny, jeżeli 0,250<czas wyłączenia<0,500
mov a,b
clr c
subb a,#75
jmp m_bad_timing (nieważny, jeżeli 0,500<czas wyłączenia<0,700
jc m_check_off_3 s (sprawdź na dzwonienie zwrotne
mbadtiming:
mov r0,#count200 (ustawienie na powrót count200=6
mov @r0,#9
mov r0,#count200 (ustawienie na powrót count600=3
m_nnt_yyet:
call check_dtmf4
jnc m_nnt_yet
jmp m_patch_engaged_detected
m_rmt_yyet:
cali read io m a (sprawdzenie tonu 400, 800 lub 1020
anl a,#10000000b
cjne a,#10000000b, m_tone_ver (jeżeli równe m_tone_ver
m_nnnt_yet:
call ext_watchdog jmp m_not_yet m tonę ver:
178 631 m_tone_ver m_S_6rr_ok:
mov mov clr subb jac jmp r0#/corint200 a,@r0 c a,#6 m_t_600 cad ιτι_1π;1 timing ;rese; count200=6
m_S_6r0_cad:
mov @an#/9
mov r0,#count600 ;ton ζ^ίοέεϊ; jeżeb count200=0
mov a,@r0
dzc a
mov @r0,a
jaz m_ant_yet
jmp m_fonaest_fk
m_i_200_cad:
mov r0.#count200 ;ton rreętości; jeżeli cotait200-O
mov a,@r0 dzc a mov @r0,a jnz m_iiai zet jmp mbusyfok m_ahzck_o3f_3 s:
mov rO,#filtzr do sprawdzenia czasu maksymalnego
mov @r0,11100001b
mov io m a,# 11100001 b
mov iofma^l 1100001b ;ustaw maskę dlla sygnalu
mov r0,#max active
mov @r0,#250 zzapętlenie do wartości max active sekund
call vzrifyof'f ;wywołanie podprogramu weryfikacji wyłączenia czasu
clr c
subb a,250
Jc m_raa_timina jeżei; wyłączenie czasu <2,4 S; możiiwy ton 400
call yzrifyfoff ;wy wołanie podprogramu weryiikacj i wyłączenia czasu sprawdzenie, czy tzsS został przerwany przez przesuaięciz PCR
jb tzst_enable,$+6
ljmp m_callend2
mov a,b
178 631
clr subb c a,#36
jc mbadiimmg ;nieważny, jeżeli time__off<2.8 s możliwy ton 400
mov a,b
clr c
subb a,#60 dzwonienie, jeżeli 2,8<czas wyłączenia
Ń mRmgB ackToneOK <2,4+0,65=3,5 s
jmp m-badiming
m_noSeZeS:
mov afimełm jeszcze nie następuje _ic*te^t^ja
jmp m_check_muse
m_timż_out:
jmp m_call_end
m_timż_vsr: ;Wzkryto ton 400, 800 lub 1029 hz
mov rO,#max_aciive ;intajaj maksy many czas sprawdzania
mov @fr0,#240 ;maksymalny czas próbkowania 10 ms=2,4 s
mov rO#ffit^^r
mov @iO,#10000000b
mov wi_m_a^/f 0 0000000b ;ustaw maskę dkt sygnauu
call verify_ ;wy wołanie podprogramu weyll kuj ącego
cli c
subb ;70 ms a,#06 jj eżeit ton > 800 ms , to ;_rrao^;ty
subb a,#05 jjeżett ton >50 ms , nieważny
jc m_noD_yet jmp nesO.ns^_łk ; Wykryto ważny ton RingBαpk m_RtnąBapkTonżOK:
mov jz a,cime_ms m_iime_out sprawdź bod czasowy T4
mov r0,#count_tone imkiemenSjj Hcznik tonu RmgBack
inc @r
mov btok czasowy T1
mov o,ofitses ;usaaw maskę sygnauu
mov rfkffities ;usaaw maskę sy gnaum
mov ^#1100(^ b
mov 0,#^max cYtrię ;usaww maksymatoy czss wy^łfzy^ck sygnahi
mov @00,#250
jmp m_chckk_muse
mepath_engagżd_detecSżd
mJrath_żnąaged_dżtżctżd
m_pαtheżngaążd_deteptżd:
m_pongżft_ok:
nop
178 631 mhbusChOk:
mov R0,#kbllhback2
mov a,@RO
orl 3,/0000000000
mov @R0aa
jmp m_calt_źnd2
;wckorzcstywany w opcji połączenia zwrotnego mhtonehOk:
;----Z ośrodka Ιε^ο^κΕ i oatebtatlo ważny ton 1020 Hz ;— Teraz start transmisji pakietów
call mov extwaSchdog rl,#10 . * . 9 9 ;dn. 94.0h.19 zmieniono z 300 ms na 2 s
;delayh2e:
mov a,#20
call ddayi
call ex__waSchdog
djnz rLalday Y s
call report, aiamtas
Sprawdzenie, czy test został przerwane
przez _tzΙSZźtęcie PCR
jb tes__enabte,$+6
W m_cal__end2
mov 1Π^<__Η^Π13#^Ο
mov iime__10m7##0
mov iime_1 s#110
mov iime_im,#3
mm_chnck _inuse:
jnb ϊηη5<7,ππ_ _ vet ;jeżeli to błąd pracy to
jmp mcaltyend
mmhthVer:
call read tom a sprawdzenie tonu 400i 800 lhb 0 020
anl a,#10000000b
cjne a,#10000000bi minUnic vet jeżeli równe
jmp mm_no_cyet
mov t0,#mbx active juncjcj maksymainy czas sprawdzania
mov @07,#240 ;maksymalny czas próbkowania
240*10 ms = 2,4 s
r0, #0iltnr
mov @07,#lOOOOOOOb
mov to_m_a,# 000000000
call wenty ρvyρvl)blnie poa^^rogrannu wee0iikującego
;Sprawdzenin, czy test został przerwane przez przesunięcie PCR
178 631
ΐΐ Ζεο__ηηι1ιΐ6,$+6
ljmP πι_ι:η11_ζηΖ2
clr c
70ms 9
subb Ϊ/ζοΙϊ <50. ton nieważny
Komuekal poprawnie przekazany do Ośrodka Telekoeserwatyjeeeo
i odrbrana powiScdZ/enie
clr 1βο__ρηηάη^ ;wskaauje zakończenie t/ztu
jmP m_cun_end2 podprogram wyjścia
mm_nolsSel:
call wotehdog
mov ^ΐπ^Ν jjeszcze nie następuje' detekcja
W mmstC/ckstnηse ; ;**** ;m_tone_ok
mov oO,#counterl ;adrts do rO.
mov ,.@;ό Zawartość spod adresu do akumulatora
det a ;dekrem/ntaiea akumulatora
mov @;0,a Zawartość po d^ek^t/ϊms^r^t^ncj i do pamięć,.
jz frnnfmitlon_rrror skok. jeż/ili. akumulator zerowy.
W mtone_ok ;**** οιπριΗ/ιΙ iriuse
fransmitioOnenOr:
mov R0,#main1 _flagerror .**** . 9 9
mov a,@R0
or1 a,00000010b ;ustaw błąd p^i^ae^y
mov @R0,a
mov RO,#code_ xmit error
mov a,#2
call /ι^χΌ Opóźnienie włączenia lampek błędu
Ίι^/ιΙ:
W m_buzy_ok
_call_end2:
mov a,#clear ;Kłod kasowana
call wrbus k^^uj wsy stkże kody w pamięci części radiowej
clr th^im_kh^p oraz dokoiaja odwieszema
tall wriSe_lo_m_b i i rozłącz moduł
mov a,#1
tall Opórnienie
wail_inuzet off:
clr fremotehup ;***' nu/ koniecznie
178 631
żall luup
setb fremotd hup .**** . ? ?
mov a,#4
call delay2 lopóźnidnld 4*2,5 s
setb mute
W m_call_test_end
preoihook:
call_tettJend:
ret ;----J^u^rl^cja do sprawdzania bloku czasowego T1 110 s) ;---Blok czasowy Tl ^os^^^e uaktywniony rżżel1 wcykryto ρ'ζνηηίπιηίο1 1 -on RlngBack ;----F^r^rk^cja zwraca flagę przeniesienia po upływie czasu Tl.
Cheżk T1 Timor:
mov ζΌ,#ζ-ηιηΐ_ΐοηε mov a,@;0 cjne a,#0, tonddet emp Ε^.^οζΙΒ .οτοΙο.: ;Uprzednio wykryto przynajmniej 1 ton mov a,T1_Timdr żlr ż tubb a,# 10 jc ExitCheżkT1 setb c ret
ExitCheckT1:
żlr c ret
Timer2iEXT2 Procedura obsługi przerwania ;Prożddurf powodujs odczyanie danych z TRU i wprowadza do odpowieUniżh lokacji pamięci intlJtdrviże:
rdbut:
CLR EA
puth psw
push acc
178 631 cone_ahzaking_write:
jb iz.'nd,c^or^^__ie.'ad
jnb Sdata_tru cheek_wnie
setb read
check_wehe:
jb inte_znablz cont write
jnb o,τito'chzck_message
aheck_welte2:
clr sdatazu (wskazanie na flagę zupstu
setb inte_enable ;w celu, wskazana] na zapis
sCmp checkmessage
aont_τzrd:
mov asdata_in tread bb
rr a
mov c,Sdata_TRU
mov (Wprowadź trij danych do akumulatυia
mov sCata-toja
djuz bits. lef't_ńncheck_w;rbe
mov bits_left_m,#8
cle rond ;PsygoCowunie do nattępnego batiu
setb datawaląi (wnazzuie komunikat z t bbów
sjmp check write
coniwrite:
mov a.sdalaout
mov c,acc.O ;Wymiń bb
mov SdataiCU.e jak ovyZej
tt a tootuj akumukitor w lewo)
mov Sdata_out,a
Cjnz bits left outj shift next ;Pszyrrzymaj do tγypIΌtvadzenia t bbów
sotb Sdata_CU
cle write
mov bits_left_out,#9
cle inteenabie iflaga wskanjąąca zapśs
shift_nzxe:
mov a.data_in cheak_messree:
(----OdOdrana konoumikal a-bitowy. Następie dedokowiwie komunikalu.
(----Sprawdź na curoednio ooaukiwouy Uomun(kaiI ppzaz sprawoioenie Hag dalaOK:
178 631
jbc rssi.SaveR.SSI
jbc f_goodidlrerd_sSaSus
jbc f;_60misg_60
jbc f_61 ,msg_61
ąbc f_62,msg_62
jbc f_63,ntsg_63
Jest to poprzedni stan r ssi ;ąesS io poprzedni kod komunikatu 50
Jest to poprzedni kod tari 60
Jess to poprzedni kod tari 61
J^^si to poprzedni kod Sari 62
Jest to poprzedni kod tari 63 ;----Nie jest ustawiona żadna z flag ; mus; to być nowy komunikat lub dnze ;----Najpierw sprawdź; cTy rs-skw^ńmy bit 7.
;----jeżeli ustawiony; liczby są większe od 80 hex
Crb arc.7,LessThaa80hex ajmp Gre'atzrT'hzn80hzx
SaveRSSI:
;Zasamiętraiz darzą o natężeniu sygnału radiowego push 0 mov r0.#signa!strza^aSh mov @r0,a pop 0 ajmp rdbusdone jOdzbraao komunikat o wskaźnikach (Roam, NoService, IaUsz) ;ZasamiętaC odpowizdaiz zmizaaz bitowe przzz zasiotowaaiz sposobu skomplikowanego lzcz szybkiego mov c,acc.2 cpl c mov inuse,c mov a,acc.3 cpl c mov roam.c jnb acc.d.seerY clr noserv clr riagfZaable ;maat ;odblokowaaie dzwonienia po braku obsługi ajmp rdbus_done sserv:
szSb noseiy aCmp rdbusdone msg_60:
push 0 mov r0#/daa__60
178 631
mov @r0,a
ΡθΡ 0
setb send_60
ajmp rdbus_done
msg_61:
push 0
mov r0,#data_61
mov @r0,a
ΡθΡ 0
setb send 61
ajmp rdbusdone
msg_62:
push 0
mov r0,#data_62
mov @r0,a
pop 0
setb send_62
ajmp rdbus_done
msg_63:
push 0
mov r0,#data_63
mov @r0,a
pop 0
setb send63
ajmp rdbusdone
LessThen80hex:
;----Kod odebranego komunikatu mniejszy od 80 Hex
cjne a, #5 lh,check_low_status
setb rssi ;ustaw stan rssi
ąjmp rdbus_done checkjo w_status:
cjne a,#50h,check_60 ;tari jeżeli nie 50 sprawdź stan
setb fgoodid ;wskaż, że komunikatem było 50
ajmp rdbus_done ;tari ;vwwwvwvwwvww
check_60:
jnb fcall,check_60b
ajmp rdbus_done jeżeli połączenie wchodzące, nie sprawdzaj taryfy
check_60b:
cjne a,#60h, check_61 jeżeli nie 60, sprawdź stan
178 631 setb almp check61:
cjnn setb ajmp check62:
cjne sntb ajmp check63:
cjne sntb bjm_
Chk3:
cjne sntb
Chk2d:
cjnn clr clr snt0 sitO ajmp
Chnck_71:
cjne ajmp chk_73:
cjne ajmp khkh74:
cjnn ajmp chk_othersL:
t_60 ;wskaż, że aomunikbaΙm było 60 rabiiu a,#61h, check_61 ί_61 rdbus done
b.,#621l,checih_62 t_62 rdbus done a,#63h,check_63 t_63 rdbus done a,#03h,Chk2d powΙr_oź rdbus aione jeżeli nie 61, sprawdź stan ;wskaż, ie Pnmnnibatem Cyto 11 jeżeli nie 62, sprawdź stan ;wskaż. ie Pnrunikbatπm Cyto 22 jeżeli nie 63, sprawdź stan ;wskaż. ie Pnmnnibatπm ΛνΕοόη a,#02dh,checkh71 e_inkomnιg n_inconiing ap2 lock rd0us_done
Sprawdzenie telekontroli (nadzór)
a.#71h.chk73 set telesup. test
Sprawdzenie zbjętΙgp kanału głosowego a,#73 Ii, c^1^_^4 setvch1 a,#74h,check_othersL set vch2 ajmp rdbus_done
178 631
GrdftdrThan80hdx:
;-----Wimość w a^ulmuta-oszeS_e1 wtyks^ ηϊζ 80 hex jb acc.6,GreaterThanCOHex jjeżei 1 bi1 ustawiony. tc1 liczba jest (n>=c0h) jb acc.4,GreaterThan90Hex ιΙ^^^Ιϊ bt1 ustawiony 1 to liczba jsst (n>=c0h) ;-----w akumutatosze wi zakresie 80-8F Uub EO-EF cjne a,#085H,Cheżk80to89Hex sstb truis_on
Check80eo89Hex:
żlr c tubb a,#8ah jnc Gre'aterThanS9 ;Liżzbf wynoti (80h<n<=89h), zfpamlęefe w buforze do eelekonsdrwacei. Może stanowić oczekiwaną liczbę s pamięci po tozkasld odczylu pamięci mov a,sdata_in ;Pobierz cytrę ponoanlte call save_dsp i i ^]ρ^ηη^^^1 w ł^ukozse ajmp rdbusdone
GrdaeerThan89:
;Liżzbr wynoti (8ah<=n=8fh lub E0-EF) ;Znakt nidwfżnd, nid używane. Teraz wyjdź.
GrdaterThan90Hex:
cjnc a^ODSŁaCWd sstb emcoming jnb a_mcoming,not_mcoming_e ;-----Odebrana sekwemja pobeczenia wechodzącego E->A->E S etykieta EnfrAntE)
clt ap1
mov ccapm 1 ,#0
clr e_mcoming
żlr a_incoming
noe_incoming_ _c:
fjmP η^1^υ__(^<^η6
Chk91:
żjne ^#09ηι,α±88 jnb e_incoming,Chk98
178 631 sitb α_tapominą ajmp idlbu eons
Ciik98:
cjni 2##098Η,ΟιΒ3Α clr tókk ajmp tdbus_done
ChkBA:
pjae a,#0bah,ChIB3B ;----Ρο^ζει^ε wchodzące tietekonseIweιcja)---jb rmg enabte ClkBBB ;manS ;nte dzwoń przy inicjowaniu cli ^αΓη^ι^ ajmp rdbusdone
ChkBB:
cjni ątfObblĘChkOihfr ;-----Polpriame ηπ^Με pzszz zzśść radową, mose być odwtfrianlnm aUro łokałznm, albo zdalnym----
teta apl
clr ejnominig
clr a_inroming
ajmp ddbuS-done
;-----Nto będzie dass^ch sprawdzań, śuż wyjdź ajmp adbus_done
GriαtirTCαa_OHex:
;-----Nie ma komunikatów spccjantych o tym kodzis (CO-FI),j jżż wyddź ajmp ddbus_done ;Nadzót (Aktywacja testu przez ośrodek telekontrolny) set_teletetup_tist:
setb audit ηχίε jb ifsS_anaetó, ;'dbss_0ele push 0 mov RO,#aall_bpkk 'π^οΖ ;i nwstępnie woWonąl nowy test mov a,@00 ;mant
178 631
anl a,#00110000b ;kasuj liczniki, połączenie niz zrkoaczoae
orl a,#00000000b miaia;. Stan gao; cbowonienia
mov R0,#call_back2 ;man; 9
mov a,@R0
anl mam;. ikasuj liczniki, meldunek nie zakończony
orl ;ustawżenże ay;iwotane pracz ϊeiekoIttroię
mov @R0,a ;man; 9
szII Zeslenabie
seib inil_Zest
setb Zesljzending
pop 0
sjmp .db^-done
,-----Kana; gtoroazf zajęty , ustaw bi; vch szt_vch1:
seib vch_l
sjmp adbul done
szWch- _2
scmp adbuldone
rabuslto;-:
clr data_in
clr Zll
SETB EA
pop ccc
pop pww
reti
PRAWA AUTORSKIE ZASTRZEŻONE - TELULAR INTERNATIONAL, INC.
178 631
FIG.1A
178 631
FIG.1B
178 631
KROK 16
KROK 17
KROK 18
KROK 19
KROK 20
KROK 21
KROK 22
KROK 23
KROK 25
USTAW ERROR _FLAG MAIN FLAG ERR0R=1 ζ START ) ł
INICJUJ ZMIENNE ł
KASUJ „LED-y STANU ί
ODEACZ SLUCHAWKE ABONENTA
OOŁACZ MODUŁ OBSŁUGOWY
ZWLOKĄ .....
MODUŁ OBSŁUGOWY ZDJĘCIA SŁUCHAWKI
ZWŁOKA .TUZ
INTERFEJS WYKRYWAJĄCY ODWIESZENIE
OOBLOKUJ TON WYBIERANIA ζ RETURN
FIG. 2
178 631
FIG. 3
178 631
FIG-4
178 631
FIG. 5A
178 631
FIG. 5B
178 631
KROK 63
KROK 66 NIE
KROK 67 , -
USTAW RING SECOND
KROK 64
KASUJ BLOK CZASOWY
PĘTLA! ZDJECfE SŁUCHAWKI PRZED UPŁYWEM 2S JEST NIEDOZWOLONE
KROK 65 NIE
WYKRYTO BŁĄD ZDJĘCIA SŁUCHAWKI
KASUJ POŁĄCZENIE WCHODZĄCE
USTAW ERR0R-FLA6 MAIN ERR0R FLAG = 5
KROK 49
KROK 50 (return)
FIG. 5C
178 631
FIG .6
178 631
FIG.7A
178 631
FIG.7B
178 631
KROK 95
KROK 97
KROK 99
KROK 101
KROK 103
KROK 105 ζ START )
FIG. 8A
BEAD ODWIESZENIA | KROK 96 ERROR-C0DE=1
BEAD ODWIESZENIA PRZY OZWONIENIU | KROK 98 ERROR C00E=2
BEAD TONU WYBIERANIA | KROK 100 ERR0R_C0DE=3
I __________
BEAD TONÓW DTMF | KROK102 ERR0R C0DE=4
BEAD WYKRYWANIA DZWONIENIA | KROK 104 ERR0R C0DE=5
BEAD ODPOWIEDZI NA DZWONIENIE | KROK 106 ERR0R C0DE=6
178 631
KROK 109
KROK 111
KROK 113
TAK
TAK
BŁAO ZASILANIA-RADIO
KR0K1°7 ^Ą,N1_FLAG_ERR0R
KROK 108
ERR0R C0DE=7
BŁĄD POŁĄCZENIA
KROK 110
ERR0R C0DE=8
BŁĄD TONU ZAJĘTOŚCI
I KROK 112
ERR0R C0DE=9
BŁĄD STANU DZIAŁANIA | KROK 114
ERR0R C0DE=10
BŁĄD 1000Hz
KROK 115 .....L£I
I KROK
116
ERROR-CODE 11 (return }
FIG.8B
178 631
KROK 117
KROK 118
KROK 119
KROK120
KROK 121
KROK 122
KROK 123
KROK 124
FIG.9
178 631
Ο □
FIG.10
178 631
FI G . 11
178 631
WEJŚCIE _w,_ +8VD
FONICZNE __T
FIG.12
178 631
FIG.13
178 631
(3
LL
178 631
FIG.15
178 631
-212
START BLOKU _ ODMIERZANIA CZASU
MINUTĘ
FIG.16
178 631
ETAP 22
KASUJ
FLAGĘ
CALL BACK
TAP 7
ETAP Η
224
USTAW LICZNIK PONOWIEŃ NA 3
TAK
234 ^PONOWIEN' TAK4 ETAP 21
FIG. 17
178 631
FIG.18
178 631 f PĘTLA KONTROLI ODWIESZE\ NIA y
WERYFIKACJA STANU PĘTLI GŁÓWNEJ
FIG.19
Departament Wydawnictw UP RP. Nakład 70 egz.
Cena 6.00 zł.

Claims (4)

  1. Zastrzeżenia patentowe
    1. Sposób zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej, w którym blok interfejsu przyłącza się do stacjonarnego urządzenia telefonicznego i przetwarza się sygnały wybierania DTMF lub typu impulsowego z dołączonego do niego stacjonarnego urządzenia telefonicznego na format cyfrowy oraz wysyła się te sygnały do komórkowego urządzenia nadawczo-odbiorczego, znamienny tym, że nadaje się sygnał inicjacji testu spoza miejsca zainstalowania do bloku diagnostycznego, wykonuje się, w odpowiedzi na nadanie sygnału inicjacji, testowanie komórkowego bloku interfejsu w urządzeniu do zdalnego testowania, przetwarza się wyniki testowania na dane przydatne do wysłania za pośrednictwem sieci komórkowej oraz wysyła się dane wynikowe testu do znajdującego się poza miejscem zainstalowania bloku monitorującego za pomocą komórkowego urządzenia nadawczo-odbiorczego.
  2. 2. Sposób według zastrz. 1, znamienny tym, że przed wysłaniem danych wynikowych testu generuje się sygnał potwierdzenia ze znajdującego się poza miejscem zainstalowania bloku monitorującego do bloku diagnostycznego, wskazującego nawiązanie połączenia dacyjnego.
  3. 3. Sposób według zastrz. 1, znamienny tym, że w trakcie testowania bloku interfejsu monitoruje się funkcje wykonywane przez blok interfejsu.
  4. 4. Sposób według zastrz.3, znamienny tym, że w trakcie monitorowania symuluje się funkcje wykonywane przez urządzenie telekomunikacyjne, dla generowania w bloku interfejsu odpowiednich odpowiedzi tego bloku oraz określa się, czy blok interfejsu działa poprawnie.
PL95311050A 1995-07-24 1995-10-20 Sposób zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej PL178631B1 (pl)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/505,868 US5859894A (en) 1994-03-02 1995-07-24 Self-diagnostic system for cellular-transceiver systems with remote-reporting capabilities

Publications (2)

Publication Number Publication Date
PL311050A1 PL311050A1 (en) 1997-02-03
PL178631B1 true PL178631B1 (pl) 2000-05-31

Family

ID=24012209

Family Applications (1)

Application Number Title Priority Date Filing Date
PL95311050A PL178631B1 (pl) 1995-07-24 1995-10-20 Sposób zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej

Country Status (4)

Country Link
US (1) US5966428A (pl)
HU (1) HU219932B (pl)
PL (1) PL178631B1 (pl)
ZA (1) ZA958218B (pl)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6690923B1 (en) * 1994-03-02 2004-02-10 Telular Corp. Self-diagnostic system for cellular-transceiver systems with remote-reporting capabilities
US5675629A (en) * 1995-09-08 1997-10-07 At&T Cordless cellular system base station
US5911120A (en) 1995-09-08 1999-06-08 At&T Wireless Services Wireless communication system having mobile stations establish a communication link through the base station without using a landline or regional cellular network and without a call in progress
US7194083B1 (en) 2002-07-15 2007-03-20 Bellsouth Intellectual Property Corporation System and method for interfacing plain old telephone system (POTS) devices with cellular networks
US20080207197A1 (en) 1997-07-30 2008-08-28 Steven Tischer Apparatus, method, and computer-readable medium for interfacing devices with communications networks
US7149514B1 (en) 1997-07-30 2006-12-12 Bellsouth Intellectual Property Corp. Cellular docking station
US6349199B1 (en) * 1998-02-12 2002-02-19 Ericsson Inc. Reliable continuously operating fixed cellular terminal
US6411802B1 (en) 1999-03-15 2002-06-25 Bellsouth Intellectual Property Management Corporation Wireless backup telephone device
US6775562B1 (en) 2000-04-17 2004-08-10 Sbc Properties, Lp Remote battery replacement notification system and method
US6694360B1 (en) * 2000-06-09 2004-02-17 3Com Corporation Multi-mode network interface having loadable software images
US6539338B1 (en) * 2000-06-09 2003-03-25 3Com Corporation Self-diagnostic testing of a network interface adapter
IT1318284B1 (it) * 2000-07-31 2003-07-28 Cit Alcatel Metodo e dispositivo per la configurazione ed il monitoraggio remotodi elementi di rete di telecomunicazioni.
US20020068529A1 (en) * 2000-12-01 2002-06-06 Knoble John L. System and method for adapting traditional telephony for cellular usage
US6914962B2 (en) * 2000-12-14 2005-07-05 Nortel Networks Limited Call-flow verification method and apparatus
EP1239688A1 (en) * 2001-03-08 2002-09-11 Sony International (Europe) GmbH Mobile telecommunication means comprising means for detecting and reporting errors
US6711520B2 (en) 2001-07-12 2004-03-23 Seagate Technology Llc Remote execution of diagnostic firmware in a block data storage device
US6694281B2 (en) 2001-07-12 2004-02-17 Seagate Technology Llc Real time signal analysis of a remote block data storage device
US7035633B2 (en) * 2001-10-23 2006-04-25 Bellsouth Intellectual Property Corporation Apparatus for providing a gateway between a wired telephone and a wireless telephone network
US7120454B1 (en) 2001-12-26 2006-10-10 Bellsouth Intellectual Property Corp. Auto sensing home base station for mobile telephone with remote answering capabilites
US7565115B2 (en) * 2002-07-09 2009-07-21 Xcelis Communications, Llc Communication system for landline and wireless calls
WO2004006512A1 (en) * 2002-07-09 2004-01-15 Xcelis Communications Communication systems and methods
US20060128376A1 (en) * 2002-07-09 2006-06-15 Alexis Glenroy J Communication systems and methods
US8526466B2 (en) 2002-07-15 2013-09-03 At&T Intellectual Property I, L.P. Apparatus and method for prioritizing communications between devices
US8416804B2 (en) 2002-07-15 2013-04-09 At&T Intellectual Property I, L.P. Apparatus and method for providing a user interface for facilitating communications between devices
US8000682B2 (en) 2002-07-15 2011-08-16 At&T Intellectual Property I, L.P. Apparatus and method for restricting access to data
US8554187B2 (en) 2002-07-15 2013-10-08 At&T Intellectual Property I, L.P. Apparatus and method for routing communications between networks and devices
US7200424B2 (en) 2002-07-15 2007-04-03 Bellsouth Intelectual Property Corporation Systems and methods for restricting the use and movement of telephony devices
US8543098B2 (en) 2002-07-15 2013-09-24 At&T Intellectual Property I, L.P. Apparatus and method for securely providing communications between devices and networks
US8275371B2 (en) 2002-07-15 2012-09-25 At&T Intellectual Property I, L.P. Apparatus and method for providing communications and connection-oriented services to devices
US6836644B2 (en) 2002-08-26 2004-12-28 Bellsouth Intellectual Property Corporation Methods and apparatus for establishing a fixed wireless telephone service
US6999761B2 (en) * 2002-08-26 2006-02-14 Bellsouth International Property Corporation Fixed wireless telephone device
US8284886B2 (en) * 2003-01-17 2012-10-09 Texas Instruments Incorporated Radio frequency built-in self test for quality monitoring of local oscillator and transmitter
US7321766B2 (en) * 2003-01-21 2008-01-22 Agilent Technologies, Inc System and method for testing portable communication devices
JPWO2004097787A1 (ja) * 2003-04-30 2006-07-13 東芝松下ディスプレイテクノロジー株式会社 表示装置用アレイ基板及び表示装置
US20040235518A1 (en) * 2003-05-22 2004-11-25 Beyette Fred R. Hybrid telephone network utilizing wireless link and landline services
US20070060120A1 (en) * 2003-07-30 2007-03-15 Gerdes Reiner J Telemetry system and facsimile machine
WO2005076640A1 (en) * 2004-01-16 2005-08-18 U.S. Thermoelectric Consortium Wireless communications apparatus and method
US7162207B2 (en) * 2004-06-21 2007-01-09 Elektrobit Oy System, apparatus, method and computer program for producing signals for testing radio frequency communication devices
US7751855B2 (en) * 2005-05-20 2010-07-06 Alcatel-Lucent Usa Inc. Private routing control numbers
US20070274716A1 (en) * 2006-05-11 2007-11-29 Ying Goangshiuan S Methods and apparatus to provide local warning of a low battery condition from an optical network terminal
JP2008271126A (ja) * 2007-04-19 2008-11-06 Ntt Docomo Inc 移動端末装置、移動端末装置の診断方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295178A (en) * 1990-12-03 1994-03-15 Ericsson Ge Mobile Communications Inc. Digital signal processor for radio base station
US5504800A (en) * 1994-04-04 1996-04-02 Hughes Aircraft Company Cellular automated test set
MY114291A (en) * 1995-01-31 2002-09-30 Qualcomm Inc Concentrated subscriber system for wireless local loop
US5819177A (en) * 1996-03-20 1998-10-06 Dynamic Telecommunications, Inc. Fixed wireless terminals with network management method and apparatus

Also Published As

Publication number Publication date
HUP9601009A2 (en) 1997-05-28
ZA958218B (en) 1996-04-24
HU9601009D0 (en) 1996-06-28
US5966428A (en) 1999-10-12
PL311050A1 (en) 1997-02-03
HU219932B (hu) 2001-09-28
HUP9601009A3 (en) 1999-08-30

Similar Documents

Publication Publication Date Title
PL178631B1 (pl) Sposób zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej
US6690923B1 (en) Self-diagnostic system for cellular-transceiver systems with remote-reporting capabilities
US5469494A (en) Self-diagnostic system for cellular-transceiver systems
US5859894A (en) Self-diagnostic system for cellular-transceiver systems with remote-reporting capabilities
JP4149131B2 (ja) 固定ワイヤレス端末においてステータス情報を報告するための方法および装置
JP3828932B2 (ja) 移動装置における方法と装置
AU5755598A (en) Communications system and method for testing of a communications apparatus
US20050119014A1 (en) Home cellular phone system
JP2009159267A (ja) 通信装置、通信装置の親機及び子機
AU674406B2 (en) Self-diagnostic system for cellular-transceiver systems
JP2009159547A (ja) 通信装置
JP2010178154A (ja) 通信装置
JP2010026545A (ja) 災害情報受信装置
KR20070062694A (ko) 회선 점검 장치와 그 회선 점검 방법
CN101867662A (zh) 用户通话的高阻监听装置和方法
JP2007201944A (ja) 無線通信システム、無線通信端末および通信制御方法
JP2007049630A (ja) 通信システム、ネットワーク管理装置、及び通信品質情報取得方法
JP3661088B2 (ja) コードレス電話システム
JP4785826B2 (ja) 通信装置
JPS6326946B2 (pl)
JP2011147082A (ja) 無線通信システム
JP2000049973A (ja) 無線固定加入者装置及びその保守モード設定方法
JP2006128952A (ja) 無線公衆電話システム及び該無線公衆電話システムの加入者装置
JPH10327470A (ja) 無線固定端末装置
JPH0388545A (ja) 親子式電話装置