PL174142B1 - Radiowe urządzenie nadawczo-odbiorcze w systemie łączności komórkowej - Google Patents
Radiowe urządzenie nadawczo-odbiorcze w systemie łączności komórkowejInfo
- Publication number
- PL174142B1 PL174142B1 PL94321371A PL32137194A PL174142B1 PL 174142 B1 PL174142 B1 PL 174142B1 PL 94321371 A PL94321371 A PL 94321371A PL 32137194 A PL32137194 A PL 32137194A PL 174142 B1 PL174142 B1 PL 174142B1
- Authority
- PL
- Poland
- Prior art keywords
- mov
- test
- error
- flag
- call
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W24/00—Supervisory, monitoring or testing arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/02—Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
- H04W84/10—Small scale networks; Flat hierarchical networks
- H04W84/14—WLL [Wireless Local Loop]; RLL [Radio Local Loop]
Landscapes
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Engineering & Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Monitoring And Testing Of Transmission In General (AREA)
- Transceivers (AREA)
- Radar Systems Or Details Thereof (AREA)
- Telephonic Communication Services (AREA)
- Telephone Function (AREA)
- Measurement Of Velocity Or Position Using Acoustic Or Ultrasonic Waves (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
- Circuits Of Receivers In General (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Description
Przedmiotem wynalazku jest radiowe urządzenie nadawczo-odbiorcze 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 samo174 142 dzielnego, 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. 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 inne 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
174 142 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 technologię dla licznych, czasem niekompatybilnych zastosowań, mianowicie bezprzewodowych prywatnych central wewnętrznych, mniejszych i lżejszych 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 bazie 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
174 142 zapewni udoskonalenie sprzętu telekomunikacyjnego, telekomunikacyjnych systemów i konstrukcji.
Istotą radiowego urządzenia nadawczo-odbiorczego w systemie łączności komórkowej, według wynalazku, zawierającego nadajnik-odbiornik radiowy, blok interfejsu i urządzenie telekomunikacyjne dołączone do nadajnika-odbiornika radiowego, przy czym blok interfejsu łączy operacyjnie urządzenie telekomunikacyjne z nadajnikiem-odbiornikiem radiowym dla telefonicznych połączeń wychodzących albo połączeń odbieranych przez nadajnik-odbiornik radiowy, jest to, że zawiera urządzenie testujące dla kontrolowania i określania właściwego działania nadajnika-odbiornika radiowego i bloku interfejsu, przekaźnik do dołączania urządzenia testującego do bloku interfejsu w miejsce urządzenia telekomunikacyjnego, przy czym urządzenie testujące zawiera układy generowania funkcji wykonywanych przez urządzenie telekomunikacyjne do wygenerowania w bloku interfejsu odpowiedzi dla określenia, czy blok interfejsu działa poprawnie.
Korzystne jest, gdy zgodnie z wynalazkiem urządzenie testujące zawiera układy generowania połączenia telefonicznego wychodzącego przez blok interfejsu i radiowy nadajnik-odbiornik:, czyli przez radiowy system telefoniczny, z którym ten radiowy nadajnik-odbiornik jest związany, i na powrót do tego nadajnika-odbiornika, przy czym urządzenie testujące zawiera następnie układ dla wykrywania sygnału zajętości przez nadajnik-odbiornik w odpowiedzi na to połączenie telefoniczne, przy czym układy generowania funkcji, w tym generowania wychodzącego połączenia telefonicznego, wywołują numer aparatu telefonicznego, który został przydzielony temu nadajnikowi-odbiornikowi, do którego jest operacyjnie dołączony.
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, przy czym stosuje 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 do komórkowego urządzenia nadawczo-odbiorczego 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łączone 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ą6
174 142 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 z 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 nadawczo-odbiorcze, 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 na 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 LED 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 zaliczające dla standardowego telefonu domowego lub automatu telefonicznego.
174 142
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.
Przedmiot wynalazku przedstawiono w przykładzie wykonania na rysunku, na którym fig. 1A i IB przedstawiają sieć działań procesu samotestowania, fig. 2 przedstawia sieć działań podprogramu autotestującego odwieszenia słuchawki, fig. 3 - 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ń.
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 IB przedstawiono podprogram wykonania 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
174 142 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 14. 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 wszystkie sygnały 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 Main_Flag_Error. 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 28 następuje testowanie tonu wybierania. Jeżeli ton wybierania jest nieprawidłowy, program przechodzi do kroku 30, gdzie następuje ustawienie flagi Error_Flag, 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
174 142
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 Error_Flag, a flaga MAIN_FLAG_ERROR 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 pętli do kroku 48, aż do rozpoczęcia dzwonienia. Natomiast, jeżeli upłynął 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 pętli do kroku 56, aż do ustania dzwonienia. Nato10
174 142 miast, 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ę podniesienie 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 zawraca 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 dzwonienia zostaje zakończona. Następnie program przechodzi do kroku 50, w którym zostaje ustawiona flaga Error_Flag, a flaga Main_Flag_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 okresach 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 kro174 142 ku 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. 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 komórkowe urządzenie nadawczo-odbiorcze dołączone do bloku interfejsu 14, przez sprawdzenie na początku zasilania, a następnie wygenerowanie połączenia na własny numer telefonii. 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 nadawczo-odbiorczym. W kroku 86 blok interfejsu 14 wykrywa stan pracy urządzenia nadawczo-odbiorczego. 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 Mainl_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
174 142
Hook Slic Error. Jeżeli ta,. to EIROOR_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 67. W kroku 67 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 66 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 67 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 68 na wartość 2, a następnie program powraca do podprogramu głównego. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 66. W kroku 66 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, to kod ERROR_CODE ustawiany jest w kroku 102 na wartość 4, a następnie program powraca do podprogramu ^łonneo.. Natomiast w przypadku wyniku negatywnego, program przechodzi dalej do kroku 103. W kroku 103 odbywa się sprawdzenie, czy Main_Flag_Error jest równe 5, czyli odpowiada błędowi wykrywania dzwonienia. Jeżeli tak, to kod ERROR_CODE 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_Flae_Errgr jest równe 6, czyli odpowiada błędowi odpowiedzi na dzwonienie. Jeżeli tak, to kod ERROR_CODE 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, Mainl_Flag_Error. W kroku 107 odbywa się sprawdzenie, czy Maial_Flag_Err-r jest równe 1, czyli odpowiada błędowi zasilania części radiowej. Jeżeli tak, to kod ERROR_CODE 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 106. W kroku 106 odbywa się sprawdzenie, czy Maial_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 Mainl_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ść 6, 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 Maial_Flag_Error jest równe 4, czyli odpowiada błędowi stanu pracy urządzenia. Jeżeli tak, to kod ERROR_CODE 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 Mainl_Flag_Error jest
174 142 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 programu 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 pętli 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 automatyczne 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 nadawczo-odbiorczego adaptera. Test autodiagnostyczny zaprogramowany jest tak, aby wykrywać sygnał zajętości lub sygnał natłoku na linii, jako wskazanie, że połączenie nie może być dokonywane i że układ tranmisyjny 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,
174 142 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 (MJFTD), test urządzenia nadawczo-odbiorczego, test obwodu odbiorczego, test obwodu nadawczego, 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, blok interfejsu 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.
174 142
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 i wyłączonych 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 | L | L | L | L | |||
ED 5 | ED 4 | ED 3 | ED 2 | ||||
Bez uszkodzenia | W | W | W | W | |||
Y | Y | Y | Y | ||||
— | — | — | — | ||||
Błąd pętli | W | w | W | W | |||
Y_ | Y_ | Y_ | |||||
Błąd pętli | W | w | W | W | |||
Y_ | Y_ | Y_ | |||||
Ton wybierania | w | w | w | w | |||
Y_ | Y_ | ||||||
Detektor MFTD | w | w | w | w |
Y_ _
Detektor dzwonienia W
Y_ _
Odpowiedź na wywołanie W
Y_ _
Zasilanie nadajnika W
Y_ _
Nadajnik (połączenie) W _ Y
Odbiornik (zajętość) W
Y
W
Detekcja tonu przy 12 kHz
Y
W
W
W
W υ
W
Y
W
Y
W
W
Y w
w w
Y_ w
f w
w w
w w
174 142
Zasilacz główny
BRAK OBSŁUGI
Obwód nadawania
Nie określony
Nie określony
Y_
W W
Y
WWW
WWW _ _ Y
WWW _ Y_ _
WWW
Y Y
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 pętli. 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ętotliwościowego MFTD. Składa się on z karty autodiagnostycznej generującej pełną sekwencję 16 tonów MFTD, wysyłającej ją do konwencjanolnego 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 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. Ten test wykonuje się przez wykrywanie stałego napięcia +12 V, otrzymanego ze złącza danych urządzenia nadawczo-odbiorczego. 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 nadaw174 142 czo-odbiorczego. Następnie jest generowane połączenie przez sieć komórkową z numerem abonenta. W ten sposób sprawdzane jest działanie urządzenia nadawczo-odbiorczego, 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 ręcznie, 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łączone do linii wyszukiwania i dzwonienia, w celu wykonania tych testów. Kiedy
174 142 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ć odwieszony 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 Zenera Dl 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 znaczy tranzystor Q4 wchodzi w nasycenie, co powoduje zasilanie optoizolatora SSR1, zamknięcie obwodu i realizację 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/O.
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/O.
Część układu w uproszczeniu oznaczona na fig. 11 literą F stanowi zespół układów fonicznych wejściowych/wyjciowych zbudowany z 1 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ł wejściowy DTMF generowany przez urządzenie testujące 10 przekazywany jest na 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 1 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-OlUr, DTMF4-OUT układu U4. Następnie utrzymując tę wartość czterobitową, powoduje się, że
174 142 sygnał zezwalający na zacisku wejściowym oznaczonym D3MF-OUT zmienia poziom z niskiego na wysoki umożliwiając w ten sposób generację sygnału. Częstotliwość akustyczna wyprowadzana jest na wyjście tonowe po wzmocnieniu sygnału przez wzmacniacz Ul. W celu wyłączenia tonu, sygnał na zacisku D3MF-OOT sprowadza się na powrót do stanu niskiego.
Część oznaczona schematycznie na fig. 12 literą H jest układem scalonym U8 portów 1/O. 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. J5 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 2 x 10 wykorzystywana do podawania zasilania, jak również do nadawania i odbioru danych portu I/O. Zawierają one również głowicę 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-w-ltowego nierngul-waneeo 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 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 masę. Kiedy tonowi programowanemu przez obwód rezystora i kondensatora odpowiada ważny ton, to sygnał wyjściowy detektora tonu zmienia się 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 z fig. 13 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.
174 142
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 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 1 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 DTMF1. Po zdekodowaniu sygnału, na końcówki oznaczone DTMF0-IN, DTMF1-IN, DTMF2-IN, DTMF4-IN, wyprowadzana jest wykryta wartość czterobitowa. Następnie linia DSMF-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.
Poniżej zamieszczono wydruk programu źródłowego do realizacji wynalazku.
174 142 $nopi nosb db noge nomo nopr ep $nolist $include(reg252.pdf) $list • * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *k -k -k r ;Maxjack, aut. Alexis V.Torres dla Telular International,
Inc.
; (C) Copyright Telular International, Inc. 1993-1995 ;Interfejs telefoniczny/komórkowy:
/Program główny z tablicą obsługi t
;92.11.29 maint.asm ;
• * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * *r * * * * * * * * * * * * * * * * * * * * * * ★ ★ z
/Uniwersalne kody klawiszy telefonii naziemnej
zero equ 0ah | ; 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 | e<u | 80h /Początek bufora 16B wyświetlacza |
LCD | ||
dspbuf end | e<qi | 90h /Koniec bufora wyświetlacza /LCD |
msgbuf start | ecu | 90h /Początek bufora komunikatów; ;TRU |
) | ||
msgbuf end | equ | 90h /Koniec bufora Oomuwkleóśa RRU |
main flag equ | Ob0h | ;Do sprawdzania flag używaj adresu |
174 142
;bezpośredniego | ||
;hook slic 1 ;dial 2 ;dtmf 3 ;ring test 4 ;ans test 5 main flag error eęqu 01bh ;hook slic error 1 | ;błąd odwieszenia | |
;hook ring_error | 2 | ;błąd odwieszenia |
;dial error | 3 | ;błąd tonu wybierania |
;dtmf error | 4 | ;błąd dtmf |
;ring_test_error | 5 | ;błąd dzwonienia |
;ans_test_error | 6 | ;błąd odpowiedzi na |
dzwonienie main1 flag equ 0b1h | ;jak wyżej | |
;power radio | 1 | ;błąd zasilania-radio |
;call test | 2 | ;błąd połączenia |
;call tone | 3 | ;błąd rozmowy |
main1 flag error equ | Oblh | ;jak wyżej |
;power radio_error | 1 | ;rezerwa |
;call test | 2 | ;rezerwowy błąd połączenia |
;call_tone | 3 | ;rezerwowy błąd rozmowy |
;inuse | 4 | ;błąd pracy |
;1000hz | 5 | Błąd 1000Hz |
error code equ | 0b4h | ;ostateczna sygnalizacja LED |
;hook slic error | 1 | ;odwieszenie |
;hook ring_error | 2 | ;odwieszenie |
;dial error | 3 | ;wybieranie |
;dtmf error | 4 | ; dtmf |
;ring test error | 5 | ;dzwonienie |
174 142 /ans_test_error /power_radio_error ;call_test ;call_tone ;inuse /lOOOhz ;odpowiedź na dzwonienie ;zasilanie-radio /połączenie /rozmowa /praca
1000Hz
cero | equ | OOh |
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 | o3h |
.********************************************************** z
Wewnętrzne definicje zmiennych Ram *********************************************************** / Rejestry zajmują bajty 00h-07h (bank rej. 0)
rO | wskaźnik pamięci |
kspandera I/O) | |
rl | wskaźnik pamięci |
r2 | liczba cyfr |
r3 | pętla opóźnienia |
r4 | pętla opóźnienia |
(również wskaźnik adresowy dla danych z TRU dla bloku czasowego magistrali dla bloku czasowego magistrali
174 142
;r5 | wykorzystywany w |
r6 | wykom zys tywaany w |
;r7 | wykorzystywany w |
bloku czasowym rohtone send_time bloku czasowym rohtone ; Lokacje pamięci zmiennych
rttde offl | ddaa | 10h | /mierzy | czas |
poniesienia | słuchawki | |||
/time off2 | ddat | lUi | /mierzy | czas |
poniesienia | słuchawki | |||
;aCmetOff3 | ddat | Uh | /mierzy | czas |
poniesienia | słuchawki | |||
/tirne on1 | ddat | 1^3t | //^θγζυ | czss |
odłożenia słuchawki
/time on2 | dćłtaći | 11h | /•mierzy czss |
odłożenia słuchawki | |||
puiaitaigia | ddat | 11h | /wartość cyfry |
wybiirznie impulsowo | |||
in use off timer | data | Uh | /^prawda,, czy |
po uruchomieniu zaczyna działać lampka
ringttimer | ddat | 11h | /hlok czasowa |
sprawdza czas | między dzwonkami | ||
d^t^ti | Uli | /blok czasowy | |
generuje 20 Hz | dla dzwonka | ||
bell aimer2 | dć^a^^ | 11h | /blok czasowy dla |
dzwonka gndstart_timerl ddta 1ah nie ma połączenia przez 1 s gnóstart—timerk daaa 1bh ;highpoint ddaa 1ch tonowych ;lowpoint dc^a 1dh tonowych /zwalnia linię GS, jeżeli ;jak wyżej /zapisuje dph dla tablic ;zapisjje dpi dla tablic
174 142
highpoint | data | 35h | ;zapisuje | dph | dla | tablic |
tonowych | ||||||
lowpoint | data | 3 6h | /zapisuje | dpi | dla | tablic |
tonowych | ||||||
test min | data | 1eh | ||||
; free | data | 1fh |
t f
;Obszar RAM 20h-29h jest zarezerwowany do wykorzystania przez główny moduł, ;albo jako dane w postaci bajtów, aolbo poszczególnych bitów
flags | DATA | 20h | ;ten bajt zawiera poniższe |
flagi adresowalnych fhook | bitów bit | 00h | ;w postaci indywidualnie ;Flaga ustawiana przy zdjęciu |
fsend | bi t | 00 ii | słuchawki, kasowany po ;przetworzeniu ;Flaga nadawania |
fflash | bi t | 022l | ;Flaga flash” |
fhang | bb-t | o3h | ;Flaga zawiesennao rozmowy |
ftime | bb-i: | 00h | 'Flaga bloku czasowego 40 s |
fdigit | bii | 05h | ;Flaga impulsowggo wejjcia |
fonhook | b:Lt | 06h | cyfrowego 'Flaga odwieszenao ustawanno w |
fdtmin | bli | 00h | 700 ms po odłożeniu, kasowana 'następnym podniesieniem ;Flaga wejściowa dtmf |
inds | DATA | 21h | ;Wskaźniki-ten bajt zawiera |
174 142 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 | 0bh | ,'Kasuj wyświetlenie cyfry |
horn | bit | 0ch | ;Wskaźnik sygnału dźwiękowego |
f init | bit | 0dh | ;Ustawiany wyłącznie przez TRU! (1=inicjalizacja wykonana |
f start | bit | 0eh | ;1=przerwanie odłożenia zablokowane na 500 ms |
test enable | bit | 0fh | ;autotestowanie po pierwszym zdjęciu słuchawki ze ;względu ;na wibrację styków |
indasc | data | 22h | ;Sterowanie włączeniem wskaźników i fonii, ;ten bajt zawiera następujące bity: |
inuse | bit | 10h | /Wskaźnik pracy |
ap1 | bit | 11h | ;ścieżka fonii |
ap2 | bit | 12h | ;ścieżka fonii |
test_end | bit | 13h | |
;not_error | bit | 14h | ;bez błędu w samotestowaniu |
return ring | bit | 15h | |
error flag | bit | 16h | ;błąd samotestowania |
ring_second | bit | 17h | |
io_status | DATA | 24h | ;bity 18h-lfh |
strobe | bit | 1ch | |
flags2 | DATA | 24h | ;bity 20h-27h |
fdig_ready | bit | 20h | ;flaga gotowości cyfry |
174 142
fanswer | bit | 21h | /flaga odpowiedzi na dzwonek |
fsnndOimnr | bit | 22h | /flaga do nadania po 4 s |
f inusngffOimine | bit | 23h /flaga wskazująca działanie | |
funlgckOimnr | bit | 24h | bloku czasowego przy /sprawdzaniu wyłączenia lampki przy pracy /flaga do odblokowania po 4 s |
idtone | bit | 25h | /flaga wskazująca włączenie DT |
idecoder busy | bit | 26h | /flaga wskazująca, że dekoder |
dtmf nie jest | jeszcse skasowany | ||
ibellsound | bit | 27h | jflaga :L^1^a dzwonka |
px1 temp DATA | 25h | /bufor we/wy dla portu pxl-zawinra | |
bity: mi0nlq1 | bit | 28h | / z dekodera dtmf |
mi0nlq2 | bit | 26h | /z dekodera dtmf |
miteląJ | bit | 2ah | / z dekodera dtmf |
mi0nlq4 | bit | 2bh | / z dekodera dtmf |
power hold | bit | 2ch | /podtrzymuje zasilanie po |
awarii zasilania do | wyłączenia TRU | ||
sparel | bit | 2dh | /zapasowy pin I/O |
spare2 | bit | 2eh | /zapasowy pin I/O |
nO-ring | bit | 2fh | /zapasowy pin I/O |
px2 temp DATA | 26h | /bufor I/O dla portu px2 (30h-37h) | |
lggpswiOch | bit | 30h | /stan niski zamyka pętlę |
ring | bit | 31h | /stan niski włącza dzwonek ps |
mute | bit | 32h | /wyciszenie odbioru radiowego |
roh boost | bit | 33h | /zwiększa wzmocnienie dla tonu |
roh sw sendtimer | bit | 34h | /włączenie zwieracza daje |
opcjonalne nadawanie | ! 4 s | ||
sw dialOgnn | bit | 35n | /zwieracz włączgny=różnicgwy |
ton wybierania dla roam /wyłączony oznacza moduł
174 142 obsługowy modułu
sw gndstart podstawowy | bit | 36h | /IN=start pętli, OUT=start |
sw data | bit | 37h | /zwieracz włączony uniemożliwia, wyłączony umożliwia /przekazanie danych cyfry do TRU po nadaniu (dla /umożliwienia funkcji celi.switch) |
lamps temp | DATA | 27h | /zawiera bity: |
free | bit | 38h | /nie dotyczą koniecznie lampek-zapamiętują bieżący stan /wskaźników |
free | bit | 39h | r |
free | bit | 3ah | r |
free | bit | 3bh | r |
roamiamp | bit | 3ch | t |
noservlamp | bit | 3dh | t |
locklamp | bit | 3eh | t |
inuselamp | bit | 3fh | t |
flags3 | DATA | 28h | /pozostałe flagi - bajt zawiera następujące indywidualnie /adresowalne bity |
frohtimeout | bit | 40h | /ustawiony, kiedy rohtone |
występował przez 1 minutę
fcall | bit | 41h | /ustawiony przy wchodzącym |
połączeniu, | skasowany przy | jego braku | |
f one sec | bit | 42h | /ustawiony przy zdjęciu |
słuchawki na 1 s tak:, aby nie /powodować zdalnego odwieszenia, jeżeli słuchawka zdjęta /natychmiast po lokalnym odwieszeniu
174 142
roh_on | bit | 43h | ;włącza i wyłącza rohtone |
fspec1 | bit | 44h | ;flaga do wykorzystania z danym TRU przetwarzana w ;update_displays co 71,1 ms, wywołuje spec2 |
fspec2 | bit | 45h | ;flaga do wykorzystania z danym TRU przetwarzana w blokach ;czasowych odwieszenia i zdjęcia słuchawki co 277,8 us, /wywołuje spec2 |
fremote hup | bit | 46h | ;wskazuje zdalny impuls synchronizujący opóźnienie 700 ms |
flocktimer sekundach | bit | 47h | ;flaga zablokowania po 2 |
.*********************************************************** /Realizowane zadania TRU .*********************************************************** r
f_cmds DATA 29h ;opcjonalne własne numery zadań TRU ;Zadania TRU są wywoływane z programu głównego w module TRU.
f ;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 CTX30
174 142
3100Α i ustawienie w razie potrzeby trybu /cichego alarmowania (patrz tb^!
/ /Zadanie 2:
/ /a) Podwójna komutacja NAM dla NEC 3700 (patrz nae01) /
/Zadanie 3:
^Sprawdzenie braku zasilania dla NEC 37 00 (patrz nae01) /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 CTX3100A 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 Aueovwdox (patrz tae01 i tbe01) /b) Monitorowanie trybu cichego alarmowania w Autovidox CTX3100a i ustawienie w razie potrzeby trybu /cichego alarmowania (patrz tbe01) »9999'9999r999r99999,999r99t999f99999999f99999r99999f99999r999r9'999':999'99 r
/Obszar RAM 2ah do 2dh jest zarezerwowany do wykorzystania przez moduły TRU albo jako bajty DATA albo /poszczególne zmienne BIT.
.***********************************************************
/TRU-bitsl | data | 2ah | //oit5Oh. do | 57h |
/TRR_bwts2 | data | 2bh | /bit58h do | 5fh |
/TRU bits3 | data | 2ch | //ob^i^^(^ln do | 67h |
/TRU_bits4 | data | 2chi | /Łiit68łi do | 6fh |
/Używane do | tablicy | obsługi! | Sprawdź | podprogram tru! |
i o m_b | data | 2 eh |
#tdO | bit | 7 Oh |
#tdl | bit | 71h |
#td2 | bit | 72h |
#td3 | bit | 73h |
#dtmf_out | bit | 74h |
#enable_test | bit | 75h |
#enable_tone | bit | 7 6h |
#enable_tone | in bit | 77h |
io m c | data | 2fh |
#ext_led | bit | 78h |
#enable_special bit | 79h | |
#enable_busy | bit | 7ah |
#enable 16h | bit | 7bh |
#conn loop | bit | 7ch |
/bit 78h do 7fh /bit 7Oh do 77h f
/Reszta zmiennych wewnętrznych RAM (adresowałych BAJTOWO) ·***********************************************+*********** looptest_timer data 30h looptest_timer2 data display_delay data 32h dsp_ptr data 33h
LCD mikrotelefonu msg_ptr data 34h
TRU /opóźnia test pętli do 2 ms po /zwarciu loopsw dla umożliwienia 31h /odpowiedzi SLIC /opóźnia aktualizacje wyświetlacza do /kolejnych 71,1 ms /wskaźnik bufora wyświetlacza /wskaźnik bufora komunikatu .*********************************************************** /Następujące bajty są zarezerwowane dla modułów TRU do
174 142 wykorzystania tylko jako /bajty DATA (nie adresowalne BITOWO) .***********************************************************
/TRUthyteO | data | 38h# |
/TRUtbyaei | data | 3hh# |
/TRU^y^ | data | 3ah# |
/TRU—bytea | data | 3bh# |
,· TRUtbyte4 | data | 3ch# |
/TRUtbyte5 | data | 3dh# |
/TRUtbyte6 | data | 3eh# |
/TRU bytel | data | 3fh# |
/Stos daemuei bajty 4hh
5fh f
r /Wybierane cyfry są przechowywane w bajtach od 60h do 7fh w liczbie łącznej 32, /włącznie z kodem SND wykorzystywanym jako terminator .'*'*-k'k'*'k-**'*'k'*'k'k'k*'k'k'*'k'k'*'*'k*·*********************************:*:* t
prefix | data | 60h | :ważne tylko [0] i [1], jeśl |
nie, FFh | |||
first aigCa | data | 61h | /Pierwsze trzy lokacje w buforze cyfr |
aiconataigCt | data | 62h | / (numery alarmowe, nr kierunkowy, |
thirataigca | data | 63h | /początek numeru 7-cyffowego itp) |
.***********************************************************
174 142 'Definicje bitów portów, port1 i port2, 8051 (wspólne dla wszystkich bloków)
#tO—aelect | bb t | p1.2; | |
#dt pwm | bit | p1.4 | 'Pwm wybierania tonowego |
#twenty Sz pwm | bbt | p1.5 | 'Pwm 20 Hz dla dzwonka |
#;power—mltl— | bii | p1.6 | 'Wejście, 0=brak zasilania |
#1c_ | ba.t | p3.2 | 'Sprawdzanie obecności prądu |
pętli, (Extlnt0)
#ring_ground_ | bbt | p3.4 | 'Wejście: wskazuje | ziemię na |
przewodzie dzwonienia | ||||
#;strobe | bk | p3.5 | 'Wejście: gotowość | cyfry z |
dekodera DTEM | ||||
#a0 | bbt | p1.6 | ||
#a1 | bbi | p3.5 |
'Punkt wejścia przy włączeniu zasilania i wektory podprogramów przerwań:
org jmp | OOOOSo ini t | 'Wektor resetu |
org | OOO3ło | 'Wektor obsługi ExtIntO |
jmp | ofhook_edge | 'Pocbiiesienie, lasS wybieranie |
impulsowe db OffL,O7;fL,Q7rfL,Ofi, 'Wypełnienie dla Epromu i emulatora org 777bS 'Wektor (tlO^yc bloku Timer0
174 142 jmp onhook_timer /Do śledzenia czasu odwieszenia słuchawki db Offh,Offh,Offh,Offh
org | 0013h /Wektor obsługi Eetlnti |
jmp | intl_service /Zwykle służy do odczytu |
danych z | TRU |
db | 0ffh,0ffh,0ffh,0ffh / |
org | 001bh /Wektor (th0)svc bloku Timer1 |
jmp | offhook timer /Do okresowych przerwań bloku |
czasowego db 0ffh,0ffh,0ffh,0ffh /
org | 0023h /Wektor svc portu szeregowego |
jmp | ser port_device /Zwykle służy do odczytu |
danych z | TRU |
db | 0ffh,0ffh,0ffh,0ffh / |
org | 002bh /Wektor svc bloku Timer2/ext2 |
jmp | timer2_device / |
db | 0ffh,0ffh,0ffh,0ffh / |
org | 0033h /Wektor obsługi PCA |
jmp | pca service /Dla modulatorów srerokoici impulsu |
db | ”(c) Copyright Codecom |
db | 1992 |
$include(main.msg) $include(tru.msg)
174 142 init:
%set(intmask,0) /Zwykle dwa poziomy przerwań chyba że intimask w TRU, ;sekcji(TAE01.ASM:Audiovox) ustawiony na wartość różną od zera;
mov clr clr mov mov | sp,#3fh/ rs0/ rsl/ a, #0/ r0,#0/ | /Stos rozpoczyna się od 40h | |
/Wybierz bank rejestrów ;Jak wyżej ,•Wypełnienie RAM zerami ;Wskaż pierwszy RAM | 0 | ||
fill_ram: | |||
mov | @r0,a; | ;Pojedyiczo lokacje | |
inc | r0/ | ;Wskaż następną lokację | |
cjne | r0,#0,fill ram | /Koniec wypełniania RAMu | (FFh) |
clr | pl.2/ | ||
mov | rl,#laii_flag | ||
mov | @r1,#0 | ;Wczytaj następną flagę | |
inc | r1 | ||
mov | @r1,#0 | ||
inc | r1 | ||
mov | @rl,#0 | ||
mov | @rl,#0 | ||
cali | reset_io_m | ;resetuj tablicę obsługi | |
mov | io i b,#0 | ;zablokuj moduł | |
cali | write io i b | ||
mov | io_m_c,#0 | ;zablokuj moduł | |
cali | write io m c |
portu cali reset_io mov s2,#0f8h ;reset i/o rozszerzony do #13 ;ustaw p2 na sterowanie ekssaiderel
174 142 mov px1_0emp,01111111H /inicjalizuj razem z pgwnr_hgld ca11 write_pxl mov px2_0nmp,#11110011b /inicjalizuj: loopsw otwarty, brak dzwonienia
cali write px2 | ||
ca11 | read px2 | /wczytaj klucze opcji |
mov | 0mo0,000000011l /TiimerC jest podwójny, 0imer1 może być generatorem /taktującym | |
mov | ip,01001010b | /•ustaw priorytety pzrzerwań. |
mov | ie,#11001011b· | /•oe&louuj PCA. Umro, . ExOO, Tmr/Ext2, SnrPort, Extl /przez ίniajρlizaaję TRU |
setb | i00 | /ExtInt0 jest wyzwalany zboczem |
setb | it1 | /Extlntl jest wyzwalany zboczem |
mov | cmod,#8Oh | /wyłącz w itoane luPoow^, |
clock/12 | ||
mov | ch, #0 | /•ładj licznik górny |
mov | cl,#o | /ladj dolny |
mov | ccapOl,#0fff | /doO-ny bajt dla kogiopaaooa bloOu |
czasowego | ||
mov | ccapOh,,0 | /górny bajt dla kugiopaaooa Mokk |
czasowego | ||
mov | ccapmO,#04 9h | /PCA0: programowy blok czasowy |
mov | ^capl! ,0 | /PCA1: (Dial Tone) zostaje |
wyłączony | ||
mov | cacpm2,#0 | /PCA2: (pwm 20 Hz) wyłączony |
clr | t^l | /przerwaniowy bolok czasowy zdjęci |
słuchawki | jeszcze nie uruchomiony | |
clr | trr | /blok czasowy zawieszenia jeszcze |
174 142 nie działa /Inicjalizacja zmiennych bajtowych mov time_on1,#0 /inicjalizacja przerwaniowych bloków czasowych odwieszenia
mov | time_on2,#0 | |
mov | time_off1,#0 | ;inicjalizacja przerwaniowych bloków czasowych zdjęcia ;; słuchawki |
mov | time_off2,#0 | |
mov | time_off3, #0 | |
mov | flags,#0 | ; kasuj wszystkie flagi |
mov | flags2,#0 | /kasuj wszystkie flagi |
mov | flags3,#0 | /kasuj wszystkie flagi |
mov | inds,#0ffh | ,-wartości początkowe |
mov | indasc,Offh | ,-wartości początkowe |
mov | pulse_digit,#0 | ;0=nie osiągalna od teraz żadna |
cyfra impulsowana
mov | f_cmds,#0 | ;0=nie zadane żadne zadanie TRU |
/Inicjalizacja zmiennych | bitowych | |
clr | test_enable | |
clr | test_end | |
clr | error_flag | |
clr | return_ring | |
setb | fonhook | /1=zakłada odwieszenie słuchawki przy włączeniu zasilania |
clr | finit | ,,0=jeszcze nie zakończona inicjalizacja TRU |
clr | fremote_hup | |
clr | fcall | ;0=jeszcze nie ma połączenia |
wchodzącego (ALERT)
cali | clr—dsp |
Cali cali | clr_msg spiaifia inits |
mov | caαp41;#0ffh |
mov | caap4h;#0ffh |
mov | ccapm4,#48h |
or1 | cmod,#4Oh |
setb setb | cr tr0 |
/kasuj bufor wyświetlacza LCD mikrotelefonu /kasuj łoiufoor komunikatów TRU /dokoaaj iniujalZlaUji typowych dla TRU /dolny bajt dla u!owa kontrolnego /górny bajt dla jło wa kontrolnego /PCA4:odblGu^ komparator i przerwanie /o<blloSuj ^<yy blok czasowy /uruchom licznik PCA /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).
tim^wakeup:
ca11 watchdog mov a;time_ln2 cjne a;#255;eimi_śakeup przebudzenie TRU mov czsw_ęfndsta:rt
1=GS mov ^^switch—,c clr no_ri.ng ca11 śriti_px2 jmp start /podj upływ/ czasu /odczekaj tu 2,55 s na ;sprawdź zwieraćz GS-LS, 0=LS /zapisz tryb startu
174 142 $include(tru.asm)/moduł TRU, zatem przy assemblacji można otrzymać INTMASK .*·*************·****·****·************************************* /Start, i punkt ponownego wejścia po odwieszeniu .*********************************************************** start:
mov | r0,#60h | /wskaż początek bufora cyfr | |
mov | a,#0ffh | /wypełnij nie-cyframi | |
digbuf: | |||
mov | @r0, a | /lokacje pojedynczo | |
inc | r0 | /wskaż następną lokacje | |
cjne | r0,#80h, | ole_digbuf | /do 7fh |
mov | r0,#60h | /wskaż początek bufora | |
mov | ^,#0 | /inicjalizuj liczbę cyfr | |
setb | f^start | /^włącz deglitching klucza | |
hook | _switch | ||
clr | t/0 | /kasuj przerwanie w danym przypadku | |
setb | ee0 | /odblokuj przerwanie zdjęcia |
słuchawki, jeżeli zablokowane /Zamknięta pętla aż do wykrycia połączenia wchodzącego, albo podni/sτ/nia słuchawki w celu /wybierania.
hookchk:
ca11 watchdog jb tmsX_mnablm,do_Xest /jeżeli uaktywnione samot/stowanim mov fccmds,#1 /ładuj rozkaz ID
174 142 / cali trucra /wykonaj w razie potrzeby zadanie taskl dla TRU jb fhook]finsai /przerwanie, jeżeli zdjęcie słuchawki jnb fαnswer]hookchk /wróć:, jeżeli nie wykryto wchodzącego dzwonienia
jmp | ringtanswer | /odpowiedz na dzwonek, | zdjęto |
słuchawkę podczas trwania / | stanu | ||
ALERT (połączenie wchodzące)! | |||
yinsai: | |||
jmp | first | ||
dottes^: | |||
mov | rl,#raintflagtirron | ||
mov | @η,#0 | /ustaw błąd tonu jako | zajęty |
lub 1000 Hz | |||
mov | rl,#mainitflagt | error | |
mov | @rl,#0 | /ustaw błąd tonu jako | zajęty |
lub 1000 Hz | |||
clr | test^^ | ||
clr | errortflag | ||
clr | irrortflag | ||
mov | ri]#maintfiag | ||
mov | a, @rl | /wczytaj pierwszą flagę | |
ani | a,#00000001b | /sprawdź czy wykonano | hook |
caU | start hook test | /test odwieszenia |
test^o©!::
jb | error | flag, routerror | |
cali | dialt | test /test | wybierania |
tiat_aial | : | ||
jb | error | flag,routerror | |
ca11 | start | tdtmf /test | dtmf |
174 142 test_dtmf:
jb error_flag,rou_error call start^ring-test ;test dzwonienia test_ring:
jb error_flag,rou_error call start_riig_ais_test ;tpst odpowzedzi na dzwonienie test_ring_a:
jb | error flag,rou error | |
call | make_call | ;test połączenia |
jb | error_flag,rou | error |
call | until fin tim | ;wyjście bez błędów |
rou error: call | error acc | ;ładuj zmienną błędu |
; jmp wait_ein uitil_fin_til:
setb test_eid | |
clr tr0 mov time_on2,#0 | ;pzzp odwiellinip op 10 mis |
mov ttme_onl,#0 | /reetp np następnyhP 36 |
mov test min,#0 | /10 sp p 255=,55P s |
setb tr0 wait end: call watchdog | j-pozostań w tym miejscu do |
upłynięcia 1 minuty mov a,test_lii cjn a,##3,wait end | ;,25p x 23p = 60,88 |
call frn^c^lf | /wróp do nonaal |
jmp hook | ;wróć do normll |
i* * * ii iii-i: ki k i k k *(*;·)( k iii·*·* k k i •kk*; ** H k i f | |
; start Okkk_tlst - początek | testu kdwtlezliia słuchawki |
.λ******************************************************· |
174 142 start-hock-test:
mov | rl^main flag | 'wczy^aj, flagę iaain |
mov | a, @r1 | |
orl | l,#0777001b | |
mov | @r1,a | ;ustaw flagę zdjęcia słuchawki |
setb | enable test | ;ociZa<zz aparat |
clr | conn loop | |
cali | wr^e^o^^ | ;i dołąco moduł |
cali | reset io_m | 'resetjo tablicę obsługi |
cali | wr^e^o^^ | |
cali | write—iO—m_c | |
clr | loopawich_ | Odłączono druga stronę |
cali write_px2 testJSup:
setb | fremote_hup | |
cali | Sup | |
mov | ł^ps^er^, #0 | |
cali | write io_c | 'zaktualizj, LEDy |
mov | r6,#10 | |
nose: | ||
push | 6 | |
mov | γ6,#01 | ;mociuł zwłoki |
loop_m:
mov | r7,#0ffS |
djnz | r7,$ |
cali | watchdog |
djnz | r6,loop m |
mov γ6,#01 'moduł zwłoki
174 142
loop ma: mov | r7,#0ffh r7,$ watchdog r6,loop ma r6,#0ffh | |
djnz call djnz mov | ||
loop iUb: | ||
mov | r7,#0ffh | |
djnz | r7,$ | |
call | watchdog | |
djnz | r6,loop mb | |
mov | r6,#0ffh | |
loop_ | mc: | |
mov | r7,#0ffh | |
djnz | r7,$ | |
call | watchdog | |
djnz | r6,loopimc | |
pop | 6 | |
djnz | r6,nose | |
test_ | hup2: | |
clr | fanswer | |
clr | f hook | |
jnb | fhook,not_hook |
;moduł zwłoki ;moduł zwłoki
- O.K.
:kasuj flggę det ;niewykrycie zdjęcia słuchawki jmp hook_error not_hook_det:
setb fonhook setb conn_loop cali write_io_m_c mov r6z#0f ff /wykrycie zdjęcia słuchawki - błąd ;test zdjęcia słuchawki ące zdjęcie słuchawki do ; interij su ;i^o<^T^ł zwłoki
174 142 loop_m_off:
mov r7,#0ffh djnz r7,$ cali watchdog djnz r6,loop_m_off mov r6,#0ffh /moduł zwłoki loop_m_off2:
mov r7,#0ffh djnz r7,$ cali watchdog djnz r6,loop_m_off2 mov r6,#0ffh /moduł zwłoki loop_m_off3:
mov r7,#0ffh djnz r7,$ cali watchdog djnz r6,loop_m_off3 mov r6,#0ffh /moduł zwłoki loop_m_off4:
mov r7,#0ffh djnz r7,$ cali watchdog djnz r6,loop_m_off4 mov r6,#0ffh /moduł zwłoki loop_m_off5:
mov r7,#0ffh djnz r7,$ cali watchdog djnz r6,loop_m_off5 test_fhook:
jb fhook,detected_hook /jeżeli wykryto zdjęcie słuchawki - O.K.
/jeżeli nie wykryto zdjęcia - błąd
174 142
OnOnaOed_hook:
clr eeO | jzL^l^ZL^;kluj przerwanie odwieszenia do wystąpienia tonu /wybierania dla uniknięcia wybierania zakłóceniami /komutacyjnymi |
clr hhoOutout | /pokaz TRU zdjęcie słuchawki |
seOb hooUtwouO | /jak w^/ż^j |
clr fhook | / kasj flagę |
dO delayl: | |
cali waOahOoe | |
jnb la_,tOill_off | _hook |
jmp hooU_nrror | /błąd odwieszenia |
tti0l_off_hooU: | |
jb h_tOρrO,Ot_OnlαyO /zostanie ustawiony po nliminpaji | |
zakłóceń komutacyjnych 500 /ms | |
clr iie | /Upsuj flagę przerwania odwintznnla |
dla tego przypadku | |
seOb ex0 | |
seOb | /1=Dial Tone jest: włączony |
cali 00onn | /oidJ^oij Dial Tone |
ret | /wyjście z testu odwieszenia |
hook error: | |
mov r1,0main flag | error |
mov @r1,01 | /błąd SLIC odwieszenia |
setb nrror_flpe ret sprawdza ton wybierania .kkkk-kkkkkkkkkkkkk-kkkkkkkkkkkkkkkkkkk-kkkkkkkkkkk-kkkkkkkk-k-kkk /
0ial_0nst:
mov r1,0liain_flae /wczytaj flagę main
174 142
mov | a, @rl |
orl | a,#0000010b |
mov | @rl, a |
iriov | r6,#0ffh |
y_dial: | |
mov | r7,#0ffh |
djnz | r7,$ |
cali | watchdog |
djnz | r6,delay_dial |
mov | r6,#0ffh |
y_dia!2: | |
mov | r7,#0ffh |
djnz | r7,$ |
cali | watchdog |
djnz | r6,delay_dial2 |
clr | tri |
mov | time_off1, #0 |
mov | time_off2, #0 |
setb | tri |
/ustaw flagę tonu wybierania /opóźnienie zdjęcia słuchawki /opóźnienie zdjęcia słuchawki /odczekaj 711 ms na wykrycie wybierania verify_dial:
cali read_io_m_a ani a,#00000001b cjne a,#00000001b,dial_ok
O.K.
sprawdź ton wybierania /jeżeli 0 to wybieranie cali watchdog mov a,time_off2 /nie wykryto wybierania cjne a,#10,verify_dial /odczekaj 711 ms, jeżeli nie wykryto zajętości - błąd tonu /wybierania mov rl,#main_flag_error mov @rl#3 /błąd wybierania
174 142 ret dial_ok: ret • ★ ★ ★ ★ kdk k k k-k m m i k i m m m k f f i k k k -k i -k i m k k i -k i i i -k i k k k F /start_dtmf - początek dtmf start_dtmf:
clr | fdtone |
mov | ccapml, #0 |
ani | iO m b,#0fOh |
orl io_m_b, ttcero /wyślij 0 cali send_dtmf cali delay_dtmf
cali | disable_dtmf |
cali | delay_dtmf |
cali | get_test |
test_cero
cjne | a,#0h,dtmf_error_flag /sprawdź 0 |
ani | iO m_b,#OfOh |
orl | io_m_b,#uno /wyślij 1 |
cali | send_dtmf |
cali | delay dtmf |
cali | disable_dtmf |
cali | delay_dtmf |
cali | get_test |
test_l: | |
cjne | a, #lh,dtmf_error_flag /sprawdź 1 |
ani | iO m_b,#0f0h |
orl | io_m_b,#dos /wyślij 2 |
cali | send dtmf |
cali delay_dtmf cali disable_dtmf
174 142 cali delay_dtmf cali get_test test_2:
cjne a,#2h,dtmf_error_flag ani iO_m_b,#0fOh orl io_m_b,#tres cali send_dtmf cali delay_dtmf cali disable_dtmf cali delay_dtmf cali get_test test_3:
cjne a,#3h,dtmf_error_flag ani i 0_m_b,# 0 f Oh orl io_m_b,#cuatro cali send_dtmf cali delay_dtmf cali disable_dtmf cali delay_dtmf cali get_test test_4:
cjne a,#4h,dtmf_error_flag jmp go_to_5 dtmf_error_f1ag:
;sprawdź 2 /wyślij 3 ;sprawdź 3 'wyślij 4 ;sprawdź 4 'wyślij 5
jmp | error_dtmf |
go_to_5: | |
ani | iO m b,#0fOh |
orl | io_m_b,#cinco |
cali | send dtmf |
cali | delay_dtmf |
cali | disable_dtmf |
cali | delay_dtmf |
cali | get_test |
test_5:
cjne a,#5h,dtmf_error_flag ani i O_m_b,#O f Oh drl io__m_b, #seis cali send_dtmf cali delay_dtmf cali disable_dtmf cali delay_dtmf cali get_test test_6:
cjne a,#6h,dtmf_error_flag ani i 0_m_b,# O f Oh orl io_m_b,#siete cali send_dtmf cali delay_dtmf cali disable_dtxnf cali delay_dtmf cali get_test test_7:
cjne a,#7h,dtmf_error_flag ani iO_m_b,#OfOh orl i o_m_b,#o cho cali send_dtmf cali delay_dtmf cali disable_dtmf cali delay_dtmf cali get_test test_8:
cjne a, #8h, dtmf_error_flag ani iO_m_b,#0fOh orl io_m_b,#nueve cali send_dtmf cali delay_dtmf ;sprawdź 5 /wyślij 6 ;sprawdź 6 /wyślij 7 /sprawdź 7 /wyślij 8 /sprawdź 8 /wyślij 9
174 142
call disable dtmf | ||
call | delay dtmf | |
call | get__test | |
test 9: | ||
cjne | a,#9h,dtmf_error flag | ;sprawdź 9 |
ani | i0_m__b, #0f Oh | |
orl | io_m_b,#05h | /wyślij a |
call send_dtmf call delay_dtmf call disable_dtmf call delay_dtmf call get__test test_a:
cjne | a,#0ah,dtmf_error_flag | /odbierz a | |
ani | i0_m_b,#0f0h | ||
orl | io_m_b,#0dh | / es b | |
call | send dtmf | ||
call | delay dtmf | ||
call | disable dtmf | ||
call | delay dtmf | ||
call | get__test | ||
test_ | _b: | ||
cjne | az#0bh,dtmf error flagi | ||
jmp | go_to c | ||
dtmf | error_flagl: | ||
jmp | error dtmf | ||
go_to_c: | |||
ani | i0_m_b,#0f0h | ||
orl | io_m b,#03h | / es 3 | |
call | send dtmf | ||
call | delay_dtmf |
174 142 call d^able-b^f call delay_dtnif call get_test test^:
cjne k,#0bh,dtmf_eiior_flagf ani i0_m_b,#0f0h orl io_m_b,#0bh ;es d call send_dtmf call delay_dtmf call diaable_dtmf call delay_dtmf call get_test test_d:
cjne a,#0bh,dtmf_erior_flagl ani 10_m_b ,#0fOh orl io__ii_bi#07h ; ee 7 call sendidtmf call delayidtmf call disableidŁm^f call delayidtmf call get_test test_e:
cjne a, #0bh, dtbf_sii·oi_flagl anl 10_m_b, #0fOh orl io_m_b,#0fh ;;s f call asnd_dtbf call de^y-dŁmi call d1aabls_dtbf call de^yidtof call get-test test_f:
cjne a, #0bh,dtbf_siior_flagi ret bez błęddw
174 142 irnor_dtmf:
mov r1]ftraintyiαgtinror mov @rl,#4 /błąd setb enrortflαg ret f
/ataratningtteat - początek testu dzwonienia ·++★+++++++++++★++++★+★++++++++++++++++++++★++++++++++++++++ aaara_ning_test:
mov | n1]#:raCntyiag |
mov | a, @r1 |
orl | a,#00001000b |
mov | Sr^a |
clr | ring second |
clr | conn loop |
call | write io m c |
setb | fnirote hup |
call | hup |
mov | r6, #6 |
loop ring | wait: |
push | 6 |
mov | r6,#0yyh |
iooPtmlb: | |
mov | r7,#0ffh |
dj^ | r7,$ |
cali | watchdog |
djaz | r6,iooPtmlb |
mov | r6,#0ffh |
^op^cc:
;rcicjuj dzwonienie ;rczdZat flagę main /ustaw flagę testu dzwonienia ,· ssuuhawka odłożona /zwłoka /zwłoka
174 142
mov | r7,#0ffS |
djnz | r7,$ |
call | watcSdog |
djnz | r6,loop mcc |
pop | 6 |
djnz | r6,loop ring wait /•połączenie wchodzące |
clr | apl ;tntdj)dj połączenie wchodzące |
jb | lc_, loop—ring—Of |
jmp | ring flag |
lccP-ring-O: ;wrac<jj tu dopóki nie rozpocznie się dzwonienie Iub
clr | tr0 'upłyną 2 s |
mov | time on2,#0 |
mov | time onf,#7 |
setb | tr0 |
wait 2 sec:
call | watcSdog |
jnb | fanswer,not answer |
jmp | ring flag 'błąd wystąpienia odpowiedzi |
not answer:
call | write io m a |
ani | a, #000001003: |
cjne | l,#77077ł77b,rtng starts 'jeżeli 7-rozpoczynl się dzwonienie |
mov | a,time on2 'sprawdź, czy upłynęły 2 s |
cjne | a,#200,wait 2 sec 'czekaj 2 s do zatrz^maania dtmf |
jmp | ring flag 'upłynęły 2 :3, błąd |
rtng_atlrts:
mov r6,#0ffh 'zwłoka loopjmbbc:
174 142
mov djnz | τ7,00ϋΗ r7,$ | |
caOO | wp0ah0oe | |
djnz | r6,loop mbbc | |
mov | r6, 00ϋή | |
Ooop iiccO | ||
mov | Γ7,00ϋ | |
djnz | r7,$ | |
calO | wa0ahOoe | |
djnz | r6,Ooop mccd | |
ring | ^ΟργΟ: | |
cOr | 0r0 | |
mov | tirne-O^, 00 | |
mov | Oim-OnO, 00 | |
setb | 0r0 | |
wpit | ||
caOl | wa0ahOoe | |
jnb | hantwnr,no0 answerl | |
jmp | rine_hOρe |
/zwłoka no0_αntwerl:
cali rnaO_eo_m_a test-lSO:
ani p,0000001001 ;sprawdza ciągłość dzwonienia w 1,3 s /sprawdda dzwonienie w ciągu 1,3 s /błąd wystąpienia odpowiedzi /powinien być niski podczas 1.3 s cjne a, Ο000001001, rine__expirn jmp rine_hOpe / dzwonienie zanika w 0,3s rine_expire:
mov a,0ime__on2 cjne a,090,wpi0_130mtna /czekaj 130 ms wpi0_250mtea: /dzwonienie powinno ustać po
1,5 s
174 142
cali watchdog | |
cali | read io m a |
test 250: | |
ani | a,#00000100b |
cjne | a,#00000100b |
test_stop: | |
jmp | ring stop_ |
ring_not_expire:
mov a,time_on2 cjne a,#250,wait test_flag:
;ale czekamy 2,5 s na sprawdzenie, czy /ustanie /powinien być niski podczas powyżej 2 s ,ring_not_expire /dzwonienie zanika przed 2,5 s /po 1,5 s powinien być wysoki 250msec /czekaj 250 ms
jmp | ring | flag | /błąd nieustania dzwonienia w 2,5 |
stop | /czekaj 2,55 s | ||
clr | trO | ||
mov | time | _on2, #0 | |
mov | time | oni,#0 | |
setb | trO |
wait_2seca:
cali watchdog jnb fanswer,not_answer2 jmp ring_flag /błąd wystąpienia odpowiedzi not_answer2:
mov a,time_on2 cjne a,#255,wait_2_seca /czekaj 2,55 s do zatrzymania drugiej pętli dtmf jb ring_second,ring_stopl /sprawdź dzwonek 2 razy jmp loop_ring__off /rozpocznij jeszcze raz ring_flag:
setb apl /kasuj połączenie wchodzące mov rl,#main_flag mov @rl,#5 ;błąd dzwonienia setb error_flag ring_stopl:
test_timbre:
ret /wyjście bez błędu /start_ring_ans_test - odpowiedź na dzwonienie
Z start_ring_ans_test:
/inicjuj dzwonienie
mov | rl,#main_flag | /wczytaj flagę main |
mov | a, @rl | |
orl | a,#00010000b | |
mov | @rl, a | /ustaw flagę testu dzwonienia |
loop_ring_off2: /wracaj tu dopóki nie rozpocznie się ponownie dzwonienie clr trO mov time_on2,#0 mov time_onl,#0 setb trO wait 2 sec2:
call | watchdog |
jnb | fanswer,not answera /wyjście przy odpowiedzi |
jmp | ring flag |
not answera: | |
call | read_io_m_a |
ani | a,#00000100b |
cjne | a,#00000100b,ring starts /jeżeli 0-odbywa się |
dzwonienie | |
mov | a,time on2 /sprawdź, czy upłynęły 2 s |
cjne | a,#200,wait 2 sec2 /czekaj 2 s do zatrzymania |
jmp ans flag /upłynęły 2 s
174 142 rńng_ppeeent:
setb | conn lup / | odpowieH ow ezwanżanćw |
cali | wenei io m c | |
mov | e7;#0ffh / | zcśola alt aste’αlnnnw fannwer |
wait ans: | ||
mov | #0ffh | |
djuz | ζ6,$ | |
call | wleahdlg | |
djnz | ζ7^ζϊ] ans | |
mov | e7;#0ffh | |
śanepaΩSl | ||
mov | e6;#0ffh | |
djuz | $ | |
call | watchdog | |
djnz | e7;wantpansa | |
test ans: | ||
jb | flnsśie;lk ring | /jeżeli jest lnpleirnź; to O.K. |
jmp | anspflag | nie wystąpił błąd |
ans flag: | ||
mov | ζΙ,^ζϊπ. flag | |
mov | @ζΙ,#6 | /błąd ncelnirniα |
setb | flag | |
setb | apl | |
clr | fanswer | |
ret | ||
^.ring: | /wyjście bez błędu | |
timbre: | ||
clr | fanswer | |
setb | ap1 | /kasuj połączenie wchodzące |
ret
174 142 .*********************************************************** /make_call - zestaw połączenie dla sprawdzenia radia •i********************************************************** r
mov | rl,#mainl_flag |
mov | a, @rl |
orl | a,#00000001b |
mov | @rl, a |
test mute | |
jnb | power_,power is ok |
linii powinien być niski (0) | |
mov | rl,#mainl_flag error |
mov | @rl,#l |
setb | error_flag |
jmp | pre onhook |
power is | ok: |
mov | a,#func |
cali | wrbus |
mov | a, #7 |
cali | wrbus |
cali | clr dsp |
mov | a,star |
cali | wrbus |
/wczytaj flagę mainl /ustaw flagę testu połączenia /jeżeli radio jest O.K., stan / ustaw błąd zasilania /funkcja odczytu nr telefonu mov r7,#0ffh /zwłoka na przesłanie numeru do interfej su wa?it_min:
mov r6,#0ffh djnz r6,$ cali watchdog djnz r7,wait_min mov r7,#0ffh
174 142 waia_mCna:
mov | r6,#0ffh |
r6, $ | |
Call | watchdog |
aend | r7,wait mina |
mov | a,#9 |
call | wrbus |
mov | a,#0ah |
call | wrbus |
/generuj połączenie ze swoim nurerir telefonu
mov | a^dspbuf start | /po^erz | aktualny wskaźnik |
add | a, #3 | ||
mov | rl, a | ||
mov | a, | /odczytaj | komunikat w |
anl | a,,ffh | ||
call | wrbus | ||
inc | rl | ||
mov | a, @rl | komunikat w | |
ani | |||
cali | wrbus | ||
inc | rr | ||
mov | a,@rl | /^czytaj | komunikat w bbfcond |
ani | a,#ffh | ||
call | wrbus | ||
inc | n | ||
mov | aa ,η | /sdahyZaj | komunikat w bbfcrnd |
ani | a^fi | ||
call | wrrbs |
174 142
inc mov an1 call | rl a, a,#ffh wrbus | /odcztaaC komuniaaC | w buforze |
inc | t1 | ||
mov | a, @rr | /odcztaaC kkimnikat | w buforze |
anl | a, #ffh | ||
cali | wrbus | ||
inc | rr | ||
mov | a, @γ1 | ;odczyaaC kknmnikat | w buforze |
ani | a,#ffh | ||
cali | wrbus | ||
inc | t1 | ||
mov | a, @γ1 | /odczyajC ^πΐϋΐίkat | w buforze |
anl | a, | ||
cali | wrbus | ||
setb | fsend | /ustaw flagę aadawania | |
mov | a, ,#emd | /zestaw połączenie | |
cali | wwIus | ||
setb | emnaie special | :odbokuuC | |
cali | writm To m c |
t/stjnutel:
clr | mutm | /nie wyciszjj |
cali | writm pe2 | |
clr | XiT | /zwłoka na sprawdzenie pracy |
mov | txme_offi,#0 | |
mov | Xime_of f2(#0 |
174 142 setb tri delay_call:
mov | a, time_off2 | |
call | watchdog | |
cjne | a,#80,delay call | ;czekaj 1 ? s |
test_mute2 | 1 · | ;test tonu zajętości |
clr | tri | ;zwłoka na sprawdzenie pracy |
mov time_offl,#0 mov time_of f 2, # 0 mov time_off3,#0 setb tri cont_waiting:
jnb | inuse,still inuse | |
mov | rl,#main_flag error | |
mov | @rl,#4 | ;ustaw błąd pracy |
jmp | call error | /jeżeli znika iube ustaw błąd |
still_inuse:
call ani cjne | read_io_m a 'sprawdź ton wybierania a,#00000001b | ||
a,#00000001b,busy ok 'jeżeli | 0, | zajętość O.K. | |
call | read_io_m a ;sprawdź | ton | wybierania |
ani | a,#00000001b | ||
cjne | a,#00000001b,busy ok 'jeżeli | zajętość lOOOkHz-to | |
O.K. | |||
mov | a,time_off3 ;nie wykryto | zajętości | |
call | watchdog | ||
cjne | a,#lh,cont_waiting 'czekaj : | 18,2 | s jeżeli nie |
wykryto zajętości
174 142 mov rl,#mainl_flag_error
mov @rl,#3 | ;ustaw błąd tonu zajętości lub 1000Hz |
call_error: | |
mov a,#endl | ;zestaw połączenie |
cali wrbus | |
setb error_flag | /jest, i słuchawka odwieszona |
jmp pre onhook | |
tlOOOhz: | |
busy_ok: | |
mov a,#endl | /zestaw połączenie |
cali wrbus pre_onhook:
clr | conn loop | /jest, i słuchawka odłożona |
cali | write_io_m_c | /i przyłącz moduł |
cali | hup | |
ret |
.*********************************************************** ;error_acc - ustaw kod błędu .*********************************************************** error_acc:
mov rl,#main_flag_error mov @rl,#4 /błąd cjne a,#1.check_hook_ring mov rl,#error_code ;błąd odwieszenia SLIC mov @rl,#l jmp exit_error
174 142 cOlck_hkkk_riIig:
cjne α,#2.cOlck_niαl_flag
mov | ρ1,#ιρρ^ code | ;błąd | knwllezliiα przy |
nlwkileiiu | |||
mov | @p1,#2 | ||
jmp | exit ippop | ||
check dial | _flag: | ||
cjne | a, #3.οΟιο^^^ | flag | |
mov | rl, #error_code | ;błąd | wybierania |
mov @rl,#3 jmp exit_errop cOelk_dttlf_faag:
cjne | a,#4.check hook ping | ||
mov | rl,perror code | /bbłd | dtmf |
mov | @rl,#4 | ||
jmp | exit esprozp | ||
check ping | l_flag: | ||
cjne | a,#5,c0lck ping | ans flag | |
mov | r 11 #er r orr _ | wykrywania dzwonienia |
mov @rl,#5 jmp exit_error cOlck_pΊig_ais_flag:
cjne a,#6,c0lck_pkwlP_flag | |||
mov mov jmp | p1,#ippop code @rl,#6 exit erszroor | ;lołąd | odpowiedzi na dzwonienie |
check power flag: | ;sprawdź flagę połączeń | ||
mov | r1,#malil_flag_lppkp | ||
eov | a,@rl | ||
cjne | α,#1,c0lck call_ | test | |
mov | pl, ^pror^^e | ;błąd | zasilania radia |
mov | @rl,#7 | ||
jmp | exit error |
174 142 ahrakpaαll_trst:
cjne z^ż^Łeck busy test | |
mov | ρΙ^τ^Ρ-ΜΙτ /błąd xxx |
WOV | @ρ1,#8 |
jmp | rxit rrror |
check busy test: | |
cjne | z^S^^ck inusr test |
miv | Γΐ,^ΓΓίΓρΟοάθ /Ł>łącl tonu aaeoyanci |
mov @e1,#9 jimp rxwtpreelr ahrak_inssr_test:
cjne | ||
miv mov jmp | γΙ,ΑΤγγιγ ^Ιτ 0γΙ,#10 rxńtprerir | /błązL stanu picwy |
check 100C | i_trst: | |
cjne | ι^δ^κΐ] reeie | |
miv | e1, ^me^ili | /błąd tonu 0000 Hz |
miv | @γ1,#11 | |
jmp | rxi] reeor |
rxit.error:
ret • * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /ain_srlf - powrót do noemal • * * * * k * * k * k *k k k * * * * * * * * * * * * * * * * * k * k k * * * k k k k ** k k k * * kr kr k k * * * * * * k k
fin self: | ||
cle | cinn liip | /jise lneirscrnir słuchawki li |
czll | erier_nl_m_a | / interfejsu |
czll | hup |
142
clr | enable test | ;dołącj aparat |
cali | write io mb | ;i odłącz moduł |
clr | test enahle | ;iniuja1iuj test main |
clr | test end | ;kończ test |
clr | error flag | ;flaga błędu |
jnb | siioi_flαg,turn | _on led |
clr | ext led | ;wyłącz LED zewnętrzny podczas |
testu | ||
cali | write io m c | z-włącz/wyłącz LED zewnętrzny |
cali | loop bad |
tuin_on_lsd:
setb ext led μ11 write _omc | ;wyłącz LED zewnętrzny podczas testu ;włącz/wyłącz LED zewnętrzny | |
cali | Iccp-bad | |
clr | eetlfd | ;wyłącz LED zewnętrzny podczas testu |
cali | wrrie iomc | ;rłącz/ryłącz LED zewnętrzny |
cali | Icap-bad | |
setb | cett-id | ;wyłącz LED zewnętrzny podczas testu |
cali | wadit _o mc | ;rłąoz/ryłącz LED zewnętrzny |
cali | loop-bad | |
clr | est_iιS | ;wylącz LED zewnętrzny podczas testu |
cali | wri1t_COa_ c | /włącz/wyłącz LED zewnętrzny |
cali | loop bad |
174 142 setb exttlid cali wnCtitiOtmth cali loop-tbad clr exatlia cali rrCaetCo_rtC cali loop__bad /wyłącz LED zewnętrzny podczas testu /włącz/wyłącz LED zi/męarzny /wyłącz LED zewnętrzny podczas testu /włącz/wyłącz LED zewnętrzny loop_baa:
mov r7]#0CCh zwłoka na fatarCenie fseaansren raCttenl:
mov n6,#0ffh djnz r6,$ call rαachdog denz r7,raCaterl mov r7]#0CCh raCaterl>a:
mov ζ6,#0^1 denz z6, $ call raahhdog denz r7,rαiaterιba ret /wejdź tu po podniesieniu słuchawki w celu wybierania
CCzsZ:
cali hlrJrsg /kasuj poprzednie komunikaty
TRU clr ex0 /zablokuj przerwanie podniesienia słuchawki aż do tonu /wybierania, w
174 142 clr hookswout setb hookswout clr hook celu zapobieżenia wybieraniu zakłóceniami 'komutacyjnymi ppowiadom PTR o podniesieniu ;ja0 wyżjj ;kssj0 flagę dt_delay:
cali mov cali jb clr watchdog _cmda,#4 ;UWAAA : INT0 o TIMERO są w tym miejscu zawieszone - nie 'używać żadnej specjalnej funkcji TRU bazującej na tych 'przerwaniach trucmd 'wykonuje rozkazy specjalne TRU f_atlrt,dt_delly 'zostanie ustawiony po 500 ms eliminacji zakłóceń 'komutacyjnych ieO 'kasj, flagę przerwania ppr^i^^^^^ia słuchawki dla tego 'przypadku jnb lC—,llert—CSeck 'wyskocz, jeżeli słuchawka zdjęta po 500 ms teat_lcł:
cali Sup jmp start 'słuchawka odwieszona na powrót w ciągu 500 ms alert_cSeck:
setb ex0 'ponownie ocióloSd0 przerwanie zdjęcia słuchawki (DT już 'włączony) jb tnuae,mlke—dt 'wyskocz, jeżeli nie INUSE, jesteśmy gotowi do wybierania 'jeżeli już IIUJSE , to jmp wait
174 142 prawdopodobni/ występując/ /podiτmsi/ni/ słuchawki odpowiada na połąoz/ii/ wchodzące /podnosimy słuchawkę na 500 ms w celu gmnmeaojτ tonu ,^ζΙΤ/ιηπϊβ make_dt:
s/tb | fdton/ | /l=DiaC Tonc włączony |
cali | dton/ | /odblkku( DiaC Tonę |
cali | g/X | /pob/erc znaC luC wjjdć w razie odwieszenia |
jb | inns/zch/ck pr/fie | |
clr | fdton/ | |
mov | ooapml,#0 | |
jmp | wait | |
ch/ck pr/fie: | ||
jb | lock^r/fTe 0 | /wyskocz, j/ż/li TRU ni/ |
zablokowane cjn/ a,#pound,nos/id /wyskocz, j/ż/li zablokowany, ważny tylko # (odblokowani/)
pe/fix 0: cjn/ jmp | a,#zmel,pe/fie 1 /wskocz,c | jeżeli nie[0] | |||
ktn/j-t | /skocc do prefiksu | zapamiętania | [0( | jako | |
pr/fie 1: | |||||
cjn/ | a,#1,no pr/fie | /wskocz,( | jeźelć nie[l( | aHo | |
jmp ; | stor/ TX | /skocc do | zapamiętania | [10 | jako |
prefiksu io_prefix:
inc | r0 | ,-pozostaw prmerziaC preTóksu n/e (FFh) |
Tnc | i2 | ,U^cc zwękSzc lidbc <^^1γ |
/Zapamiętaj aktualną cyfrę T następną aż do czasu ich
174 142 wysłania, storę it:
cjne rO,#7fh,do_store_it /wyskocz, jeżeli bufor cyfr jeszcze nie zapełniony jmp check_number /wyskocz, jeżeli bufor pełny, bez zapamiętania do_store_it:
mov @rO,a inc rO /zapamiętaj cyfrę /przesuŃ do przodu wskaźnik bufora cyfr /sprawdź wprowadzone cyfry i przeanalizuj je na ważność sekwencji.
check number: | |||
clr | fsendtimer | /upewnij się, że wyłączony | |
mov | a,first_digit | /wskaż na przedział pierwszej | |
cyfry | |||
cjne | a,#0ffh,check | _one | /wyskocz, jeżeli wprowadzono |
jako | pierwszy znak cyfrę | ||
jmp | check send | /w przeciwnym przypadku |
sprawdź, czy czas na wysłanie check_one:
cjne a,#pound,check_send /wyskocz, jeżeli nie [#] (zablokowanie, odblokowanie itp) mov a,second_digit /wskaż na drugą cyfrę, jeżeli pierwszy jest [#] cjne a,#0ffh,check_two /wyskocz, jeżeli wprowadzono jako drugi znak cyfrę jmp check_send /w przeciwnym przypadku sprawdź, czy czas na wysłanie check_two
174 142
cjne a,#SkUin,kOeck_ial /-wyskocz, (jeżeli ,1ι[#][#] | |
(blokowanie lub odblokowanie) | |
mov a,,hótp ciicjil | ;Dwa ## mogą oznaczać zablokowanie Iub odblokowanie |
cjne α,souin,kOlkk | unlock # oznaczają zablokowanie |
jnb 1ooc,ΐϋ osnd | ;nte blokuj/ C^fśZLi zablokowane |
Cip lockiC: | ; [#] [#][#] oznacza |
zablokowanie cOlck_nam:
cjne a,#etap,cOlck_elin ;ekkcl, jeśli nie sekwencja [#][*] cjne jmp ciOek a,WhOtP_digit ;w przeciwnym. przypadku pobiec również trzeci znak cyfrę a,#0ffO,cOlck_ialιl ;wyekkcl, jeżeli wprowadzono jako trzecią cyfrę /w srzeciwi'Izmo prz^adku sprawdź, czy czas na wysłanie check-narnl: mov cali truc^ ;załaduj numer funkcji, następnie skocz ;SPlląąkl na inny NAM /Przerwlj przy niedozwolonych elkwlicCakO cyfr (wybierania). ikelin:
clr | funiokkttlϊln | ;byZącoenie bloku polaewego odblokowania, znak # go ustawia |
setb | fokiLOkk | jak w przypadku onwieellnia |
setb | itO | ;ekkcz do funkcji obsługi ExtIntO |
Cmp | sstar | jak przy ponownym podniesieniu słuchawki |
hhihk_fnlock:
cjne a,#0fCh]UnlohkingtCa /wyskocz, jeżeli jeśli wybrano jakąkolwiek cyfrę po ##
jmp check send | /w przeciwnym przypadku sprawdź, czy czas na wysłanie |
unlocking it: | |
setb funlohkairir | /rrZśi po 2s bbe kodd SSD |
jmp gittnexa | /dla uniknięcia wysłania kodu odblokowania jako cyfry ważnej |
/Wejdź tu, jeżeli sekwencja cyfr nie kwalifikuje się jako któraś z funkcyjnych opcji specjalnych /(blokowanie, oablokoryrαnCe, podwójne NAM, itp.).
haihk_aena^:
jb artainatimer]hhehktCnal /skocz, jeśli swin,
oabiokorani połączenia wewnętrzne | |
setb Cainaaimir | /odblokowane nadawanie p o 4 s, jeżeli sw7=0 |
emp giatnext | /i na oorrót] po następną cyfrę |
hhehk_Cntl: | |
rov ζ^ζ^ϊχ | /testuj prefiks w akumulatorze |
cjne a]#0]ChihO op | /skocz, jeśli nie [0] |
a, f^st dCgit | /w przeciwnym przypadku pierwsza cyfra właściwa |
cjne a,#1,haih0tOp | ^Ιαχ/,, jeśli nie [1], może być wywołanier operatora |
setb fainaairin | /połączenie międzynarodowe ! rozpoczyna się na 01-.. |
j/p get next | /na powrót pło resztę, teraz nadaje tylko blok czasowy! |
check op:
174 142 mov α,pisfit ^obierz cyfrę prefiksu ponownie cjns a,#10,ohsok_asiv1os ;akaoz, jeśli prefiks jest nie 0 cjns i2,#0,ohsok_asiv1oe ;akαoz, jeśli cyfra (cyfry)
setb fasndelbsi | wybrana również ;w przeciwnym przypadku może to być przywołanie operatora |
check-Service:
cjns i2,#3,ohsok_d1atanos ;akaoz, jeśli nie 3 cyfry
mov a,sscond digit | ;w przeciwnm pr^ypadku, . jeśeii alarmowe, informacje itp |
cjns a,#1,ćhsok_d1aeanos ;akaoz, jeśli drugą cyfrą jest 1 mov a, ehiid_d1g1t ;pał1siz trzecią cyfrę cjns a,#1,ohsok_diatanos ;akaoz, jeśli., jeżeli trzecią
jmp ssnd it | cyfrą nie jest 1 ;prawdopodobnie alab]arwo . wyliij |
check distance: | |
cjns r2,#10,chsok_lαoαl | ,Ozy wybrano 10 cyfr? |
jmp sendcit | ;wyś1Uj lO-t,. jeżelj nie międzynarodowy |
check-clocal: | |
cjns i2,#7gse nett | ;skoco. jeśli wybrano moSu,. nij 7 cyfr |
setb fasndelbsi | ;przyaoSuj wysłanie w ciągu 4 s |
mov a,sscond digit | ;poltie2rz drugą cyfrę |
subb a,#f | ,·eoy jt jest #1? |
jz gst nett | ;eaoαo, jsślt tak, może bćć kierunkowy lub lokalny |
mov a,sscond digit | ;pobierj ponowoie drugą cffrę |
subb i,#10 | ^cy tt jest 0? |
j z gst_nstt | ;eaoao, jsżsli tak, ooS. to być nr |
174 142 kierunkowy, może być lokalny
clr | fsendtimer | /nie pobiorjj więcjj, w^yzś^O^j_j 5 s |
później | ||
jmp | send it | |
ge0 | next: | |
inc | r2 | |
cali | get | /Oobinrz nową cyfrę |
jmp | s0ore_it | /dokonjj wszystkich, sprawdzę ń z |
nową cyfrą • kkk-kk-kkk-kkkkkkkkkkkkk-kkkkkkk-kk-kkkk-kkkk-kkk-kkkk-kkkkkkkkkkkkk* t
/Wybieranie wykonane, wyślij numer • kkkk-k-k-kkkkkkkkkkkkkkkkkk-k-kkk-k-kkkkkk-kk-kkkk-k-kkkkk-k-kkkkk-kkkkk-k r
/Sprawdź, czy TRU jest zablokowane, i przerwij, jeżeli nie wprowadzono kodu odblokowania ^nd-it:
jb loak,sendl /sOcc,. jeżeii TRU nńe jeot zalloUowann
|gaUnd: | ||
jb, | Ohird digiO | j·pobnece trzecią cfltę |
cjne | p, 00ffh,sencH | j·sOack . jeśii wprrowodoono |
cyfrę | ||
jmp | ^^πΟ | /•nńe wseia^ . jeżeii nie |
wprowadzono kodu odblokowania /Wyślij wybraną cyfrę.
^π01 :
setb mute /wycisz odbiór rx fonii
177 1 42 call write_px2 mov @r0,#aend mov a,#clear cali wrbus ;wstaw wysanneo no końuu cfr ; kod kasown^a ;wstaw njjpierw kod kasowana, w celu skasowania wszelkich cyfr z pamięci TRU w przypadku wprowadzenia z mikrotelefonu jako pierwszego
mov | r0,#60S | 'reseuj0 wslainik nmmęcii |
mov | a, @r0 | wwstaw pr^miis, do ak'^msuitOoaa |
cjne | a, #fJs, out | |
inc | rO | ; zrzuó pe^isE, jeSfió FF |
out: | mov a^rO | |
cali | wrbus | ;wpsso no manSetlfgę |
dab | fSaag—a end^ k | |
test_ | _lc2: | |
cali | Sup | ;zakońco podarniO,o jeSfii |
odwieszenie | ||
jmp | start | |
sond | _ok: | |
inc | r0 | |
cjne | a,#sed^ out | ;prγetsγmldO do kodu SND |
setb | fsend | 'wymo flagę nadawnnia |
clr | mute | 'odlloUd0 fonio rx |
call | write px2 |
'Wybieranie zakończone, cyfra warunkowego ecSa do TRU, potem czekaj na następne ewentualne cyfry ;(wewnętrzne itp.) lub zezwól na przejęcie sterowania przez przerwania.
wait:
call get 'sprawdź cyfr z aparatu MJ
174 142
jnb | sw data,wait | /ζϋ^ΐά^ό daną po zablokowaniu snd |
call | webus | /w przeciwnym przypadku wyśljj daną |
do TRU | ||
jmp | wzit | /pozostań w pętli do czasu |
podniesienia słuchawki przez nas /słuchawki lub drugą stronę
/Generator Dial Tonr .*********************************************************** /Trn podprogram wybiera i generuje odpowiedni ton wybierania, zależnie od naszego bieżącego stanu / (roam psahlmy; hoHie - wywołujący itp) lelnr: push psw jb tlak;srpv_ahrak mov npee;#eαblr_35C /350 Ho dla blokowania jmp elne_lse srev_ahrak:
jb nlsepV;Plαm_ahrak mov npeP;#eαblrp620 jmp elnrplue eozm check:
jb se_nnalelnr;nlpmal /ton 620 Hz dla sygnału nnrlbsługneαnnα /jeżeli opcjonalny sw jest zamknięty (=0) wytwarzaj ton /póżnnalew wybierania dla eozm jb putm, noema mov ^te^tib^ roam /440-620 Hz dla roam
174 142 jmp tlnm_lkX nurnal: mov dpXe,#tabbm_dt /350 - 440 Hz (normalne
DT) tonę out:
mov | llwplτnt,dpl | /zapamitaaj c gdzie e:Q'//locz\ia^ί |
mov | hTghp!TnX,dph | kię tablica |
mov | ccapml,#01000010b | /o<bllokuj ton |
pop | psw | |
r/t |
/Pllimer cyfrę z klawiatury mTkelX/leelik • '*^^('k'k^'k'k'k^c'k’k^i(^e‘k'kki4'k'k^^4'k'k^^4'k'k^('i('*^^(-k'k-k^^('k'k-ki(^(-*'kk!'k'kk^e'k'k^k'k'k'kk:
/Podprogram przetwarza wchodzące cyfry i/lub flagi przetwarzania /Przy powrocT/, zwraca daną w akumulatorze
g/t: push | psw | |
g/tl: | ||
mov | f omdkj#3 | /flaga wskazuje stosowaną funkcję |
call | trucmd | /wykonuje któreś z poleceń |
call | watchdog | specjalnych TRU |
/Cr/kaj na impuls, j/ż/lT impuls ni/ został oznaczony przez EXTINT0(0ee_Hllk_S/eviom) flagą jako /impuls wejściowy wzbimeailia, sprawdzamy jako cyfrę wejściową DTMF. j/ż/li stanowi sygnał wejściowy λ^ζΙ^ι,^, impulklwmgl, odbywa kię
174142 77 w dalszym ciągu zliczanie ilsulerw, aż do upłynięcia 250 ms po ;knlbpaiiu ostatniego impulsu. W tym lilCeku uważamy za zakkńklkin lnetawlαiln cyfry wybilPailC ;ilsuleowk, tak że kopiujemy ją do akumulatora i ustawiamy flagę fnig_Plany.
get_pulse:
jnb | fdigitIgnh dtmf | |
clr | fdtom | ;kasuj flagę tonu wybLieirania. |
mov | ccapml,#0 | ;wyłącz ton wybierania |
mov | a, #2 | ;jeżeli występuje sygnał wejściowy |
clr | c | ;kasuj przeniesienie przed knljlkwanill |
subb | a, himl_kff3 | ;eprawdW] czy upłynęło 213,3 ms (3x71,1 ms) |
jnc | get_dtmf | ^ιΙ-ιΙ! jeszcze ni, p tp cyfra nie jest pełna |
mov | a,#131 | |
clr | c | ;kasuj przeniesienie przed kneClkwαiill |
subb | a,tlml_kffl | ,·sprawdW] czy upłynęło dodatkowych 36,7 ms (132x277,8 us - ;łdkliil 250 ms) |
jnc | get dtmf | ; jiżil-L Cnszcze ni, p to cyfra nie jest pełna |
mov | a,pulse_digit | ;wprowadź cyfrę do akimuolatorao |
mov | pulse_digit, #0 | ;kascC dla następnej cyfry |
setb | fdig ready | ;w ciIu wekazania] że cyfra jest gotowa |
clr | fdigit | ;kasuj flagę |
;Jiżi1i wybierana cyfra DTMF jest gotowa, skopiuj ją do akumulatora. Sprawdź na warunki esekCali.lI ;flaeO^’W knwllelliil itp. Wykonaj skok warunkowy w przypadku warunków
174 142 specjalnych lub kontynuuj /apnaradenie dla dalszych impulsów C/lub pełnych cyfr?.
git_darf: | |
jnb clr | fcaafin, hang fcatne |
mov | cccpmi,#0 |
clr | fdamffn |
mov | a^Pl-temp |
ani | a^CCh |
setb | fóig ready |
/kasuj flagę tonu wybierania /wyłącz ton wybierania /kasuj flagę wejścia DTMF ;·rφrowadź cyfrę do akumulatora /zatrzymuj tylko dolne cztery bity /w celu wskazania gotowości ο/ζ^χυ /Sprawdź oariiazinii (impuls 700 ms).
hang: jnb faαng]Clαsh /jeżeli nie odwieszenie
pop | ||
test | lc3: | |
call | hhu | |
óec | ss | /skoryguj wskaźnik stosu |
dec | ss | /oouadczając podprogram bez instrukcji ret |
jnb | fneroai_ | thuO]nOtnimoai /skocz, jeśli wystąpił sygnał no nemote |
clr | fnemoai | |
no nemote: | ||
jmp | sstar | /wyjdź,ktoś odwiesił słuchawkę |
/Sprawdź w przypadku flash (200 < impuls < 700ms). gClash: jnb fflaah]aCmi /jeżeli nie flash cln fflash mov ccaomi,#0 jb fatoni,euaa flash /kasuj flafl ”flacl /wyłącz ton wybierania /U^ż^^ł^i włączany ton wybierania, wyślij tylko ponownie
174142 77 'ostatnio wybierany numer jb fsend,dsat—laaS 'jeżeli flaga wysyłania jsst ustawiona, nis wprowadzaj cyfr,
clr | dtons | 'tylko wyślij 'kasjj flagę tonu wybierania |
pop | psw | |
dsc | sp | 'skorygjj wskaźnik stosu |
dsc | sp | 'opuszczając podprogram bez |
jmp | send^it. | instrukcji rst 'wyggrowadź ws zyst ki e cyfry + |
'Nadaj tylko kod SEND, als bsz cyfr, jeżeli albo Dial Tone, albo laga Sond ma stan wysoki.
dsae_laaS:
clr | dtons | 'kasuj flagę tonu wybierania |
mov | crnds^S | |
cali | trucmd | |
mov | a,#send | 'wyślij kod |
cali | wrbus | |
sst | fsend | 'wyślij flagę |
pop | psw | |
dsc | sp | 'skorygdd wskaźnik stosu |
dsc | sp | 'opuszczając podprogram bsz 'instrukcji rst |
jmp | wait | 'wróć po cyfrę, ocPw±esie]s0e itp |
'Jeśli jeszcze nis wybraliśmy pełnego numeru telefonu, i upłynęło 40 s od ostatniego wciśnięcia 'klawisza, rozpoczyna się łe;mtautoaγ ton Sollsra.
time:
dab fti ims.s sad_e ims pop psw 'jeżeli nis upłynął czas
174 142
dsc | sp | ;skoryguj wskaźnik stosu |
dsc | sp | /•opuszczając podprogram bsz |
instrukcji rst | ||
jmp | ,'wtedy bsz rojone | |
;Sprawdź, | czy nadszedł | czas nadawania (upłynęły 4 s od |
wciśnięcia ostatniego klawisza).
asnd_t1bs: | ||
jnb | fasndelbsi,snlaok tims | |
mov | re^ims off2 | ;w r6 czas 71,1 ms |
cjns | r6,#56,unlock | tirne /'sprawdź dla 4 s (56 t 71,1 ms |
= 3,98 s) | ||
clr | yasndelbsi | |
pop | psw | |
dsc | sp | ;akaibguj wskaźnik stosu |
dsc | sp | ,•opuszczając podprogram bsz |
instrukcji rst | ||
jmp | ssnd it | ,•wyprowadź cyfry i wyślij |
;Sprawdź, | czy żądano odblokowania. |
unlaok_tibs:
jnb yunlaoktibsi,laok_tibs
mov | r6, elbs_ayy2 | ;w r6 czas 71,4 ms | |
cjns | i6,#28,laak | c | /sprawdź na (28 t 71,4 ms =) 2 |
clr | yunlaokt1bsi | o | |
pop | psw | ||
dsc | sp | ;akaibguj wskaźnik stosu | |
dsc | sp | /•opuszczając podprogram bez | |
instrukcji rst | |||
jb | lockono unlock | ;nis odblokowuj, jsśli już |
odblokowany
174 142
jmp | unlock it | ||
no unlock: | |||
setb | fonhook | /jak przy | odwieszeniu |
setb | ieO | /skocz do | funkcji obsługowej |
ExtIntO | |||
jmp | start | /jak przy | ponownym podniesieniu |
słuchawki | |||
/Dodanie wartości | flocktimer w celu umożliwienia |
zablokowania upływu czasu przy mniej, niż 4 cyfrach.
;Do TRU trzeba dodać etykietę go_lock jak również (w razie konieczności) ustawić flocktimer.
lock_time:
jnb | flocktimer, look | /skocz, jeśli nie |
mov | r6,time off2 | /w r6 czas 71,4 ms |
cjne | r6,#28,look | /sprawdź na (28 x 71,4 ms s) |
clr | flocktimer | |
POP | psw | |
dec | sp | /skoryguj SP |
dec | sp | |
jmp | go lock | |
/Sprawdź, | czy mamy (całą) | cyfrę |
look: jb | fdig_ready,got_a | _digit |
jmp | getl | /sprawdź ponownie, czy nie |
wprowadzono cyfry /Marny cyfrę (impulsową lub DTMF), zwracamy ją w akumulatorze.
got_a_digit:
clr fdig_ready /kasuj flagę gotowości cyfry got_inuse:
mov time_offl,#0 /uruchomienie bloków czasowych przy każdym wprowadzeniu /cyfry
Π<4 142
mov | time | #0 |
mov | timr | _laa3;#0 |
pop | psw | |
ert |
;*********************************************************** /Pobirez cyfrę z klawiatury miSrlerlralnu *·*********************************************************** /Podprogram przetwarza wchodzące cyfry i/lub flagi przetwarzania /Pezy plwrlair; zwezci daną w aks:mslaelecr grtptrst:
push psw /Jrżrli wybierani cyfra DTMF jest gotowa, skopiuj ją do akumulatora. Sprawdź na warunki specjalne, /^1^.1½ lnwirszinii itp. Wykonaj skok warunkowy w przypadku warunków specjalnych lub kontynuuj /sprawdzenie dla dalszych impulsów i/lub pełnych cyfr.
git dtmf: | ||
jnb | fd.tmfin,no dtff test | |
cle | fatone | /k/suj u1ι|ι toto u/wybierln |
mov | «upral, #0 | /wyłącz /wywcz0elnaśw |
clr | anemann | /kasu/ l^j^i^ge taję owr ΙΧΜ1 |
mov | u,pxt temp | /wyprowadź off^e do akumulatora |
ani | 1,#01111 | /icαeζcwιa1 ŁiWIo adOtn /czter bity |
srtb | fnng_eelnw | /w celu wskazania gotowości |
cyfry
174 142
no dtmf test: | ||
clr mov | fdig r/ady | |
tim/_ | ||
mov | time | _lee2j#o |
mov | tim/ | #0 |
pop | psw | |
r/t |
/kasuj flagę gotowości cyfry /ueuchlili/iie bloków czasowych przy każdym wprowadzeniu /cyfry » kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk /
f /kmid_dtme - wyślij ton wybi/rania •kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk /
k/nd dtmf: | |||||
call | watchdog | ||||
clr | dtmf out | /odblokuj | ton | dfemf | |
call | wiTX€^_3^o_ | m b | |||
k/tb | dtmf-Out | /odblokuj | ton | dtmf | |
cali | writ/ To | m b | |||
r/t |
• k k kk k kkk k kk k kkk k kk k k kk k kk k kk k kk k kk k kk k k kk k kk k kk k k kk k kk k k kk k ,ό1ι_!ΧμΙ - wyślij ton wzbi/rania •kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk t
disable^dtmf:
clr dt:ie_lut /odblokuj ton dtmf call weiXm_il_m_l r/t
174 142
delay dtmf | /opóźnienie tonu DTMF | |
clr | tri | /zwłoka na sprawdzenie pracy |
mov | time off2,#0 | |
mov | time_off1,#0 | |
setb | tri | |
wait | _until dtmf: | |
mov | a,time_off2 | |
call | watchdog | |
cjne | a,#4,wait until | dtmf /odczekaj 40 ms na |
zatrzymanie dtmf ret .*********************************************************** t
t ; Generator tonu ROH /
************************************************************ t
;40 s po podniesieniu mikrotelefonu, bez wybrania żadnej cyfry, lub od wybrania ostatniej cyfry. Generujemy ton ROH (przerywany w odstępach 80 ms) w ciągu 1 minuty, lub do podniesienia mikrotelefonu - hang_up, zależnie od tego, która sytuacja wystąpi wcześniej.
rohtone:
clr ftime /kasuj flagę clr fdtone /kasuj flagę tonu wybierania tak, aby zmiany wskaźników nie /powodowały zmiany tonu ROH mov dptr,#table_400 mov highpoint,dph /zapamiętaj lokację tablicy mov lowpoint,dpl setb roh_boost /zwiększ poziom fonii
174 142 cali wri0n_ox2 roh0onn_on:
mov aaPOIi1,001000010b /włącz ton
/Pocot0pń w pętli przez (odwieszenia). | 1 minutę albo do hang up |
check hang-iup: | |
cpll wpOchdog | /odśwież v^p^0^c^^^^g oczekując tym miejscu |
jnb hhpne,ahnak 0emnou0 | /skocz, jeśli nadal zdjęcie słuchawki |
0nt0lc4: | |
call hup | wwuOnPj i 2^41/0^1 oWintcnaiek , jjee słuchawka na powrót /oOwintzona |
jmp start | wwpooaod1 nowę staot |
check Oimeout: | |
jb faoh0imnout,aoh_0emnou0 /tkoac, jeśli upłynął czas roh (po 1 ienuain^; | |
jb roh gn,aoh0onn | _on |
mov aaρom0,00 | wwilczz ton |
jmp check hpngup | /te poOPe ne zmianę włącza i wyłącza aoh |
roh Oimeout: | |
mov aaαomO,00 | vwołace ton |
clr roh IoosO | /wyłące zwiększenee poziomu fhgai |
setb loootwe0ah_ | /Uornwije pollę |
cali wre0n_px2 | vwpaooaddz de portu |
test lc5: |
cali hup /podpoogaam odwiezec^a
174 142 jnb
Ump /Wejdź tu looptest:
mov loopai:
mov aód loopt?:
call cjne djnz clr call mov looptS:
mov aenz call denz jb sWtgndatant]loopteat /wykonaj test pętli, jeśli start pętli ioopteaatena /nie wykonuj testu, jeżeli start oó uziemienia, tylko /pozostaw pętlę otwartą do udiirCenCα dzwonka jesteśmy w trybie Loopstar^.
b, #40 /ustaw zwłokę , s (40 x 5, ms) a,timetdn2 /pobierz aktualny czas odwieszenia a,#5 /dodei 5, m, do czasu obecnego loooarCach wncte px2 watchdog /odświe, watcła<dog
α]tCmetOnS,loooa2 /mniejsza zwłoka wynosi 50 ms ^^op^ /czekuj ogółem , s /Zimykej pętlę co 2 , w celu aprαraziniα _ /czy mikrotelefon odłożono na powrót na widełki lood0aiaatacιre2,,# 115 /ładu, zwłokę 2,2, ms (8 x 277,8 us) looPest__timer,#0ffC. /w celu zapewnienia dostatecznej ilości czasu dla układu /SLIC looptiat_aimir]$ , /w celu wskazania stanu odriiazinik watchdog ;odświej watchdog loooaiatttCmenS]looot3 lCt,ldOoaisatind , /sdcds, jelC, bra, prddu
174 142 pętli (ponowne odwieszenie) setb looiaatecS 'rozewrzyj ioaoaais wyłącznik pętli
clr | looiaatecS | 'zamykaj pętlę co 2 s wcelu |
sprawdzenia | ||
call | writs px2 | |
jmp | fooiesae | 'czeka.; do odwieszenia |
looiesat— | snd: | |
clr | 'froStimeout | ;0 = wystąpiło odwisszeniso Idę |
praca w trybie GS | ||
mov | timis onl-ztO | 'rosot bloków czasowych |
odwieszenia | ||
mov | ttmιS—Oa2. #0 | |
jmp | start | 'start na nowo |
• *-kieie'kieie'kieie'*'łeie*'kieie'kieie'*ie^-kieie'kieie’kie’kieie-kieie'kieie-*ieie'kieie'*ieie'kieie'*ieie'k-kieie r | ||
r ' | Podprogram, dla odwieszenia | |
r • * * *· * * * * ·* ** ** ** ** ** ** ** ** ie ** ** * ie ie ie ie * * * * * * * ii ** ie ie ie ie ie ie ie * ie ie i* ie * * * * * * * * * * * * * * r | ||
Sup: | ||
call | watchdog | |
clr | ex0 | 'zablokdj 0X^:0 (zdjęcieo LC_) |
clr | digit | ;w przypadku podniesienia podczas |
wybierania impulsowego | ||
mov | pulse digit, #0 | ;w przypadku taktu podczas |
impulsowego wprowadzania cyfry | ||
clr | f dig__ready | ;w przypadku taktu podczas |
wprowadzania impulsowego/dLm | ||
clr | dtmfin | 'w przypadku taktu podczas |
wprowadzania dtm
174 142
clr | ylaokt1bsi | ;w przypadku taktu podczas blokowania |
clr | yunlaokeibsi | ;w przypadku taktu podczas odblokowywania |
jnb | sw gndaeait, | hupl ;akaoy, jsśli start pętli |
sstb | laopsrleoh | ^rzy starcie od uziemienia otwarcie laapar na 750 ms |
call | riits pt2 | ;dla symulacji taktu |
a,eibs on2 | ;zriększany co 10 ms | |
add | a, #75 | ;zrłaka 750 ms |
push | acc | ;zaoharaj na później |
jmp hup2 hupl hup2 jb yiαhtibsαue,hup2
clr | laapswleoh_ | ;jsósli start pętli |
call | wróts pt2 | |
clr | fUms | ;kaauj flagę bloku czasowego |
clr | yssndelbsi | ;kaauj flagę nadawania bloku czasowego |
mov | c^pml, #0 | ;upsmij się żs dtons jsst wyłączony |
clr | fdtons | ;kaauj flagę tonu wybierania |
clr | roh boost | ;fαniα normalna |
call | riits pt2 |
jb fiebats_hs^^,na_snd_asnt ;nis wysyłaj końcowego jsżsli takt zdalny, ponieważ nis ma ;eak1sj potrzeby, i nis są niezbędne kasowania bufora ;Motoroli mov a^endkall ;wpiaradź kod końca call ^bus ;najpisir wyślij do TRU, następnie kasuj flagę
174 142 ik_iid_sent:
clr | ;w przypadku wysłania cyfr Iub odpowiedzi na alarm | |
setb | Okkkswkut | ;so]<aż do TRU odwieś zenie |
clr | Okkkewkut | jak wyżej |
Cnb | sw_ginetapt, | hook4 ;ιιίθ przy ssarcie p^tli |
pop | acc | ;pobierz na powrót opóźniony/ czas |
clr | c | ;kasuj flagę przeniesienia przed |
następną instrukcją hup3:
cali watchdog αIhilli_ki3, $+3 ;OnklikaC 750 ms dla umożliwienia otwarcia pętli i pbx w ;kilu espawnliiia, że jest wyłączony. Skocz do iaetęsi·iC ;lietPukkCi bezwarunkowo
Cnc hup3 ;πϊι przenośp dopóki hili_on2 jest większe od akumulatora ;(w przypadku jeżeli zapis na magistralę zajął wlęc^C niż 750 ms) hup4:
setb | fonhook | ;uehaw | flagę odwiefoania |
clr | fhang | ;kasuj | flagę podniosienSo |
clr | f one sec | ;czyli | blok czcuowy lαeknż es |
wystartować skikwiii po zdjęciu ;słuchawki clr f_liueioffhiliig ;kaeuC flagę setb ex0 /-odblokuj ixhlntk (zdjęcie słuchawki) .****************************************************** r
/
Aktualizacja stanu TRU
174 142
/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: push acc push psw upspecl:
jnb fspecl,continue_update /sprawdź flagę specjalną
cali | specl | /podprogram specjalny w sekcji TRU |
continue | update: | |
jb | test_enable, go_ | _to_self /sprawdź, czy test się rozpoczął |
mov | a,lampSptemp | /zatrzymaj wartości do późniejszej komparacj i |
mov | c,roam | |
cpl | c | /w rzeczywistości nie ma lampek dla Maxjacka! |
κιον | roamlamp,c | /wskaźnik roam (tylko do zapamiętania) |
mov | c,noserv | |
cpl | c | |
mov | noservlamp,c | /wskaźnik braku obsługi (tylko do zapamiętania) |
mov | c,lock | |
cpl | c | |
mov | locklamp,c | /wskaźnik zablokowania (tylko do |
zapamiętania)
174 142
mov | c, muse | |
cpl | c | |
mov | inuselamp,c | /wskaźnik pracy (tylko do zapamiętania) |
cali | write io c | /aktualizacja LEDów |
jb sw_dialtone,not_maint /jeżeli opcja sw wyłączona (=1) /bez modułu obsługowego test_push:
cali | read io m a | /sczytaj | przycisk |
ani | a,#00010000b | ||
cjne | a,#0h,not push | ||
setb | test_enable | /inicjuj | test obsługi |
setb | fremote hup | /ustaw takt zdalny na 700 ms | |
setb | loopswitch | /odłączono drugą stronę | |
cali | write px2 | ||
not_push: | |||
jnb | test enable,not | maint | /sprawdź rozpoczęcie |
testu go_to_self:
jnb | test end,not error yet /jeżeli nie stwierdzono |
błędu | |
jnb | error flag,pass ok |
test led: | |
mov | rO,#error_code |
mov | a, @r0 |
rl | a |
rl | a |
rl | a |
rl | a |
mov | lamps_temp, a |
cali | write io c /aktualizacja LEDów |
setb | ext led /włącz led zewnętrzny na 1 |
174 142 minutę
jmp | weitr to c | |||||
pis | ok: | |||||
clr | ext led | /wice o | led | zewnętrzny | no 1 | |
minutę | ||||||
jmp | wpierpeOpa | |||||
not_ | reroe | _yet: | ||||
jb | rxt lr!,cle | lid | ||||
srtb | rxt trd | /wice o | led | zewnętrzny | podc^s |
testowaniu jmp weiei_elpa ΑΡρΙη^:
cle | ext led | ;wyłaco led zewnętrzny podczas testowaniu |
wpite to | c: | |
cull not miit: | writr iOpc | ,· waccśWwwacoz DOz śntepcnwny |
mov | a,lamps temp | /!^:zzecł^<^i^^je wartośio do późnnraazea Slmplelaan |
jb | frohtimelse; | oompare |
mov | c,ap2 | /sprawdś, czy jesteśmy w aelniz ALERT |
ant | c,/apl | /(tzn.o oczekiwanie na połączenie wchodzące) |
jnc | compare | /skaz,o jeśli nie ALERT (nie połączenie eahldcwaz) |
jnb | falnIoolkCompa:re /stoc, o j^śli słuchawka znatea, nir uruchamiaj dzwonka! | |
cle | loooswitch_ | /^«^ι^Ι^ηύO wyłącznik pęliś, ύ^1ή stan ALER.T, |
cull | eeier px2 | /(oczekiwanie połączenia |
wahlncwaigo)
174 142 jb foallje/s/t_eiig_Ximme /skocz, j/śli trwa już drwlnτ/nτ/ k/tb fcall /1 = ploząt/k άΜΜί/πί, (wykryto
ALERT) mov bell_timer,#0 mov bell_timer2,#0 k/tb f łbell soianci mov dptr,#table_20 mov loowpoint, dpl clr ring_ k/tb n^riną call welt/_pe2 r/s/t^rn n_t ime r:
mov ring_timer,,0 olmpare:
erl a,lamps_temp /skasuj blDki czasowe /flaga działania dzwonka /przy drwlii/ilu wskaż na tablicę 20 Hz /zapamiętaj plorąX/k tablicy dzwlii/iia mov highpoint,dph k/tb tw/ntz^h^pwm mov ooapm2j#010000101
X/sX1:
/taC wicc pin może być pwm /odblokuj pwm /wlczc pc dzwonienia /wyprowddc do portu / ka^j między dzwonkami bloJe czasowi, dopóki /jesteśmy w stanie ALERT /bity różniące się powinny być
1 jb f_one_sec,dtbits /odczekiwanie C s po zdjęciu słuchawki prz/d sprawdz/ni/m / /lampki pracy, riplbi/gi rozłączeniu j/ż/li /zdjęci/ /słuchawki nastąpiło już po sygnał/ taktu mov o,ioo.7 /pobierc status IIUJSE anl o,2iπkk/limp ;C = nie IIUJSE jnc timing_in_use_off /uruchom blok czasozy c jeżeli
174 142 lkrokk inuse już wyłączona mov intUaitOff_aCmin,#S8 ;nfaaw ponownie blok czasowy nz 1,99 s (28 x 71,1 ms) Setb f_inusidCfairing //«kaź że blok chdaawy wyłączenia z pracy działa aCmCng_in_use_off:
jnb infselkmO] hont_CntUSitaCmCng /czy lkroOk pracy nadal wyłączona clr. ftiming /jeżeli ni, , kasu, flegę ę zatrzymaj odmCerdknci czasu cont^n-u s ^tt imi ng:
jnb f_inusiofftCring,aabCts /jeżeli flaga jest fsakrionk kontynuuj oarCirzknie czasu denz intUSitOffttimin]dtbCaa /rozłącz, kiedy blok czasowy dojdzie do 1,99 s clr ft_tnuseoffaCming /kasj Clage jb Conhook,dtbits /jeżeli odwieszenie lokale,, nie dokonuj synchronizacji z /zirnkardnyr taktem /Wchodzimy tu, jeżeli druga strona dokonuje odłożenia słuchawki C nie odkładamy słuchawki z /powrotem na widełki w ciągu 2 s.
dCacdnnect:
setb fnimotitafo setb ldoparCahat czll rnCtitOxS dt^s:
anC k]#01110000l /ustaw takt zdalny na 70, ms ,·druga strona odłączona /sprawd, tylko bity dotyczące tonu wybierania jz ringtaCmidut /jeżeli nie ma zmian jb ydeαns,i1ng_tibsαst ; lub jsżsli DT nis jsst włączony mov ccepimlz #0 ;bytoyj ieżący. DT
Call dtons ;ybisń na nowy ton wybierania i1og_timeout:
jnb | fcall,updats done | ;nis odmierzaj czasu |
inc | ring | dzwonienia jsśli nis ma połączenia ;rchadząosgo ; co 71, j ms |
a, #53 | ;5j x 711 isj = 3,4j s | |
clr | c | /·kasuj przeniesienśe przed |
odejmowaniem
subb | a,ring tiimer | ||
jnc | update_done | ;jeżeli przykujmnSuj | 3,84 s |
bsz | dzwonienia | ||
jb | fbellsound,upatSc | done ;^^^k^j również | do |
zaniknięcia dzwonienia ohsok_atop_ring_ps:
mov | a, #3 | ;j x 25 j iso = 10 j ms |
clr | c | ; gotów do c^(^^;^i^t^wnnia |
subb | a ,0>θ 1 l_t imer2 | |
jnc | update_done | ;jeślj prsenSaieeoSo, |
jb ring_,check_stop_null ^Ιωοο, dzwonek ps
już wyłączony | |||
sstb | ring | ;w przeciwnym przypadku wyłącz | |
teraz dzwonek | ps | ||
call | wrrte_px2 | ;wyorowadź do | potuu |
clr | no dg | ||
cali | px2 | ;wy?rowadź dj | pr-tuu |
chsck_stop_null:
mov | a,0# | ; j x 2 j is j = 20 j ms |
clr | c | ;gotowe do wykonani odujIaownnia |
subb | a,bsll t^erl |
174 142
jnc | upOate done /jeżeli oaznnentinnin, 200 ms |
mov | aaαpm2,#0 /zatrzymaj pwm |
cla | Owenty hz pwm /pocot0po wyjściowy pin w stanie niskim, pwm działało 10 ms /dłużej od ps dzwon/p, Ola wygładzenia oadnlineu |
cla | haρll /0 = nie ALERT, cpononep ninOcoonennin |
jnb | sw gn0t0ρa0,uo0ρtn_donn /tkoac, jeśli start pętli |
setb | looOtoe0ah /GS nie odpowiada np dzwonek |
cpll | waite px2 |
up0α0n_0one:
jb | fcall,ng_antn0 io |
jnb | lc_,no_antn0 io |
jb | haoh0imngu0,no antn0_io |
no_aetnt_io:
pop | psw |
pop | acc |
aet |
f r
/ Przeładuj t0ooo ooaóonaoccn kontroli op0ah0oe /
.****************************************************** r
op0ahdog:
push | ie |
cla | ea /zablou^ przerwanPa |
mov | ccap41#0 /-ws/paż na początek biiżącej s^aon |
mov | ccap4h,ch /bieżąca strona |
pop | ie |
ae0 |
174 142 ·************ Of kkkkkkkkkkeekkk-ki^^kkkkkkkkkkkkkkiekkkkkkkk ; Podprogram obsługi przerwania odłożenia słuchawki TimsrO(TLO) • 'kk'k'k'k'k'k'kkkkkkk*kkkkk-k-kkk-kkkk'kkkkkkkk**kkkkkkkkkkkkkkkk t
onSook timer: | |||
pusS | psw | ||
pusS | acc | ||
clr | tri | 'zatzYyadO | bloO dasowo zdęcias |
słuchawki | |||
clr | tl | 'sasudO zwislano pssrawanlo bloku | |
czasowego | zdjęcia 'słuchawki |
mueS—CSeck:db mute,oa—Siec2 'jeżeli już wyciszony, zrzuć sstb muts ;wycSslnnSo fonio rx w celu zapobieżenia 'aSasγwsmu 'dekodowaniu dzwonienia fonicznego jako dtm. zapobiega 'również fonicznemu sprzężeniu ‘zwrotnemu cali arteS—ix2 wwprrowddó do portu oa_apec2:
jnb fspsc2,oa—Sisc2—doae 'sprawdź flagę call aisc2 'wywołaj podprogram specjalny w sekcji TRU oa—Spsc2_done:
djnz dtaifaγ_delaγ,gs_init ;wo ciągu 71,1 ms call uidleS—diailaγa ' co 71.1 ms gs_init:
174 142 jb fcal 1 ,cont_serrvice ;przy nadejściu połądenia zrzuć wychodzącą lilkCsllzαcji GS jnb sw_ginstaphI kknh_eipviki ;eWocz, jeśli nle tryb GS jnb fonOokWICknt_eiPvlki ^Ιι cziWsC na uziemienie dzwonka dla uruchomienia GS do ;pliklywishigo odłożenia ełucOawkl jb rlng_gpound_I cknh_gpkunnehαpt clp loopswitch_ ;żądanie obsługi startu przy uziemieniu call write_px2 mov gndstart_ti]lerlI p0 mov gndnehsr_etmlir,,0 ;inieCalizcj blok czasowy kknt_gpkundstart:
lnc gnnshspt_tllipl ;sbknint zwolnił dzwonka iov αIgndetspt_tlmiPl a, #90, kont_sipviki ;25 ms (90 x .277,8 ps) lnc gnnetapt_tlmip;3ck 25 ms mov gnnetspt_tlmiPlI #0 ;reset dla następnego odliczania 90 mov a,gnnehapt_timip3 aI#40Ikonh_siPvίki ;1 s (40 x 25 ms) setb lkksewitcO_ ;otwórz pętlę po sekundzie, jeżeli abonent nie zamknął ;;^1ϊ call wpihi_px2 kknh_eirvike::
jb fks0l,plng_konhPk0 /skocW] jeżeli stan ALERT dla generacji dzwonienia jms knOkkW_hllipe ;w sPlikiwnzm przypadku tylko zaktualizuj bloki clsekwi ;UpukOsmiαmy nlWknik,Ciżi0ί TRU Cest w stanie ALERT (połączenie wchodzące czeka na odebranie).
174 142 eing.aontrol:
jb abr11alunl;en]mnnjpring /Scdzwonek nie dzwoni w cyklu dzwonienia, sprawdź /zirmię dzwonninia, w celu sygnalizacji odpowiedzi na impulsy /dzwonienia jb Ρnngpgelsnnp;enmnngpeinj /jeżeli nir ma ziemi dzwonku, odmierz czas dzwonienia, /następnie ignoruj impuls na ziemi dzwonienia, po ustaniu /dzwonienia mov a^bZl-Piwie^ /impulsy co 25 ms cjni a;#C;jeareabrlljlunn /skontroluj ziemię dzwonki po 25 ms mov u,#28 /29 x 277,8 us = 8,1 ms cle c /gotowość do odrjmowinna subb α;brllpenmre jnc teminn_PΡnn /brak przeniesienia do 8,1 ras po ustaniu dzwonienia /zignoruj jedynie zirmię dzwonienia po 8,1 ms jmp saeue_PbZ1tal^d /jeżeli zirmiz lzwlnirnna wskazuje zlatańr słuchawki w /czasie anszw, uruchom 20 Hz ponownie w crlu wymuszenia /ciągu dzwonienia timńngp~ring:
inc br1lpenmre mov u,brllpenmre cjne a,#90,PWngrPpOn mov brl1peimre; #0 inc br1lpenmre2 eWngzPpOn:
jnb abrllslsnlS emnger /co 277,o O as /2O ms (90 x 277,8 ps) /TestujO na i^ć^st^ne 99 / co 255 ms off /skocz, arżrli w trj
100
17^ 142 chwili dzwonek nie dzwoni /Czas włączenia dzwonk zmodyfikowany z 1,95 s nz 1,975 s, Odnierkż azronik zatrzymuje się przy /impulsie dodatnim, który 'ooroafji adronCinCi ciągłe. Ten promm wyniknął przy skrzynce z pięcioma ;ddrdnkarl·c, atdsorkneU z MaxUack. (ssh) checOtatoPtlellaound:
mov k,lelltaCminS /oobierz upływ czasu włączeni dzwonka cjne k]#59]OnhooktaCmera /socz, , jeesC, :ιlCieS , niż x 25 ms = 1, 975 s mov k,billtaimir /4, x 27,, , μ, = 12,, ms (łącznie 1,987 s) cjne k]#45]OnhooktaCrers /dzwonek priesaeie działać po 1,987 przy impulsie ujemnym, /wycina ostatnią ćwiartkę cyklu w celu skorygowania ciągu /dzwonienCk aaoPtbillaound:
mov cckomS]#0 clr elillsouna mov dotr]#aklli mov lorooCna,dol ;odblofuj pm /, = dzwonek nie dzwoni null /wsktaż tablicę tonu zerowego (ton zerowy powoduje, że ;azroneO ma zerową wyjściową składową zmienną, wyłącznie /napięcie batenCC /zapamięke, początek tablicy de2orej mov highodCnt,doa mov cckomS,#01000010b /ο^ΐο^, pm cln ea cln notrcng cali wnitipPxS
174 142
101 setb ea call watchdog jmp reset_bell_timers ringer_off:
mov a,bell_timer cjne a,#120,onhook_timers x 25) start_bellsound:
call reset_io call write_pxl call write_px2 clr ea setb no_ring call write_px2 setb ea mov ccapm2,#0 mov dptr,#table_20 mov lowpoint,dpl mov highpoint,dph mov ccapm2,#01000010b test_relayl:
setb fbellsound reset bell_timers:
mov bell_timer,#0 mov bell_timer2, #0 onhook_timers:
inc time_onl /zresetuj bloki czasowe / 4 s bez dzwonienia (160 ;odblokuj pwm ;wskaż tablicę dla 20 Hz /zapamiętaj początek tablicy /odblokuj pwm /1 = dzwonek właśnie dzwoni /co 277,8 ps, kiedy szenie mov a,time_onl cjne a,#36,onhook_done /36 x 277,8 ps - 10 ms
102
174 142 iac time on2 '•co IO m, o kiedy odwiezsenSe mov etys_oal,#0 'restu;O no następnych 36 mnv a,tiye—Oa2 cjnea,#0,aot—iac255 inc tese—min ;1O iso o 25O = ,25O s ale—tac255:
jp tlStimeout,oa]sloO—dlas 'zrzuć informacje dotyczące odwieszenia aż do pozytywnego 'wyniku tostu tsae_hangl:
jb foaSooO,onSloO—dlao 'nio dokonuj nowego odwieszenia, jeżeli jodno zostało ;dokonano toae_hang2:
nv a,etye—Oa2 .
; ;STATUS ON-HOOK ; cjaea.#70,laSll0—doao ;700 ms wskazuje na odwieszenie cjaoa,#36,oaSolO—dlao ;700 iss wskazdje na odwieszenie toat_hang3:
sotb Sang ;ustaw flagę odwieszenia clr f—iausoofeiyiag 'zatrzymdO hlok czasowy w cofu sailbteżoaia ewentualnemu 'eaOelaaats zdalnemu laSooO_done: po acc pop psw reti .******************************************************
174 142
103
Z ; Podprogram obsługi przerwania - zdjęcia słuchawki z widełek Timerl (THO) .*********************************************************** offhook_timer:
push psw /zachowaj stan wyjściowy push acc jnb fspec2,check_strobe /skocz, jeżeli spec 2 nie odblokowany call spec2 /w przeciwnym przypadku wykonaj specjalne zadanie TRU /Sprawdzenie obecności cyfry DTMF, i odczytanie jej z MT8870, jeżeli jest tam dostępna.
check_strobe:
call read_pxl_strobe jb strobe,decode_dtmf /skocz, jeżeli oczekuje cyfra DTMF clr fdecoder_busy /resetuj, jeżeli nadszedł strob jmp ttime /i po prostu wykonuj zadanie odmierzania czasu zdjęcia /słuchawki decode_dtmf:
jb fdecoder__busy, ttime /skocz, jeżeli odczytano już cyfrę DTMF /w przeciwnym przypadku call read_pxl
104
174 142 odczytaj ją teraz setb fntlfin ;d b anoPcyiP pyfrę DTMF!
setb fnecknip_busy /1 = cyfrf DTMF w
SPletwαPlαniu ;Ssrawnlenie upływu czasu zdjęcia z widełek, uaktualnianie wyświetlaczy co 70 ms, i polskczicie-/zskońkzenli w razie potrzeby tonu ROH ttime:
lnc hlle_oiil ;iIspueo młodszego bloku czasoweoo zdjęcia słuchawki (@277,8 us) mov s,timi_oiil ;pobipl0 młodszy czap zUjęcśa słuchawki ;JMP TEST_HOOK s, #0, h_kni_eik ;skclw p jeżoli < 256 x 277 p s = 71,1 ms lnc hile_kii3 ;impueo młodszego bloku czasoweoo (co 71,1 ms) cali usnαhi_nieslsys /•uaktualniać co 71,1 ms mov SItlmi_kii3 /ρ^νικ główny czas odwieszenia s,#0,t_kni_eik ;skolw p jeżelp < 256 x 71,1 ms = 18,2 s inc hime_kii3 ;impplo płodn p boou p Olsekeig podniesienia słuchawki (@18,2 s) h_oni_sec:
mov SItili_kii3 ;pobierp główmy czas
Sknniesiinis a,#14, tr^tlmi ;skclw p jeżeli minęło < 14 x
71,1 ms - 995 ms setb i_onn_enk ;tak że zmiana blaispkp INUSE nie może spowodować odwieszenia, ^ι^ιΟι słuchawka zdjęta z widełek
174 142
105
zbyt późno po odwieszeniu | |
taohtimer: | |
jb hsnnO,0Oonn | /skocz, jenoee ocopaczyaimy aocmool (bez ROH) |
jab inutn/0Oonn | ;^!^(-ac, jenoii jtteeimę w sOpiie INUSE (również bez RRO) |
inc a5 | /impuls młoOtcneo zegara t0ρa0u/końap RRO |
cjne a5,036,0aoht0aa0 ;skocz, jenoii minęło < 3ż x
277,8 s = 10 ms | |
inc a7 | /ilopote o-dtcnggę OOuku |
mov a5,00 | acptooneo ołąaznnep/oyłąccnnip RRO /re set iPo następnego jrzeiś cia (10 ms) |
cjne a7,#10.0aoht0pa0 //kocz, jeżeli minęło <10 x 10
ms = 10ims | |
cpl aoh on | i naprzemeanee ołąazpnin/oyłąazpnin RRO co 100 ms |
mov a7,00 | /reset doriast ępn ej fapn |
Oaohstart: | włączania/wyłączania |
mov P/Oim-e ohf3 | /PoPuż ogólny upłw czasu zdjęcia z wideOek |
cjne a,02,0aohqke0 | /•sOcc e minoło < e x 18,2 = 36,3 s |
mov p,0emn ohf2 | /•pobiere równiee dodatkowy czas główny |
cjne p,051,0aohqkeo | /•sOcc e jeżeli łącznie < 4ż ms |
setb fOime | zdjęcia z wideOek = acozpocząe się okres ROH |
taohquit:
106
174 142 mov a,time_off3 cjne ,#5,tdone mov a,time_off2 cjne a,#127,tdone setb frohtimeout tdone:
jnb f_start,tdoneO mov a,time_off2 cjne a,#4,tdonel cjne a,#7,tdonel /pobierz znowu ogólny upływ czasu zdjęcia z widełek /skocz, jeżeli minęło < 5 x 18,2 = 91 s /pobierz również dodatkowy czas główny /skocz, jeżeli < 91+(127 x 71,1 ms) = lOOs /1 = upłynął okres ROH /skocz, jeżeli brak taktowania 500 ms po pierwszym /pobierz upływ czasu zdjęcia z widełek /skocz, jeżeli upłynęło < 285 ms /skocz, jeżeli upłynęło < 500 ms clr f start /odblokowywalne po 500 ms przerwanie odłożenia /Wejdź tu dopiero po upływie 500 ms przy pierwszym zdjęciu z widełek po każdym odwieszeniu. tdoneO:
jnb lc_,tdonel /skocz, jeżeli występuje obecnie stan zdjęcia z widełek test_tr0:
clr tri setb trO tdonel:
pop acc pop psw /w przeciwnym przypadku zatrzymaj blok czasowy zdjęcia z widełek /i uruchom blok czasowy odwieszenia /odtwórz
174 142
107 reti .★λ·**************************·************************** ; Podprogram obsługi przerwania zewnętrznego External Interrupt 0 offhook_edge:
jb frohtimeout,offhook_returnl jnb fcall,not__inc_call jnb no_ring,ok_wait setb ring_ /wyłącz dzwonek cali write_px2 clr no_ring cali write_px2 setb return_ring
clr | ieO | /zrzuć przerwanie związane ΕΧ0(LC_) |
clr | trO | /wyłącz onhook timer i flagę |
clr | tfO | /w przypadku związanego |
przerwania bloku onhook_timer ok_wait: mov r7,#0ffh loop_ring:
mov r 6,# 0 f fh djnz r6,$ cali watchdog djnz r7,no set
108
17-4 142 saek_aet:
jnb istuio_i1og,do_oαt_istuio cali rsast_ia call wltS-ptl call ri1ts_ut2 sstb no-ring clr ring- ;rbłącz dzwonek call ri1ts_ut2 clr return-ring mov i7,#0fyh lop-ringl:
mov i6,#0fyh djnz r6,$ call rαtchdαg djnz i7,laou_iiogl call isase_ia call riits_utl call ri1ts_ut2 sstb ttr mov tt_O,0^O rsti ayyhoak_iseuio1:
jmp oOyyhok_return oa_ast:
oae_ioo_oall: clr trr clr tfO ;wyłącz blok onhaak_timsi i flagę ;wylącz blok oohaak_tibsi i flagę ;w przypadu, Siyjp zerwanisie aohaak_t1bsi jest zawieszone
174 142
109
push | psw | |
push | acc | |
clr | ieO | ;zrzuć zawieszone przerwanie ΕΧ0 (LC_) |
setb | tri | /uruchom blok czasowy zdjęcia słuchawki |
clr | fhang | /kasuj flagę odwieszenia dla bezpieczeństwau |
mov | th0,#0 | zresetuj blok czasowy zdjęcia słuchawki |
mov | time offl,#0 | /bloki czasowe inkrementowane przez przerwania thO |
mov | time_of f2, #0 | |
mov | time_off 3, #0 | |
clr | mute | /usuń ściszenie fonii rx |
call | write px2 | |
jnb | fonhook, check_flash | /skocz, jeśli nie na powrót było odwieszenia po zdjęciu |
clr | fonhook | /kasuj flagę, bało odwieszenie |
teraz ok_offhook:
jnb | fcall,set_hook_flag /skocz, jeśli nie w stanie | |
setb | fanswer | ALERT /1 =zdjęcie z widełek podczas |
clr | fcall | połączenia /nadchodzącego /kasuj flagę ALERT (odpowiedzi |
setb | ring_ | na połączenie) /wyłącz dzwonek |
call | write px2 | |
clr | no_ring | |
call | write_px2 | |
mov | ccapm2,#0 | /przerwij dzwonienie pwm |
elear twenty hz pwm | /pozostaw pin wyjściowy w |
110
174 142
jmp | kffSkkk dono |
sot Suk | flag: |
sotb | Suk |
jmp | kffSokk dono |
cSock lasS: | |
mov | a,#19 |
clr | c |
subb | time_on2 |
jnc | check_digit |
jnb | lock.kfSkkk dono |
sotb | lash |
jmp | ofhook_done |
chock digit: | |
a,#i | |
clr | c |
subb | eimS—ka2 |
jnc | ofhook_done |
inc | pulse_digit |
sotb | digit |
kfSkkk done: | |
iot | t ime_on1,# 0 |
md | timeon2,#0 |
md | tio,#0 |
pop | acc |
pop | psw |
stanie aisOty 'sygnalizuj zdjęcie z widełek, jeśli nie stan ALERT ;2 O o IO = 20O iss 'Isu;O psseneateaneo oo odejmowania '^0--00O iso stnnan0 liash 'boz flasS, jeżoli TRU zablokowano ;ustaw flago flash
2O x IO = 2O iss 'ksudO przenieseanSo do odejmowania ;2O-20O mso stanowo impuss ;tylko zakłócenie ;zawiera nuser ; ustaw flag<o ewenSlfinej cyfry ;reseO biloków czasowych odwieszenia, tak aby mogły 'ono być ;uruchomione przy odwiesoenSu
174 142
111 offhooktriaunn: zetC ·,+ + + ** + + + *★ + + + + + + + ** + ** + + + + + + + * + + * + * + + + + + * + + + + + + * + + + + + +
Podprogram przerwań PCA ·++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;Pndinrknck PCA gininorkni są z rykondyaaaniem opcji koIπoarkcyjnychSaooaaorująhych modułu ;zinorigo (programowego bloku czaaorigo) przy każdej zgodności dolnej części liczby z FF. W ten sposób /możemy generować onzenrknie na końcu każdej aanony] 00^-0100,0^^0200 i^., co daje nam OndirranCi /co (256*1,085 us) 278 us.
/ Niniejsza Cmpleminakcjk Maxjahk do ryardrzinik dmoayfCkdranigd programu obsługowego PCA dl /bloków TRU o bardzo dużych prędkościach orzikkzz,rknCa danych wykorzystuje kaairllacUk warunkową /(Audiovox wymaga dmCilioligo podprogramu PCA).
$ge ocatainvice:
%Cf%Cnamkak ne 0) then
push | Ce |
mov | Ce,#%Cnamkak |
czll | mkaOlalel |
push | zcc |
push | psw |
mov | z,cczp^l |
( ppdiejhci7 do s;rfuaceji trzeciego poziomu /priorytetów przerwań /oZreślony w sekej, TRU ww celu wykonania reCi /•^uoZu , pm tonoweoo
112
174 142
orl | s,ccapm2 |
ant | s,#01000010b |
Cz | pca done |
do_pca: | |
mov | a, #0 |
pesd table | : : |
;szukcp pwip dzwonienia /wysluSej tylko bit pm ;zrzuć następną ozęśip jeżeli na wyjściu nie ma /tonu ani dzwonienia ;L_n^:Lcc:ialiucj wskaźnik
moye s,@s+dptr | ;pobierz daną z tablicy | |
cCne | αI#355IWpihi tone | |
mov | cSO, OleOskint | ;pesetuj wskaźniWp to jest |
koniec tablicy | ||
mov | dsl,Okwsklnt | |
mov | s,#0 | ;tak więc wskaźnik będzie |
SPswinąkwy | ||
Cmp | reed^-table | siirwela pozycję |
wpite tonę:
mov | CksslOw s | ;wstaw daną w tonowe p^wmi |
mov | ccss30w s | ;w^^t^^w daną w swm dzwonienia tylko pw! tonowe Iub ;pwm dzwonienia działają w każdym zadanym czssii |
lnc Skα_none: | dptr | ;wsksż następną pozycję tablicy z następnym czasem |
clp | ccfO | ;pieetuC flagę modułu 0 |
clp | ea | ;zablokuj sPliPwania |
mov | ccappO 1, | ;lsąaduC sonkwnii dolną część porównywaną i zawieś ;komparator |
mov | a,ccapOh | ·SPlejdź na ostatnią stronę |
lnc | a | ;w^^k^^ż następną stronę |
174 142
113
mov | ccapOh,a | /załaduj górną część danej do porównania i ponownie /uruchom komparator |
setb | ea | /odblokuj na nowo przerwania |
pop | psw | |
POP | acc | |
POP | ie | /odtwórz przerwania |
ret masklabel:
reti | ||
)else( | ||
push | acc | |
push | psw | |
mov | accapml | /szukaj pwm tonowego |
orl | a, ccapm2 | /szukaj pwm dzwonienia |
anl | a,#00000010b | /wyszukaj tylko bit pwm |
jz | pca_done | /zrzuć następną część, ; |
na wyjściu nie ma ;tonu ani dzwonienia /Jeżeli w danym momencie generujemy ton wybierania - Dial Tonę, to należy pobrać wartość bieżącą z /'tablicy wybranego tonu i przesłać ją do PCA1, tak aby w CEX1 (pl.4) była generowana właściwa /częstotliwość DTMF.
do_pca:
mov a,#0 read_table:
movc a,@a+dptr cjne a, #255,write_tone mov dph,highpoint mov dpl,lowpoint mo v a, # 0 /inicjalizuj wskaźnik /pobierz daną z tablicy /resetuj wskaźnik, to jest koniec tablicy /tak więc wskaźnik będzie
114
174 142 jmp read_table ore0n_tone:
mov aaρolh,p mov aaρo2h,p inc dptr pca^one:
cla ccfO clr ea mov ccappOl ,#00:0]:, mov a,ccapOh inc a mov ccapOh,a setb ea pop psw pop acc reti )Oi $noen prawidłowy /·oczytaj e pneowczę pozcj^ ; wstaw daną ca to no wej™ w^tawe Pan ą e wie Cownenanp a tylko pw, 0onoon lub /pwm dzooninnip działają w każdym zadanym czasie
VwuaeZ następne pczaule tablicy z nps0lonzm czasem /reet^ e flan ]odkokę 0 ; zabO/j e pcneopnipa /zaiO'©e ponownee dolne dęść Ogróonyopnn i zawieś /kompprpOor /pcnjjdZ ne ostatnie stornę /•w/Pże następne stron ;załoku1 górną (zz^će dme do porównania i ogngonie /uruchom komparator /odtO/uje ne nowe powpada .*********************************************************** f
Podprogramy ogmganiacn I/R .******************************************************
174 142
115
wenti pxl: | /Dana z pxl temp do pxl | |
push | iz | /zapamiętaj stan przerwań |
cle | ez | /brak przerwań |
cle | in peiect | |
push | mcc | |
push | 0 | /pusto rO |
setb | al | /B |
cle | al | |
mov | a,pxl temp | |
un1 | a,#11110000b | |
mov | b, a | |
mov | a,px2 temp | |
un1 | a, #0000111113 | /ZaPryymaO wysszo bity |
oel | a, b | wejściowe |
mov | r0,#00h | /dolny adreo do zatrzasku |
movx | @Ρ0,1 | scalonego układu I/O |
srtb | u0 | |
srtb | ul | |
pop | 0 | /odtwóro rO |
pop | acc | |
pop | ie | /odtwóro stan przerwań |
ert | ||
erud pxl: | ||
push | ie | /zapamietaO stan przerwań |
cle | ea | /łrrak przerwań |
cle | io select | |
push | mcc |
116
174 142
push | 0 | ;push u0 |
clr | aO | /A |
clr | al | |
mov | r0,#0h | /dolny adrec do zatrzasku peł koillπ/gl układu I/O |
move | ,,@ι0 | |
ani | a,#00001111b | /makuu c bity wyjόζύ^θ |
ani | pxl temp, #1 IŁ 110000b | /maskuj bity womakOolo w pel temp |
orl | pxl temp,a | /połązc funkają ani dane o/akoτlo/ i wyjściow/ w j/0/π bajt |
k/tb | i0 | |
setb | ił | |
pop | 0 | /pop rO |
pop | acc | |
pop | ie | /odtwórc stan przerwań |
ret r/a^pKl-Strobe:
puah | i/ | / zapamiętaj atan prz/rwań |
clr | ea | /brak przerwań |
clr | io_select | |
puah | acc | |
puah | 0 | /push rO |
clr | aO | ;A |
clr | al | |
mov | r0,#0h | /dolny adres do zatrzasku pxl |
koillπ/gl układu I/O | ||
move | ,,@ι0 | |
mov | iostatus,a | |
a/tb | aO | |
a/tb | ił | |
pop | 0 | /pop rO |
174 142
117
pop acc | |
pop is rst | ;odtróiz stan przerwań |
wróts pt2: | ;Dana z pt:2 temp do px2 | |
push | ie | stan przerwań |
clr | es | ;brak przerwań |
clr | io | |
push | acc | |
push | 0 | ;push rrO |
sstb | aa | /B |
clr | a1 | |
mov | a,ux1_esbu | |
ani | a,#11110000b | |
mov | b, i | |
mov | a,ut2_esbu | |
ani | 0000001111 | ;eaαeiyjbłl Ołee orsuci.owe |
orf | aob | |
mov | r0,#00h | ;ialob adres do zatrzasku ptl |
moYt | @r0/ a | scalonego układu I/O |
sstb | k0 | |
sstb | ll | |
pop | 0 | ;oiewóiy r0 |
pop | acc | |
pop | is | ;oiewórz stan urysirań |
rst riles_1OcC: | ;Dana z pt2 temp do doj | |
push | is | ;yauamiętaj stan pp^z^^^eiii |
clr | sa | ,Ίι: przerwań |
clr | io | |
push | acc |
118
174 142
push | 0 | /push rO |
clr | aO | /B |
setb | al | |
mov | a,lamps temp | |
ani | a,#11110000b | |
rl | a | |
rl | a | |
rl | a | |
rl | a | |
mov | r0,#00h | /dolny adres do zatrzasku pxl |
movx | @r0, a | scalonego układu I/O |
setb | aO | |
setb | al | |
pop | 0 | /odtwórz rO |
pop | acc | |
pop | ie | /odtwórz stan przerwań |
ret | ||
read px2: | ||
push | ie | /zapamiętaj stan przerwań |
clr | ea | /brak przerwań |
clr | io_select | |
push | acc | |
push | 0 | /push rO |
clr | aO | /C |
setb | al | |
mov | r0,#0h | /dolny adres do zatrzasku pxl |
movx | a, @r0 | scalonego układu I/O |
ani | a,#11110000b | /maskuj bity wyjściowe |
ani | px2 temp,#00001111b /maskuj bity wejściowe w |
174 142
119 sx1_tels
orl | px2 temp,a | ;po±ącz funkcja ani dane wiCścIowi |
setb | a0 | i wyjściowe w jeden bajt |
setb | al | |
sos | 0 | ^pop rO |
pop | acc | |
sos | ie | ··odtwóro stan przerwań |
pet pead io m | _a: | ;dana z px2 temp do do p |
push | ie | ;zapamiętuj stan prspzwaw |
clp | ea | ;brak przerwań |
setb | lk_eilict | |
; usop | scc | |
push | 0 | ;push r0 |
clp | s0 | ;b |
clr | ćil | |
mov | ρ0,#00 | ;nklny sdres do zatrzasku pxl |
movx | a, @p0 | scalonego układu I/O |
setb | s0 | |
setb | sl | |
clp | io eilech | |
sos | 0 | ;onhwrpz p0 |
; pop | scc | |
sos | ie | ;ontwrrz stan przerwań |
pet wpite io i b: | ;^^n^a z pxl temp do do p | |
push | te | ;lssamiitaC stan prsprnpń |
setb | io eeOekh | |
clr | es | ;bpsk s^r^z^^r^w^^ń |
120
174 142
pusS acc | |
push | 0 |
sotb | a0 |
clr | al |
mov | a,tk mb |
mov | r0,#00S |
Ι^Χ | @t0.l |
sotb | a0 |
setb | al |
clr | io soloct |
pop | 0 |
pop | acc |
pop | io |
rot |
; puish rO ;B 'dolny adres do zatrzasku pxi scalonego układu I'O ;odtwóro rO ; oft^^i^t^izo stan przerwań atpeo_ik_y_c: pusS io setb tk_aoloce clr oa pusS acc pusS 0 clr a0 sotb al mov a, to_y_c iot t0,#0OS movx (^0,ι sotb a0 sotb al clr io solsct 'Dana o px2_temp do px2 ;zapamietdO stan przerwań 'brak przerwań ;push rO 'B 'dolny adres do zatrzasku pxl scalonego układu IO
174 142
121 pop 0 pop acc pop ie ret reset_io_m: push ie /odtwórz rO /odtwórz stan przerwań /zapamiętaj stan przerwań
clr | ea | /brak przer |
setb | io_select | |
push | acc | |
push | 0 | /push rO |
setb | aO | /sterowanie |
setb | al |
mov | rO,#0h |
mov | a,#10010000b |
movx | @r0, a |
setb | aO |
setb | al |
clr | io_select |
pop | 0 |
pop | acc |
pop | ie |
ret | |
reset io: |
;pop rO /dolny adres do zatrzasku px2 scalonego układu 1/0 /odtwórz stan przerwań push ie clr ea setb push acc push 0 setb aO io select /zapamiętaj stan przerwań /brak przerwań /push rO /sterowanie
122
174 142 setb p1
mov | rO,#0h | /dolne alese Oe zzpoia saplonneo układu I/R |
mov | a, #10011000b | |
movx | @r0, p | |
setb | a0 | |
setb | al | |
clr | ioselect | |
pop | 0 | /pop rO |
pop | acc | |
pop | ie | /od0wócz stan przerwań |
ret |
.*********************************************************** r
/ PoOorgerpmz ogiιoaniczn f
• · kkkkkkkkkkkk-kkkkkkkkkkkkkkkkkk-kkkkkkkkkkkkkkkkkkkkkkkkkkkk r r /Dla pomocy przy uruchamianiu programu można zapisać ogólne komunikaty oymenniρnn miedzy TRU i /Cnljpak. Bufor tych komunikatów zajmuje lokacje od 90h Oo FFh.
cla_mse:
push 1 | /zapamiętaj | R1 |
mov rl,0mtiuf start | /wskaźnik na początek bufora | |
komunikp0óo | ||
mov msg ptr,r1 | /zappmiętjj | początek bufora |
alr_msg1: | ||
mov @rl,055h | /wypełńjj maską o wartościach |
55h inc r1 /wskaż npt0lonn lokację
174 142
123 cjne rl, #msgbuf_end, clr_msgl ; do końca bufora
pop 1 | /odtwórz Rl |
ret |
savemg: | |
push 1 | /zapamiętaj Rl |
mov rl,msg ptr | /pobierz bieżący wskaźnik |
cjne rl, #msgbuf_end,saveml /skocz, jeśli bufor komunikatów nie jest jeszcze zapełniony mov rl,#msgbuf start /przestaw początek, jeżeli
zapełniony | |
saveml: mov @rl,a | /zapamiętaj komunikat w buforze |
inc rl | /przesuń wskaźnik do przodu |
mov msg ptr,rl | /zapamiętaj przesunięty do |
pop 1 | następnego wykorzystania /odtwórz Rl |
exit: ret |
/Kasuj kopię wskaźnika LCD mikrotelefonu w buforze RAM wyświetlacza.
clr_dsp:
push 1 /zapamiętaj Rl mov rl,#dspbuf start /wskaźnik na początek bufora
komunikatów | |
mov dsp ptr,rl | /zapamiętaj początek bufora |
clr msgl: | |
mov @rl,#0ffh | /wypełnij maską o wartościach |
FFh inc rl /wskaż następną lokację
124
174 142 cjne rl,#dspbuf_end,clr_dspl /do końca buforą pop 1 /odtwórz Rl ret /Niektóre bloki TRU muszą przechowywać informacje wyświetlacza LCD mikrotelefonu w lokalnym buforze wyświetlacza.
save_dsp:
push 1 /zapamiętaj Rl mov rl,dsp_ptr /pobierz bieżący wskaźnik cjne rl,#dspbuf_end,save_dspl /skocz, jeśli bufor komunikatów nie jest jeszcze zapełniony mov rl,#dspbuf_start /przestaw początek, jeżeli zapełniony savedspl:
mov @rl,a /zapamiętaj komunikat w buforze inc rl /przesuń wskaźnik do przodu mov dsp_ptr,rl /uaktualnij wskaźnik do następnego wykorzystania pop 1 /odtwórz Rl save_dsp2:
/include(SPAIN.asm) ret $nolist
Śinclude(SPAIN4.asm) $list nop nop end/
174 142
174 142
FIG.1A
174 142
FIG.1B
174 142
KROK 25
KROK 16
KROK 17
KROK 18
KROK 19
KROK 20
KROK 21
KROK 22
KROK 23
KROK 24 NIE
USTAW ERROR_FLAG MAIN FLAG ERR0R = 1
INICJUJ ZMIENNE ' i.....Z
KASUJ „LEO-y’ STANU
OOŁACZ SŁUCHAWKĘ ABONENTA
OOŁACZ MODUŁ OBSŁUGOWY
ZWŁOKA
MOOUŁ OBSŁUGOWY ZDJĘCIA SŁUCHAWKI
ZWŁOKA
INTERFEJS WYKRYWAJĄCY ODWIESZENIE . CZY , SŁUCHAWKA ZDJĘTA ?
KROK 26 {γΑΚ
ODBLOKUJ TON WYBIERANIA
RETURNJ
FIG. 2
174 142
FIG. 3
174 142
FIG. 4
174 142
FIG. 5A
174 142
FIG. 5B
174 142
KROK 67 | |
USTAW RING.SECONO |
Ε
KROK 63
KROK 64
PĘTLA! ZOJECIE SŁUCHAWKI PRZEO UPŁYWEM 2S JEST NIEDOZWOLONE
KROK 65 NIE
KROK 66
WYKRYTO BŁAO ZDJĘCIA SŁUCHAWKI
KASUJ POŁĄCZENIE WCHODZĄCE
USTAW ERROR.FLAG MAIN ERR0R FLAG = 5
KROK 49
KROK 50
RETURN
FIG.5C
174 142
FIG .6
174 142
FIG.7A
174 142
FIG.7B
174 142
KROK 95
KROK 97
KROK 99
KROK 103
KROK 105
FIG. 8A
BtAO OOWIESZENIA
J KROK 96 ERR0R C0DE=1
BtAO OOWJESZENIA PRŻY DZWONIENIU
J KROK 98 ERR0R C00E=2
KROK 101
BtAO TONU WYBIERANIA
J KROK 100 ERR0R C00E=3
BtĄD TONÓW DTMF } KROK 102
ERR0R_C00E=4
BtAO WYKRYWANIA DZWONIENIA ł KR0K-104 ERROR COOE=5
BtAO OOPOWIEDZl NA OZWONIENIE
ERR0R C0DE=6
174 142
KROK 111
KROK 107
KROK 109
KROK 113
KROK 115
ERR0R C00E=7
BŁAO POŁĄCZENIA
J KROK 110 ERR0R C0DE=8
BLAO TONU ZAJĘTOŚCI } KROK 112 ERR0R C00E=9
BLAO STANU DZIAŁANIA | KROK 114 ERR0R C00E=10
BŁAO 1000Hz
I KROK 116 ERROR COOE 11
BŁĄD ZASILANIA-RA0I0
KROK 108
NIE
RETURN
FIG. 8B
174 142
KROK 117
KROK 118
KROK 119
KROK 120
KROK 121
KROK 122
KROK 123
KROK 124
FIG. 9
174 142
FiG.10
174 142
FiG .11
174 142
FIG.12
174 142
-IN
FIG.13
174 142
FIG .14
Departament Wydawnictw UP RP. Nakład 90 egz. Cena 6,00 zł
Claims (2)
- Zastrzeżenia patentowe1. Radiowe urządzenie nadawczo-odbiorcze w systemie łączności komórkowej zawierające nadajnik-odbiornik radiowy, blok interfejsu i urządzenie telekomunikacyjne dołączone do nadajnika-odbiornika radiowego, przy czym blok interfejsu łączy operacyjnie urządzenie telekomunikacyjne z nadajnikiem-odbiornikiem radiowym dla telefonicznych połączeń wychodzących albo połączeń odbieranych przez nadajnik-odbiornik radiowy, znamienne tym, że zawiera urządzenie testujące (10) dla kontrolowania i określania właściwego działania nadajnika-odbiornika radiowego i bloku interfejsu (14), przekaźnik (RELYl) do dołączania urządzenia testującego (10) do bloku interfejsu (14) w miejsce urządzenia telekomunikacyjnego, przy czym urządzenie testujące (10) zawiera układy (SSR1, Q4, U4) generowania funkcji wykonywanych przez urządzenie telekomunikacyjne do wygenerowania w bloku interfejsu (14) odpowiedzi dla określenia, czy blok interfejsu (14) działa poprawnie.
- 2. Urządzenie według zastrz. 1, znamienne tym, że urządzenie testujące (10) zawiera układy generowania połączenia telefonicznego wychodzącego przez blok interfejsu (14) i radiowy nadajnik-odbiornik, czyli przez radiowy system telefoniczny, z którym ten radiowy nadajnik-odbiornik jest związany, i na powrót do tego nadajnika-odbiornika, przy czym urządzenie testujące (10) zawiera następnie układ (U6) dla wykrywania sygnału zajętości przez nadajnik-odbiornik w odpowiedzi na to połączenie telefoniczne, przy czym układy (SSR1, Q4, U4) generowania funkcji, w tym generowania wychodzącego połączenia telefonicznego, wywołują numer aparatu telefonicznego, który został przydzielony temu nadajnikowi-odbiornikowi, do którego jest operacyjnie dołączony.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US3762793A | 1993-03-25 | 1993-03-25 | |
PCT/US1994/002281 WO1994022255A1 (en) | 1993-03-25 | 1994-03-02 | Self-diagnostic system for cellular-transceiver systems |
Publications (1)
Publication Number | Publication Date |
---|---|
PL174142B1 true PL174142B1 (pl) | 1998-06-30 |
Family
ID=21895376
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PL94310775A PL173533B1 (pl) | 1993-03-25 | 1994-03-02 | Sposób i urządzenie do testowania bloku interfejsu nadawczo-odbiorczego w systemie łączności komórkowej |
PL94321371A PL174142B1 (pl) | 1993-03-25 | 1994-03-02 | Radiowe urządzenie nadawczo-odbiorcze w systemie łączności komórkowej |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PL94310775A PL173533B1 (pl) | 1993-03-25 | 1994-03-02 | Sposób i urządzenie do testowania bloku interfejsu nadawczo-odbiorczego w systemie łączności komórkowej |
Country Status (34)
Country | Link |
---|---|
EP (1) | EP0691058B1 (pl) |
JP (1) | JPH08510872A (pl) |
CN (1) | CN1064808C (pl) |
AT (1) | ATE162036T1 (pl) |
AU (1) | AU674406B2 (pl) |
BG (1) | BG100027A (pl) |
BR (1) | BR9405970A (pl) |
CA (1) | CA2154789C (pl) |
CZ (1) | CZ287151B6 (pl) |
DE (1) | DE69407773T2 (pl) |
DK (1) | DK0691058T3 (pl) |
EC (1) | ECSP941059A (pl) |
EE (1) | EE9400437A (pl) |
ES (1) | ES2080708T3 (pl) |
FI (1) | FI954509A0 (pl) |
GR (1) | GR3026552T3 (pl) |
HK (1) | HK1002642A1 (pl) |
HU (1) | HU216556B (pl) |
IL (1) | IL108809A (pl) |
LT (1) | LT3323B (pl) |
LV (1) | LV11510A (pl) |
MD (1) | MD940289A (pl) |
MY (1) | MY110488A (pl) |
NO (1) | NO953791D0 (pl) |
NZ (1) | NZ263661A (pl) |
OA (1) | OA10229A (pl) |
PE (1) | PE12695A1 (pl) |
PL (2) | PL173533B1 (pl) |
SI (1) | SI9420026A (pl) |
SK (1) | SK118995A3 (pl) |
TR (1) | TR28486A (pl) |
UY (1) | UY23744A1 (pl) |
WO (1) | WO1994022255A1 (pl) |
ZA (1) | ZA941880B (pl) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI102124B1 (fi) | 1996-03-07 | 1998-10-15 | Nokia Telecommunications Oy | Tilaajaliittymän kaukotestaus johdottoman tilaajaliittymän toteutettavassa radiojärjestelmässä |
US6349199B1 (en) | 1998-02-12 | 2002-02-19 | Ericsson Inc. | Reliable continuously operating fixed cellular terminal |
DE19953640A1 (de) * | 1999-11-09 | 2001-05-10 | Deutsche Telekom Ag | Verfahren zum telekommunikationsgestützten Schutz und Auffinden von Lebewesen |
CN100407839C (zh) * | 2004-12-17 | 2008-07-30 | 中兴通讯股份有限公司 | 移动电话通讯的自动测试方法及移动电话自动呼叫器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5989043A (ja) * | 1982-11-12 | 1984-05-23 | Hitachi Ltd | 移動電話装置保守診断方式 |
US4658096A (en) * | 1984-09-18 | 1987-04-14 | Metrofone, Inc. | System for interfacing a standard telephone set with a radio transceiver |
US4737975A (en) | 1984-09-18 | 1988-04-12 | Metrofone, Inc. | Programmable system for interfacing a standard telephone set with a radio transceiver |
US4788711A (en) * | 1985-11-25 | 1988-11-29 | Cellular Communications Corporation | Apparatus and method for a cellular freeway emergency telephone service |
US5020135A (en) * | 1987-03-27 | 1991-05-28 | Teletec Corporation | Computerized multistandard, field-convertible, multiregional/multiservice, remote controllable, remote programmable mobile two-way radio system with digital serial bus link, built-in programmer and autodiagnostics |
GB8823408D0 (en) * | 1988-10-05 | 1988-11-09 | Smith Myer | Electronic test equipment |
US5095500A (en) * | 1989-12-07 | 1992-03-10 | Motorola, Inc. | Cellular radiotelephone diagnostic system |
US5073919A (en) * | 1990-10-10 | 1991-12-17 | Teradyne, Inc. | Automatically testing telephone lines |
-
1994
- 1994-03-01 IL IL10880994A patent/IL108809A/xx not_active IP Right Cessation
- 1994-03-02 AT AT94912175T patent/ATE162036T1/de not_active IP Right Cessation
- 1994-03-02 PL PL94310775A patent/PL173533B1/pl unknown
- 1994-03-02 SK SK1189-95A patent/SK118995A3/sk unknown
- 1994-03-02 BR BR9405970A patent/BR9405970A/pt not_active IP Right Cessation
- 1994-03-02 AU AU64431/94A patent/AU674406B2/en not_active Ceased
- 1994-03-02 JP JP6520147A patent/JPH08510872A/ja active Pending
- 1994-03-02 WO PCT/US1994/002281 patent/WO1994022255A1/en active IP Right Grant
- 1994-03-02 ES ES94912175T patent/ES2080708T3/es not_active Expired - Lifetime
- 1994-03-02 EP EP94912175A patent/EP0691058B1/en not_active Expired - Lifetime
- 1994-03-02 SI SI9420026A patent/SI9420026A/sl unknown
- 1994-03-02 CA CA002154789A patent/CA2154789C/en not_active Expired - Lifetime
- 1994-03-02 CN CN94191585A patent/CN1064808C/zh not_active Expired - Fee Related
- 1994-03-02 MY MYPI94000489A patent/MY110488A/en unknown
- 1994-03-02 DE DE69407773T patent/DE69407773T2/de not_active Expired - Fee Related
- 1994-03-02 HU HU9502752A patent/HU216556B/hu not_active IP Right Cessation
- 1994-03-02 NZ NZ263661A patent/NZ263661A/en unknown
- 1994-03-02 DK DK94912175T patent/DK0691058T3/da active
- 1994-03-02 PL PL94321371A patent/PL174142B1/pl unknown
- 1994-03-17 ZA ZA941880A patent/ZA941880B/xx unknown
- 1994-03-18 MD MD94-0289A patent/MD940289A/ro not_active Application Discontinuation
- 1994-03-21 PE PE1994238719A patent/PE12695A1/es not_active Application Discontinuation
- 1994-03-21 UY UY23744A patent/UY23744A1/es not_active IP Right Cessation
- 1994-03-24 LT LTIP1901A patent/LT3323B/lt not_active IP Right Cessation
- 1994-03-25 TR TR00336/94A patent/TR28486A/xx unknown
- 1994-03-25 EC EC1994001059A patent/ECSP941059A/es unknown
- 1994-11-23 EE EE9400437A patent/EE9400437A/xx unknown
-
1995
- 1995-09-15 CZ CZ19952408A patent/CZ287151B6/cs not_active IP Right Cessation
- 1995-09-18 OA OA60708A patent/OA10229A/en unknown
- 1995-09-22 FI FI954509A patent/FI954509A0/fi unknown
- 1995-09-25 BG BG100027A patent/BG100027A/xx unknown
- 1995-09-25 NO NO953791A patent/NO953791D0/no unknown
- 1995-09-25 LV LV950293A patent/LV11510A/xx unknown
-
1998
- 1998-03-05 HK HK98101829A patent/HK1002642A1/xx not_active IP Right Cessation
- 1998-04-06 GR GR980400739T patent/GR3026552T3/el unknown
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5469494A (en) | Self-diagnostic system for cellular-transceiver systems | |
US6690923B1 (en) | Self-diagnostic system for cellular-transceiver systems with remote-reporting capabilities | |
PL178631B1 (pl) | Sposób zdalnego testowania bloku interfejsu i urządzenia nadawczo-odbiorczego w systemie łączności komórkowej | |
US7089034B1 (en) | Concurrent wireless/landline interface | |
US5946616A (en) | Concurrent wireless/landline interface apparatus and method | |
US5859894A (en) | Self-diagnostic system for cellular-transceiver systems with remote-reporting capabilities | |
US7212816B2 (en) | Fixed wireless telephone device | |
CA2571691A1 (en) | Remotely programmed telecommunications rf link module and method therefor | |
PL174142B1 (pl) | Radiowe urządzenie nadawczo-odbiorcze w systemie łączności komórkowej | |
KR100797702B1 (ko) | 사설 교환기에서 발신자 정보 송수신 장치 | |
EP0792057B1 (en) | Telephone ringback test device and method | |
CN101867662A (zh) | 用户通话的高阻监听装置和方法 | |
JPS6320071B2 (pl) | ||
CN102056213B (zh) | 一种终端贴片卡检测方法及系统 | |
JPS61206355A (ja) | 選択着信方式 | |
CN101640731B (zh) | 一种彩铃服务器及彩铃实现方法和彩铃辨识装置和方法 | |
JPS59161168A (ja) | 網制御装置 | |
KR20060037134A (ko) | 이동 단말의 성능 측정 장치 및 방법 | |
CN109587321A (zh) | 收发滤除方法、允许收发号码库的设置方法及系统 | |
WO2004019623A2 (en) | Call handling for a fixed wireless device | |
JPS6326945B2 (pl) | ||
JPH02235472A (ja) | 公衆電話網による非電話系端末のデータ転送方法とその端末付加装置 |