Single-Chip Modem Provides Low-Cost Data Communication: National Semiconductor Application Note 444 Wesley Lee July 1986
Single-Chip Modem Provides Low-Cost Data Communication: National Semiconductor Application Note 444 Wesley Lee July 1986
Single-Chip Modem Provides Low-Cost Data Communication: National Semiconductor Application Note 444 Wesley Lee July 1986
S
i
n
g
l
e
-
C
h
i
p
M
o
d
e
m
P
r
o
v
i
d
e
s
L
o
w
-
C
o
s
t
D
a
t
a
C
o
m
m
u
n
i
c
a
t
i
o
n
A
N
-
4
4
4
National Semiconductor
Application Note 444
Wesley Lee
July 1986
Single-Chip Modem
Provides Low-Cost Data
Communication
A simple modem provides an inexpensive way to link your
IBM PC or compatible computer with a remote system The
modem which transmits data asynchronously at 300 baud
is easy to build and features both autodial and autoanswer
Using a simple design you can build an inexpensive modem
for your IBM PC or compatible computer Based on a single
chip that transforms digital computer data into analog fre-
quencies the modem lets you transmit data asynchronously
via telephone lines at 300 baud The circuit also uses a
DTMF (dual-tone multiple-frequency) tone-dialer chip a
DAA (data-access arrangement) telephone-line interface
and a UART that handles autoanswer and autodial func-
tions Configured to operate in your PCs IO address
space this modem circuit uses an equality detector and a 3-
to-8-line decoder to decode address lines IO strobes and
DMA strobes
The modem design is based on the MM74HC942 modem
chip Figure 1 illustrates the chips architecture By eliminat-
ing two external op amps an on-chip line driver and a 2-to-
4-wire hybrid simplify the task of interfacing to the telephone
line The line driver drives a 600X line through an external
600X terminating resistor thus providing a nominal imped-
ance match between the modem and the phone line When
the programmable level-adjust resistor R
1
is connected be-
tween the TLA pin and V
CC
the line driver transmits at lev-
els approaching 0 dBm
You can access the driver externally through the DSI and
EXI pins (pins 1 and 18) The EXI input provides a set gain
TLF86911
FIGURE 1 The MM74HC942s 2-to-4-wire hybrid and line
driver let you use simple circuitry to interface your
modem to the telephone line
of about 2 The DSI input allows you to achieve an adjusta-
ble gain reaching 0 dBm via series resistor R
2
The gain is
approximately 20kdR
2
3FF
HEX
the secondary location is 2F8
HEX
2FF
HEX
When
the decoding logic uses these two locations this interface
design is compatible with IBM PC software (For other ad-
dress locations consult the documentation for your comput-
er and for any other add-in cards your computer is using)
The interface circuit employs an HCT688 equality detector
and an HCT138 3-to-8-line decoder When you connect the
IOR and IOW strobes in a NAND configuration the circuit
generates the IO strobe while the direct-memory-access
(DMA) strobe acts as the AEN output from the IBM bus The
equality detector compares its corresponding P and Q in-
puts and checks to see whether P equals Q When P and Q
are equal the PeQ output selects the HCT138 decoder
and the HCT245 bidirectional bus driver
The HCT138 further decodes the address lines selecting as
many as eight devices although it enables only two the
TP5088 tone dialer and the 8250 UART Output Y
7
directly
enables the 8250 The Y
5
output however indirectly en-
ables the TP5088 via an HC123 dual one-shot This output
triggers the one-shot which activates the TP5088 for a pre-
determined time The lower three address lines (A
2
through
A
0
) access the 8250s internal registers by addressing the
UART directly
The 8250 and the HC942 provide the serial communications
link between the host and remote computers During trans-
mission the UART converts parallel data from the mP to
serial data for the HC942 The HC942 receives this data at
its TXD input and transmits an FSK output at the TXA out-
put During data reception the HC942 receives incoming
tones at the RXA
1
input demodulates the tones and sends
serial data through the RXD output to the 8250
Because the HC942 doesnt require an external line driver
or a hybrid the modem circuit requires only a few passive
components Resistor R
12
sets the line drivers transmit lev-
el (Table II) at the same time that C
6
adjusts the carrier-de-
tect timing circuit This circuit waits a predetermined time
(the time period is a function of the RC time constant) be-
fore responding to a carrier and sending the CD (Carrier
Detected) output high In addition the circuit delays for a
short time before dropping the CD output low again Use the
following equations to find the appropriate delay times
T
OFF-TO-ON
e 64 c C
and T
ON-TO-OFF
e 054 c C
where C is in mF and T is in seconds The first equation
gives the delay before transmission begins the second
gives the delay before transmission ends Note that these
times differ considerably When the modem is preparing to
transmit it must delay long enough to ensure that the carrier
is stable carrier stability is not as critical when the modem is
preparing to stop transmitting
The HC942 uses a common 3579-MHz crystal (without
loading capacitors) to generate all the internal timing and
modulated sine waves The crystal also drives the TP5088s
oscillator It doesnt however drive the 8250s oscillator
because IBM PC software requires the 8250 to use a
18432-MHz crystal You can adjust the carrier-detection trip
points by applying an external voltage at the CDA (Carrier-
Detect Adjust) pin When you double the nominal voltage
(12V) the trip points increase by 6 dB Similarly when you
cut the voltage in half the trip points decrease by 6 dB
TABLE II Standard Resistor Values
Transmit Level Transmit Level Adjust
(dBm) Resistor R
12
(X)
b12 OPEN
b11 198k
b10 92k
b9 549k
b8 361k
b7 252k
b6 178k
b5 124k
b4 866
b3 562
b2 336
b1 150
0 0
UNIVERSAL SERVICE ORDER CODE
2
TLF86913
FIGURE 3a The interface hardware between the HC942 and the computer (an IBM PC or compatible) comprises four
major parts the decoding logic the communication link the tone dialer and the data-access arrangement (DAA)
3
T
L
8
6
9
1
4
F
I
G
U
R
E
3
b
4
Because the modem operates in full-duplex mode most of
the handshake signalsData Terminal Ready (DTR) Clear
To Send (CTS) etcoperate as general-purpose control
signals You need to use only the DCD (Data Carrier Detect)
and RI (Ring Indication) signals To control the modem the
UART switches the HC942 into the originateanswer mode
and the squelch mode (modulator disabled) through outputs
RTS and OUT1 The 8250 also closes the onoff-hook-
switch relay through output DTR
The 8250 receives status information from the carrier-detec-
tion and ring-detection circuits When a carrier is present
the internal carrier detector of the HC942 sends a Carrier
Detected signal to the DCD input port of the 8250 This
signal gives the cue to begin data communication Similarly
the ring detector in the DAA sends a signal to the RI input
port during a ring signal
The DTMF tone dialer operates by summing two tones one
from a low group and one from a high group (Table III) The
tone dialer then sends the composite tone to the telephone
companys central office The TP5088 which can directly
decode a 4-bit binary code becomes active when the Tone
Enable receives a low-to-high transition and it remains ac-
tive as long as the input stays high This input is connected
to the HC123 one-shot which sets the duration of the
DTMF tone The FCC requires that tone duration have a
minimum cycle time of 100 ms a pulse duration of 50 ms a
minimum interdigit interval of 45 ms and a maximum interdi-
git interval of 3 sec
TABLE III Functional Truth Table
Keyboard Data Inputs Tone Tones Out
Mute
Equivalent
D
3
D
2
D
1
D
0
Enable
f
L
(Hz) f
H
(Hz)
X X X X X 0 0V 0V 0V
1 0 0 0 1 L 697 1209 OC
2 0 0 1 0 L 697 1336 OC
3 0 0 1 1 L 697 1477 OC
4 0 1 0 0 L 770 1209 OC
5 0 1 0 1 L 770 1336 OC
6 0 1 1 0 L 770 1477 OC
7 0 1 1 1 L 852 1209 OC
8 1 0 0 0 L 852 1336 OC
9 1 0 0 1 L 852 1477 OC
0 1 0 1 0 L 941 1336 OC
1 0 1 1 L 941 1209 OC
1 1 0 0 L 941 1477 OC
A 1 1 0 1 L 697 1633 OC
B 1 1 1 0 L 770 1633 OC
C 1 1 1 1 L 852 1633 OC
D 0 0 0 0 L 941 1633 OC
Before coupling a tone dialer to the phone lines you must
make sure the dialer meets certain FCC guidelines For in-
stance you must maintain specified dc voltages and loop
currents for all loop lengths match the impedance to the
phone line and provide tones within specified amplitude
and distortion limits
By designing the DAA correctly you can make your tone
dialer meet the first two of these guidelines Because the
5088 generates low tone distortion you can ignore the dis-
tortion limit However you must boost the 5088s output
levels to the output levels shown inFigure 4 Using the inter-
nal line driver of the HC942 you can raise the 5088s mini-
mum output level to 0 dBm Transistor Q
4
raises the output
level of the line driver to its maximum by shorting the trans-
mit-level adjustment resistor R
12
TLF86915
FIGURE 4 Although the TP5088 tone dialer allows you
to ignore distortion limits you must boost its output
levels to conform with the FCC limits shown here
DAA PERFORMS DUAL FUNCTIONS
The DAA is both a protective device and a functional mo-
dem interface Although the DAA is simple you should sub-
mit your final design to qualified testers to ensure that your
circuit conforms to FCC rules (part 68 and part 15)
In its protective capacity the DAA provides surge protection
from natural hazards (like lightning) and from induced volt-
ages generated by relay coils The DAA also provides dc
isolation between the phone line and the modem Its mo-
dem-interface functions include ring detection and on- and
off-hook control The DAAs ring-detection circuit sends a
signal to the CPU via the 8250 (shown in Figure 3a) when
an incoming ring occurs On- and off-hook control takes
place via a relay that the 8250 controls with its DTR signal
The DAA has three sections the transformer the relay and
the ring detector The circuits 600X 11 transformer iso-
lates the modem from the phone lines preventing line inter-
ference For voice and data communication the transformer
must have a flat frequency response from 300 to 3300 Hz
with little harmonic distortion As you can see from Figure
3b a current sink (Q
2
and Q
3
) is connected in parallel with
the transformer The diode drop across R
18
shunts excess
current
The current flowing through telephone lines varies from 20
to 120 mA If your design requires a transformer that cant
handle at least 30 mA youll need to add the current sink to
shunt the excess current from the phone line preventing
transformer saturation Of course if you were to use a trans-
former that could handle more than 30 mA you wouldnt
need a current sink but the transformer would be both
heavy and expensive
A relay in the DAA provides on- and off-hook control By
closing the relay switches the modem off-hook and con-
nects the DAA to the telephone line The DTR signal from
the 8250 controls this relay by switching Q
4
on This transis-
tor allows current to flow through the relay and close its
contacts A dpdt relay completely isolates the relay-control
circuit when the modem is on-hook
5
The ring-detector circuit in Figure 3b sends a signal to the
CPU via the 8250 when an incoming ring occurs Because
the incoming ring signal is nominally 90V rms you cant
couple it directly to the DAA The ring detector includes a
27V zener diode a capacitor (C
10
) and an optocoupler The
zener diode prevents noise from tripping the ring detector
C
10
creates a high dc impedence so that the ring detector
wont affect other circuits in the DAA Note that C
10
must be
able to accommodate high voltages such as the high ampli-
tude of the ring signals The optocoupler provides isolation
and translates the high-voltage ring signals into digital lev-
els
The optocoupler toggles on and off during a ring producing
a series of low-going pulses An RC network (R
21
and C
11
)
smoothes these pulses to a single low pulse The 8250 re-
ceives this pulse at its RI (ring indication) input port The mP
detects the ring by polling this port or by servicing the gen-
erated interrupt
PC EMULATES A DUMB TERMINAL
The communication program for the modem (the listing be-
gins next page) consists of three routines (for autodial au-
toanswer and terminal emulation) The first two routines es-
tablish a connection by either dialing a number or answering
a call The main terminal routine then configures the IBM to
act as a dumb terminal that transmits to the phone line all
characters you enter from the keyboard and displays all in-
coming characters on the CRT The program is menu driv-
en you select either the autodial or the autoanswer routine
At the end of these routines control jumps either to the
terminal program or to the main menu You use the table of
equates at the beginning of the program to set up the ini-
tialization parameters
The communication program frequently accesses the mo-
dem registers to control outputs DTR RTS and OUT1 It
also polls the line status register to read status-input ports
RI and DCD
When you select the autoanswer option from the menu the
routine begins by polling bit 6 of the modems status register
to detect incoming calls When a ring occurs this bit goes
high The modem does not immediately go off-hook howev-
er because the ring signals high voltage causes arcing be-
tween the relay contacts Instead the program delays an-
swering for 25s lifting the modem off-hook between rings
The modem goes off-hook by setting bits 0 and 1 of
the modems control register low The RTS and DTR out-
puts in turn go low These outputs then switch the HC942
into the answer mode by closing the relay to establish a
connection
After the modem answers the telephone a 2s billing delay
must occur (according to FCC regulations) before transmis-
sion can begin During this period the telephone companys
central offices exchange the callers billing information A
software delay keeps bit 2 of the modems control register
low ensuring that the HC942 engages the squelch function
during this period After the billing delay the HC942 disen-
gages the squelch function and the mP polls bit 7 of the
modems status register If bit 7 is high a carrier is present
and data communication can begin The autoanswer routine
then jumps to the main program to transmit and receive
data If the other computer fails to respond with a carrier
the autoanswer routine times out and control returns to the
main menu
The autodial routine first asks you whether you want to
make a long-distance or a local call and then enters the
phone number into buffer BUFF1 Next the modem dials
the phone number by fetching a digit from the buffer and
sending it to the TP5088 The mP then waits 200 ms During
this period the HC123 one-shot enables the TP5088 for 80
ms and then disables it for the remaining 120 ms Therefore
each digit comprises an 80 ms DTMF tone followed by 120
ms of silence After the modem dials the phone number the
mP polls bit 7 in the status register to see if a carrier is
present Modem operation then takes place as in the au-
toanswer mode
The main program enters either from the autodial or the
autoanswer routine It polls the line status register (LSR)
and the modems control register (MCR) to determine
whether characters from the keyboard or the telephone line
are present and to detect transmission errors or carrier loss
When keyboard characters are present bit 5 of the LSR
goes high when line characters are present bit 0 goes high
The mP then reads the characters from the UART Bits 1 2
and 3 of the LSR indicate transmission errors when such
errors occur the CRT displays a question mark Bit 7 of the
MCR indicates carrier loss If the main program detects car-
rier loss during transmission it disconnects the modem and
returns to the main menu
6
00NNURl0A1l0R$ FR00RAN for the H0942.
_
_ 1aIle of Equates
_
1F5033 E@U 2E3H _AIIR. 0F 1F5033
RBR E@U 2F3H _RE0El7ER BUFFER RE0.
1HR E@U RBR _1RAR$Nl11ER H0LIlR0 RE0.
LIL E@U RBR _L0ER Il7l$0R LA10H
lER E@U RBR0l _lR1R. ERABLE RE0.
UIL E@U RBR0l _UFFER Il7l$l0R LA10H
llR E@U RBR02 _lR1R. lI. RE0.
L0R E@U RBR0 _LlRE 00R1R0L RE0.
N0R E@U RBR04 _N0IEN 00R1R0L RE0.
L$R E@U RBR05 _LlRE $1A1U$ RE0.
N$R E@U RBR08 _N0IEN $1A1U$ RE0.
$0R E@U RBR07 _$0RA10H RE0.
BAUIl E@U 0F4H _L0ER BAUI RA1E Il7l$0R
BAUI2 E@U l _UFFER BAUI RA1E Il7l$0R
L0R1L E@U 07H _IA1A 00R1R0L - 3 IA1A Bl1$, 2 $10F
_ Bl1$, R0 FARl1Y
L00FH E@U 90 _Il0l1 00UR1ER F0R L00AL FH0RE R0.
LIFH E@U l20 _Il0l1 00UR1ER F0R L0R0 Il$. FH R0.
_
$1A0K $E0NER1 FARA $1A0K $1A0K
IB 258 IUF|0,
$1A0K ERI$
_
IA1A $E0NER1 FARA FUBLl0 IA1A
BUFF IB 258 IUF|0, _BUFFER F0R FH0RE RUNBER
N$0l IB lR IlALlR0 N0IE
N$02 IB ls call lon uistance |Y/R,
N$0 IB Enter lon uis. ph.no. |l-AAA-FFF-$$$$,
N$04 IB Enter local ph. no. |9-FFF-$$$$,
N$05 IB Ro answer, call aain |Y/R,
N$08 IB Iialin anu waitin for a response....
N$07 IB N0IEN 00NNURl0A1l0R$ FR00RAN
IB l ..... Iial a numIer
IB 2 ..... Auto-answer routine
IB ..... Exit anu return to I0$
N$03 IB Fhone line has Ieen uisconnecteu.
N$09 IB 0arrier Ietecteu. Fhone is connecteu
N$0l0 IB AU10-AR$ER N0IE
IB $trike any key to exit moue
N$0ll IB Rin uetecteu, waitin for carrier...
N$0l2 IB Ro carrier uetecteu, phone uisconnecteu.
ERR IB ...lnvaliu entry, re-enter phone no.
IA1A ERI$
7
COMMUNICATIONS PROGRAM for the HC942 (Continued)
_
00IE $E0NER1 FARA FUBLl0 00IE
FUBLl0 $1AR1l
$1AR1l FR00 FAR
_
_ Froram Frolo
_
A$$UNE 0$:00IE
FU$H I$
N07 AX,0
FU$H AX
N07 AX,IA1A
N07 I$,AX
A$$UNE I$:IA1A
_
_ lnitialize the Line 0ontrol Reister of UAR1
_ - Ro. of uata anu stop Iits, Iauu rate, anu parity of
or no parity
N07 IX,L0R _LlRE 00R1R0L RE0
N07 AL,30H _FREFARE F0R BAUI RA1E Il7.
0U1 IX,AL
N07 IX,LIL _L0ER Il7l$0R LA10H
N07 AL,BAUIl _ L0ER Il7l$0R
0U1 IX,AL
N07 IX,UIL _UFFER Il7l$0R LA10H
N07 AL,BAUI2 _ UFFER Il7l$0R
0U1 IX,AL
N07 IX,L0R _LlRE 00R1R0L RE0.
N07 AL,L0R1L _ UAR1 IA1A 00R1R0L
_ $ee E@U for uata control
0U1 IX,AL
_
_ IisaIle interrupts of 3250 UAR1
_
N07 IX,lER _lR1R. ERABLE RE0.
N07 AL,0 _Il$ABLE ALL lR1R. 0F 3250
0U1 IX,AL
_
_ $elect Auto-uial or Auto-answer routine
_
NERU: N07 BX,0FF$E1 N$07 _$H0 0FERlR0 NE$$A0E
0ALL Il$FLAY
0ALL 0R~LF _
k
0R
l
ARI
k
LF
l
0ALL Il$FLAY
0ALL Il$FLAY
0ALL Il$FLAY
0ALL 0R~LF
0ALL lRF0HAR
0ALL Il$F0HAR
0ALL 0R~LF _
k
0R
l
ARI
k
LF
l
8
COMMUNICATIONS PROGRAM for the HC942 (Continued)
0NF AL,l _0010 AU10-IlAL R0U1lRE lF l
5E IlAL
0NF AL,2 0010 AU10-AR$ lF 2
5E AR$
RE1 _RE1URR 10 I0$
_
_ AU10-AR$ER N0IE
_
_ 1his routine answers the phone 2.5 seconus after rin is uetecteu.
_ lf after l0 seconus no carrier is uetecteu, proram returns to the menu.
_
AR$: N07 BX,0FF$E1 N$0l0 _Il$FLAY AU10-AR$ NE$$A0E
0ALL Il$FLAY
0ALL Il$FLAY
AAR$: N07 AH,l
lR1 l8H
5R7 NERUl _EXl1 lF ARY KEY l$ $1RU0K
N07 IX,N0R _N0IEN 00R1R0L RE0.
lR AL,IX
1E$1 AL,40H _1E$1 RlR0 lRIl0A10R ~ Rl4l
57 AAR$
5NF RlR0
NERUl: 0ALL lRF0HAR _0LEAR 0HAR. lR KEYB0ARI
5NF NERU
_
_ ait for 2.5 seconus after rin is uetecteu
_
RlR0: N07 0l,l2 _L0AI IELAY 00UR1ER
Al1l: R0F
0ALL IELAY _IELAY F0R 0.2 $E0
L00F Al1l
N07 BX,0FF$E1 N$0ll _RlR0 HA$ BEER IE1E01EI
0ALL Il$FLAY
_
_ $witch N0IER into answer moue ~ 0/A40
_
N07 IX,N0R _N0IEN 00R1R0L RE0.
N07 AL, _I1R40, R1$40, 0U1lel lR AR$. N0IE ARI
_ N0IEN $@UEL0HEI
0U1 IX,AL
_
_ ait for 2 seconu Iillin uelay
_
N07 0X,l2I _L0AI IELAY 00UR1ER
Al12: R0F
0ALL IELAY
L00F Al12
N07 IX,N0R _N0IEN 00R1R0L RE0.
N07 AL,7 _I1R40, R1$40, 0U1l40 N0IEN UR$@0H
0U1 IX,AL
9
COMMUNICATIONS PROGRAM for the HC942 (Continued)
_
_ Foll for carrier. 1imeout after l0 seconus
_
N07 0X,500 _L0AI 1lNE0U1 00UR1ER
0ARR: N07 IX,N$R
lR AL,IX
1E$1 AL,30H _1E$1 F0R 0ARRlER ~ I0I4l
5N7 00NNl
0ALL IELAY _Al1 0.2 $E0 1HER F0LL A0AlR
L00F 0ARR
5NF R0
00NNl: 5NF 00NN _00 10 NAlR FR00RAN
_
_ Ro carrier uetecteu after answerin phone, han up anu o Iack
_ to auto-answer routine
_
R0: N07 BX,0FF$E1 N$0l2
0ALL Il$FLAY
N07 IX,N0R _N0IEN 00R1R0L RE0.
N07 AL,00 _00IE 10 HAR0 UF FH0RE
0U1 IX,AL
5NF AR$
_
_ IlALlR0 R0U1lRE
_
_ Ietermine lon uistance or local call
_
IlAL_ N07 BX,0FF$E1 N$0l _Il$FLAY 0FERlR0 NE$$.
0ALL Il$FLAY
lNF: N07 BX,0FF$E1 N$02 _ L0R0 Il$1AR0E
0ALL Il$FLAY
0ALL lRF0HAR _lRFU1 0HAR.
0ALL Il$F0HAR _Il$FLAY 0HAR.
0ALL 0R~LF _
k
0R
l
ARI
k
LF
l
0NF AL,R _l$ 0HAR. A n 0R A R
5E $H1
0NF AL,n
5E $H1
_
_ Enter lon uistance phone numIer into Iuffer
_
N07 BX,0FF$E1 N$0 _FR0NF1 F0R L0R0 Il$. 0ALL
0ALL Il$FLAY
N07 BX,0FF$E1 BUFF _$1AR1lR0 0FF$E1 0F BUFFER
N07 0L,LIFH _00UR1ER L0R0 Il$. FH. RUNBER ARI
k
0R
l
0ALL BUFFER _ER1ER FH. R0. lR10 BUFFER
0ALL 0R~LF _
k
0R
l
ARI
k
LF
l
5NF 0FFHK
10
COMMUNICATIONS PROGRAM for the HC942 (Continued)
_
_ Enter local phone numIer into Iuffer
_
$H1: N07 BX,0FF$E1 N$04 _FR0NF1 F0R L00AL 0ALL
0ALL Il$FLAY
N07 BX,0FF$E1 BUFF _$1AR1lR0 0FF$E1 0F BUFFER
N07 0L,L00FH _00UR1ER F0R L00AL FH. RUNBER ARI
k
0R
l
0ALL BUFFER
0ALL 0R~LF _
k
0R
l
ARI
k
LF
l
_
_ 1ake phone off-hook ~ I1R40. 0U1l4l, 0U1240
_
0FFHK: N07 IX,N0R _N0IEN 00R1R0L RE0.
N07 AL,05H _I1R40, 0U1l4l,
0U1 IX,AL _ 0U1240 N0IEN l$ F0EREI I0R
_
_ ait for 2 sec. to et a uial tone
_
N07 0X,l00
L00F2: R0F
0ALL IELAY _Al1 F0R 200 ms
L00F L00F2 _L00F BA0K l0 1lNE$ F0R A 101AL 0F 2000 ms
_
_ Iial phone numIer: 0et numIer from Iuffer, senu uata to 1F5033 for
_ 30 ms anu off l20 ms. 1his is continueu until a
_
k
0R
l
is encountereu.
_
0Ll _Il$ABLE lR1R. 0F 3033
N07 BX,0FF$E1 N$08 _Il$FLAY NE$$A0E8
0ALL Il$FLAY
0ALL 0R~LF _
k
0R
l
ARI
k
LF
l
N07 BX,0FF$E1 BUFF _N07E 10 $1AR1lR0 AIIR. 0F BUFFER
L00F: N07 IX,1F5033 _AIIR. 1F5033
N07 AL,BX _lRFU1 0HAR. FR0N BUFFER
0NF AL,0IIH _l$ 0HAR. A II HEX
5E 0I _YE$, ERI IlALlR0
0U1 IX,AL
0ALL IELAY _Al1 200 ms
lR0 BX
5NF L00F
_
_ ait for carrier uetection or timeout
_
0I: $1l _ERABLE lR1R. 0F 3033
N07 IX,N0R _N0IEN 00R1R0L RE0.
N07 AL,l _1AKE N0IEN 0U1 0F F0ER I0R N0IE
0U1 IX,AL
0ALL IELAY _Al1 F0R 0.4 $E0
0ALL IELAY
N07 0X,l000
11
COMMUNICATIONS PROGRAM for the HC942 (Continued)
L00F4 N07 IX,N$R _N0IEN $1A1U$ RE0.
lR AL,IX
1E$1 AL,30H _1E$1 F0R I0I40
5R7 00NN
0ALL IELAY _Al1 200 ms, 1HER 0K, I0I A0AlR
L00F L00F4
_
Ro answer after 20 sec., han up, then call aain or return to I0$
_
N07 IX,N0R _N0IEN 00R1R0L RE0.
N07 AL,00 _00IE 10 UAR1 10 HAR0 UF FH0RE
0U1 IX,AL
N07 BX,0FF$E1 N$05 _ R0 AR$., 0ALL A0AlR
0ALL Il$FLAY
0ALL lRF0HAR _lRFU1 0HAR.
0ALL Il$F0HAR _E0H0 0HAR.
0ALL 0R~LF _
k
0R
l
ARI
k
LF
l
0NF AL,Y _l$ 0HAR. A Y 0R A y
5E BA0K
0NF AL,y
5E BA0K
5NF NERU _00 BA0K 10 NAlR NERU
BA0K: 5NF 0FFHK
_ NAlR FR00RAN
_ 1his is the communication routine. 1he Line $tatus
_ Reister is constantly polleu for incomin anu outoin
_ characters.
_
00NN: N07 IX,N0R _N0IEN 00R1R0L RE0l$1ER
N07 AL,05H _I1R40, 0U1l40 ~ N0IEN l$ UR$@UEL0HEI
0U1 IX,AL
N07 BX,0FF$E1 N$09 _lRIl0A1E 1HA1 0ARRlER l$ IE1E01EI
0ALL Il$FLAY
0ALL 0R~LF _
k
0R
l
ARI
k
LF
l
NAlR: N07 IX,L$R _LlRE 00R1R0L RE0.
lR AL,IX _lRFU1 LlRE $1A1U$ FR0N UAR1
1E$1 AL,lEH _ERR0R 00RIl1l0R
5R7 ERR0R
1E$1 AL,0lH _IA1A RE0El7EI
5R7 RE0
1E$1 AL,20H _1RAR$Nl$$l0R REAIY
57 NAlR
N07 IX,N$0 _N0IEN $1A1U$ RE0.
lR AL,IX
1E$1 AL,30H _I0I4l 0R IA1A 0ARRlER L0$1
57 R1RR
_
_ 0heck keyIoaru for key strike
_
N07 AH,l
lR1 l8H
57 NAlR _F0LL A0AlR lF R0 KEY $1RlKE
12
COMMUNICATIONS PROGRAM for the HC942 (Continued)
_
_ lnput character from keyIoaru anu senu it to the UAR1
_
N07 AH,0
lR1 l8H
N07 IX,1HR _1RAR$Nl$$l0R H0LIlR0 RE0.
0U1 IX,AL _$ERI 0HAR. 10 UAR1
5NF NAlR
_
_ Iata receiveu routine: reau uata from UAR1 anu uisplay it
_
_ Reau uata from the UAR1
_
RE0: N07 IX,RBR _RE0. BUFFER RE0.
lR AL,IX
ARI AL,7FH _$1RlF 0FF N$B
FU$H AX _$A7E AX
_
_ Iisplay character oItain from UAR1
_
N07 BX,0
N07 AH,l4
lR1 l0H _Il$FLAY 0HAR. 0R 0R1
F0F AX _RE$10RE AX
0NF AL,0IH _l$ 0HAR A
k
0R
l
5E 0R
0NF AL,0H _l$ 0HAR. A 0
5E R1RR
5NF NAlR
_
_ lf
k
0R
l
is hit, then auu a
k
LF
l
_
0R: N07 AL,0AH _
k
LF
l
N07 BX,0
N07 AH,l4
lR1 l0H
5NF NAlR
_
_ lf 0 is hit, then han up anu return to main menu
_
R1RR: N07 BX,0FF$E1 N$03
0ALL Il$FLAY
N07 IX,N0R _N0IEN 00R1R0L RE0.
N07 AL,00 _$ERI 00IE 10 UAR1 HAR0 UF FH. LlRE
0U1 BX,AL
5NF NERU _RE1URR 10 NAlR NERU
_
_ Error routine: uisplay a if there is a transmission error
_
ERR0R: N07 IX,RBR _RE0El7ER BUFFER RE0.
lR AL,BX _0LEAR RE0. BUFFER 0F ERR0RE0U$ IA1A
N07 AL,
N07 BX,0
13
COMMUNICATIONS PROGRAM for the HC942 (Continued)
N07 AH,l4
lR1 l0H _Il$FLAY A 0R 0R1
5NF NAlR
_
_
_
_ BUFFER suIroutine - places phone numIer in Iuffer |BUFF,
_ Entry: BX4offset of Iuffer
_ 0L4counter of phone numIer uiits
_ 0utput: BX,0L altereu
_
_
FUBLl0 BUFFER
BUFFER FR00 REAR
N07 0H,0L _$A7E Il0l1 00UR1ER
lRF1: 0ALL lRF0HAR _lRFU1 0HAR.
0ALL Il$F0HAR _E0H0 0HAR.
0NF AL,1 _ l$ 0HAR. A 1
5E lRF1
0NF AL,0 _l$ 0HAR. A 0
5E 7ER0
FU$H AX _$A7E AX
$UB AL,0H _00R7ER1 A$0ll 10 BlRARY
N07 BX,AL _N07E Il0l1 lR10 BUFFER
00R1: lR0 BX
IE0 0L
F0F AX
0NF AL,00H _l$ 0HAR. A
k
0R
l
5E 0X
5NF lRF1
0K: 0NF 0L,0 _l$ 00UR1ER40
5E EXl1l
N07 BX,0FF$E1 ERR _Il$FLAY ERR0R NE$$A0E lF BAI ER1RY
0ALL Il$FLAY
N07 BX,0FF$E1 BUFF _RE-ER1ER $1AR1lR0 0FF$E1 0F BUFFER
N07 0L,0H _RE-ER1ER Il0l1 00UR1ER
5NF lRF1
7ER0: FU$H AX _$A7E AL
N07 AL,0AH _00IE 10 IlAL A 7ER0
N07 BX,AL _N07E 7ER0 Il0l1 lR10 BUFFER
5NF 00R1
EXl1l: RE1 _RE1URR 10 FH0RE IlAL R0U1lRE
BUFFER ERIF
_
_
_ IELAY suIroutine - waits for 200 ms
_ Entry: none
_ 0utput: all reister preserveu
_
_
FUBLl0 IELAY
14
COMMUNICATIONS PROGRAM for the HC942 (Continued)
IELAY FR00 REAR
FU$H 0X
N07 0X,4000I _L00F BA0K 4,000 1lNE$
L00F5: R0F
AII AL,l
$UB AL,l
L00F L00F5
F0F 0X
RE1 _RE1URR 10 FH0RE IlAL R0U1lRE
IELAY ERIF
_
_
_ lRF0HAR suIroutine - invokes Bl0$ routine to input char. from keyIu.
_ Entry: none
_ 0utput: AL4character entereu from keyIoaru
_
FUBLl0 lRF0HAR
lRF0HAR FR00 REAR
N07 AH,0
lR1 l8H
RE1
lRF0HAR ERIF
_
_
_ Il$FLAY suIroutine - uisplay a character strin storeu in the uata
_ sement.
_ Entry: BX4offset of messae strin
_ 0utput: BX altereu
_
_
FUBLl0 Il$FLAY
Il$FLAY FR00 REAR
FU$H 0X
FU$H AX
N07 0X,40I _0HAR. $1RlR0 l$ 40 0HAR. L0R0
Il$Fl: N07 AL,BX _$E1 0HAR. FR0N IA1A $E0.
0ALL Il$F0HAR _Il$FLAY 0HAR.
lR0 BX
L00F Il$Fl
0ALL 0R~LF
F0F AX
F0F 0X
RE1 _RE1URR 10 FH0RE IlAL R0U1lRE
Il$FLAY ERIF
_
_
_ Il$F0HAR suIroutine - invokes Bl0$ routine to uisplay a character
in AL on the screen
_ Entry: AL4character to Ie uisplayeu
_ 0utput: AX altereu
_
_
FUBLl0 Il$F0HAR
15
A
N
-
4
4
4
S
i
n
g
l
e
-
C
h
i
p
M
o
d
e
m
P
r
o
v
i
d
e
s
L
o
w
-
C
o
s
t
D
a
t
a
C
o
m
m
u
n
i
c
a
t
i
o
n
COMMUNICATIONS PROGRAM for the HC942 (Continued)
Il$F0HAR FR00 REAR
FU$H BX
N07 BX,0
N07 AH,l4
lR1 l0H
F0F BX
RE1 _RE1URR 10 FH0RE IlALlR0 R0U1lRE
Il$F0HAR ERIF
_
_
_ 0R~LF suIroutine - prouuces a carriae return anu line feeu
_ Entry: none
_ 0utput: all reister preserveu
_
_
FUBLl0 0R~LF
0R~LF FR00 REAR
FU$H AX
N07 AL,0IH _0ARRlA0E RE1URR
0ALL Il$F0HAR
N07 AL,0AH _LlRE FEEI
0ALL Il$F0HAR
F0F AX
RE1 _RE1URR 10 FH0RE IlALlR0 R0U1lRE
0R~LF ERIF
_
_
$1AR1l ERIF
00IE ERI$
ERI $1AR1l
LIT 100444
LIFE SUPPORT POLICY
NATIONALS PRODUCTS ARE NOT AUTHORIZED FOR USE AS CRITICAL COMPONENTS IN LIFE SUPPORT
DEVICES OR SYSTEMS WITHOUT THE EXPRESS WRITTEN APPROVAL OF THE PRESIDENT OF NATIONAL
SEMICONDUCTOR CORPORATION As used herein
1 Life support devices or systems are devices or 2 A critical component is any component of a life
systems which (a) are intended for surgical implant support device or system whose failure to perform can
into the body or (b) support or sustain life and whose be reasonably expected to cause the failure of the life
failure to perform when properly used in accordance support device or system or to affect its safety or
with instructions for use provided in the labeling can effectiveness
be reasonably expected to result in a significant injury
to the user
National Semiconductor National Semiconductor National Semiconductor National Semiconductor
Corporation Europe Hong Kong Ltd Japan Ltd
1111 West Bardin Road Fax (a49) 0-180-530 85 86 13th Floor Straight Block Tel 81-043-299-2309
Arlington TX 76017 Email cnjwgetevm2nsccom Ocean Centre 5 Canton Rd Fax 81-043-299-2408
Tel 1(800) 272-9959 Deutsch Tel (a49) 0-180-530 85 85 Tsimshatsui Kowloon
Fax 1(800) 737-7018 English Tel (a49) 0-180-532 78 32 Hong Kong
Franais Tel (a49) 0-180-532 93 58 Tel (852) 2737-1600
Italiano Tel (a49) 0-180-534 16 80 Fax (852) 2736-9960
National does not assume any responsibility for use of any circuitry described no circuit patent licenses are implied and National reserves the right at any time without notice to change said circuitry and specifications