Abstract:
A universal transmitter capable of transmitting a plurality of signals at a plurality of different modulations and frequencies which provides a simplified programming setup so that multiple signal configurations (including code format, modulation format and frequency) can be programed quickly and easily. The transmitter comprises a signal configuration input which an operator can use to select a desired signal configuration for transmission, a controller for interpreting the selected signal configuration, storing it to memory, retrieving it when the appropriate user input is depressed, and outputting it to a transmitter circuit capable of transmitting the selected signal configuration received from the controller at a predetermined modulation and frequency, and at least one user input for actuating the transmitter and identifying to the controller what signal configuration is to be transmitted by the transmitter.

Description:
REFERENCE TO COMPUTER PROGRAM LISTING APPENDIX SUBMITTED ON COMPACT DISC  
         [0001]    The computer program listing appendix contained within file “70550prgrm_lstng.txt” on compact disc “1 of 1”, which has been filed with the United States Patent and Trademark Office in duplicate, is hereby incorporated herein by reference. This file was created on Apr. 25, 2001, and is 72 KB in size.  
         BACKGROUND OF THE INVENTION  
         [0002]    This invention relates generally to transmitters and more particularly concerns a simplified method and apparatus for programming universal radio frequency (RF) transmitters.  
           [0003]    Transmitters are used in a variety of applications in which wireless operation is desired. For example, most garage door openers, gate operators, and rolling shutter systems utilize transmitters to operate the movable barrier associated with the operator, (e.g., to operate the door, gate or shutter). Many of the transmitters supplied with these products are designed as single function, single frequency devices with a preset carrier frequency and use either a switch-selectable code or a preset factory code. Switch-selectable codes are set by the user setting a plurality of switches on the transmitter and the receiver units. Factory-set codes are input into the receiver by causing a controller (e.g., microcontroller or other processor such as a microprocessor, gate array or the like) within the receiver to perform a learn function. The receiver enters the learn mode, then the user activates the transmitter, which transmits a signal representing the factory programmed code stored in the transmitter.  
           [0004]    Over the years, there have been a variety of code formats used for RF transmitters. Many of the commonly used code formats employ a fixed code format that may be set with Dual In-line Package switches (DIP switches), non-volatile memory devices, or the like. Other more secure formats include billion code format in which operators can be programmed to operate upon receipt of an authorized actuation signal which consists of a code that is selected from more than a billion possible codes. More recently, rolling code formats have become widely used in order to offer a greater degree of security.  
           [0005]    Rolling code transmitters are preferred in such applications as remote keyless entry systems, garage door operators, etc. An example of a rolling code generating transmitter of the type described herein is disclosed in U.S. patent application Ser. No. 08/873,149 filed Jun. 11, 1997, now U.S. Pat. No. 6,154,544 issued Nov. 28, 2000, which is assigned to Applicants&#39; assignee and is hereby incorporated herein by reference.  
           [0006]    Fixed code RF transmitters are preferred in such applications as gate operators, which are typically operated by many more users than a garage door operator, because they are easy to program-making it easier to add/program additional transmitters to be used with the gate operator. For example, additional DIP (or fixed) coded RF transmitters can be programmed simply by matching the fixed command code, (e.g., the code identified by the various position of the DIP switches), of the added transmitter to other RF transmitters programmed for operating the gate. This eliminates the need to go through a lengthy programming sequence.  
           [0007]    In addition to the various code formats used, several transmitter manufacturers have developed their own modulation format and have selected their own carrier frequencies for transmitting coded signals. For example, some garage door operator manufacturers transmit actuation signals consisting of packets of ten bit codes at 300 MHZ (Multi-Code), others transmit packets of eight bit or ten bit codes at 310 MHZ (Linear/Moore-O-Matic/Stanley), while still others transmit packets of nine bit, twelve bit, or twenty bit codes at 390 MHz (Genie/Chamberlain).  
           [0008]    Unfortunately, transmitters often stop working, break, become damaged and/or get lost before their respective receivers die out. When this happens, it often becomes necessary to purchase a new transmitter. Most manufacturers who sell products using transmitters offer replacement transmitter units for sale for a period of time. However, as manufacturers improve their products by offering greater functionality, the cost of providing replacement parts for older model units increases and over time makes the manufacture of some transmitters impractical to do. In addition, the aftermarket for replacement transmitters is brisk, which leaves little incentive for a company to fill this gap and provide nothing but replacement transmitters. As a solution to these problems some companies offer universal transmitters for sale which can be used on a variety of products made by a variety of manufacturers.  
           [0009]    In order to operate properly, universal transmitters must be capable of transmitting a plurality of different codes at a plurality of different code modulations and frequencies (or carrier frequencies). These transmitters are often sought after because consumers do not always know what type of transmitter they need, or prefer having the security of knowing that the transmitter they are buying will work with their system. Universal transmitters are also attractive to personnel who install and service movable barrier operators because they reduce the number of transmitters the installers need to stock and reduce the number of transmitters they need to learn how to program and/or operate.  
           [0010]    In order to offer these capabilities, however, the electronic circuits used within the transmitter become more complex, larger and expensive. One drawback to requiring more complex circuitry is that the addition of components can often create RF interference among the other components and/or require redesign of the circuit layout. Similarly, the added electronics often increase the size and expense of the circuit and may require the use of a larger, more expensive microprocessor or controller. Typically, only a portion of the larger controller is used which increases waste and lowers the efficiency of the overall circuit. Another drawback to requiring more complex circuitry is that the transmitter often becomes harder for a user to program. For example, some universal transmitters require the user to perform a lengthy sequence of pressing and releasing the user inputs in order to enter the learn mode and/or program the transmitter. Therefore, designing a universal transmitter which can operate at multiple frequencies for multiple code formats, while making the programing of the transmitter less complicated is the aftermarket supplier&#39;s greatest challenge.  
           [0011]    To date, several attempts have been made to provide universal transmitters. One example is U.S. Pat. No. 5,564,101 to Eisfeld et al. which discloses a universal transmitter for use with a garage door opener that allows for a user to program a transmitted modulation format and carrier frequency and transmit a signal corresponding to the selections. This transmitter uses two sets of mechanical DIP switches to select the transmitter code and carrier frequency. Such a configuration requires a larger controller having additional I/O ports, which will make the circuit more complex, increase the overall circuit size, raise costs, and result in making the transmitter more complicated to program.  
           [0012]    U.S. Pat. No. 5,661,804 to Dykema et al. discloses a learning transmitter which can operate a plurality of different receivers employing rolling or encrypted code. No user input is required to learn the code and frequency, other than activating the transmitter to be copied. A single RF circuit, phase locked loop frequency synthesizer and dynamically tunable antenna are provided for learning and transmitting the desired code. Unfortunately, not all transmitters are functional when they are being replaced, so learning transmitters are not always available substitutes. In addition, transmitters which use single multi-frequency transmitter loops to generate signals at a variety of frequencies require additional time to manufacture-due to the increased time required to tune the transmitter loop appropriately-which increases the manufacturing costs and lowers the profitability of the transmitter for the manufacturer.  
           [0013]    While all of these systems are capable of operating a plurality of receivers, each is complex, expensive, and difficult to program. Accordingly, there is a need for a simple, smaller, and less expensive transmitter capable of transmitting a plurality of different codes at a plurality of different modulations and frequencies. There is also a need for a new way of programing a universal transmitter that is less complicated and easier to perform.  
         SUMMARY OF THE INVENTION  
         [0014]    A universal transmitter disclosed herein is capable of transmitting a plurality of signals at a plurality of different modulations and frequencies, and provides a simplified programming setup so that multiple signal configurations (including code format, modulation format and frequency) can be programed quickly and easily. The transmitter comprises a signal configuration input which an operator can use to select a desired signal configuration for transmission, a controller for interpreting the selected signal configuration, storing it to memory, retrieving it when the appropriate user input is depressed, and outputting it to a transmitter circuit capable of transmitting the selected signal configuration received from the controller at a predetermined modulation and frequency, and at least one user input for actuating the transmitter and identifying to the controller what signal configuration is to be transmitted by the transmitter.  
           [0015]    The universal transmitter operator (or user) can store and transmit a plurality of signal configurations at a plurality of modulations and frequencies by simply placing the transmitter into a learn mode, adjusting the signal configuration input to a desired first signal configuration, selecting a user input with which the first signal configuration is to be associated so that the controller can retrieve and transmit the desired first signal configuration when operated, and storing the first signal configuration to memory so that the stored first signal configuration can be recalled and transmitted by the transmitter every time the user input associated with that signal is actuated. Once the transmitter is out of the learn mode and the user selects the user input associated with the stored first signal configuration, the controller will retrieve the stored first signal configuration from its memory location and transmit the signal specified by the stored first signal configuration settings at its appropriate code modulation and frequency.  
           [0016]    A second signal configuration can be programmed by simply placing the transmitter back into learn mode, re-adjusting the signal configuration input to a desired second signal configuration, selecting a user input with which the second signal configuration is to be associated, and storing the second signal configuration to memory so that the stored second signal configuration can be recalled and transmitted by the transmitter every time the user input associated with that signal is actuated. Once the transmitter is out of the learn mode and the user selects the user input associated with the stored second signal configuration, the controller will retrieve the stored second signal configuration from its memory location and transmit the signal specified by the stored second signal configuration settings at its appropriate code modulation and frequency.  
           [0017]    More particularly, the universal transmitter may include user inputs consisting of multi-position switches for identifying the signal configuration (e.g., the transmitter type, security code, code modulation, frequency, etc.), a controller for reading the multi-position switch settings, determining the selected signal configuration, storing the selected signal configuration into memory, and outputting the selected signal configuration with the appropriate code and at the appropriate modulation, a transmitter circuit for transmitting the signal configuration at the appropriate modulation and frequency, and a user input for actuating the transmitter and identifying to the controller what signal configuration is to be transmitted and at what modulation and frequency. The user input may be a DIP switch capable of identifying the transmitter type and security code format for the actuation signal. According to the preferred embodiment, two multi-position DIP switches may be used, with one being used for selecting what type of manufacturer&#39;s transmitter is to be emulated and another being used for selecting what type of security code is to be transmitted by the transmitter. The transmitter type selection indicates to the controller what type of code modulation and frequency the actuation signal is to be transmitted at, (e.g., is it suppose to operate as manufacturer A&#39;s transmitter at 300 MHZ, manufacturer B&#39;s transmitter at 310 MHZ, manufacturer C&#39;s transmitter at 390 MHZ, etc.). The security code switch indicates to the controller what logic sequence makes up the actuation signal, (e.g., what string of bits or bit sequence should be transmitted).  
           [0018]    Once a user input has been actuated, the universal transmitter&#39;s controller will determine whether the transmitter has been placed into a learn mode or whether normal operation has been specified. When in the learn mode, the controller will determine which user input (e.g., pushbutton input) has been selected by the user and will store the signal configuration selected via the multi-position switch settings into a memory location associated with that particular user input. A user can store another signal configuration by simply placing the transmitter back into learn mode and re-adjusting the signal configuration input to the desired additional signal configuration. The controller will determine which user input has been depressed and will store the signal configuration selected via the multi-position switch settings into a memory location associated with that particular user input. This routine may be repeated until all the desired signal configurations have been programmed, until all the memory locations are full, or until all the user inputs have been assigned a desired signal configuration.  
           [0019]    When in the normal operation mode, the controller will determine which user input has been actuated by the user and will retrieve the signal configuration stored at the memory location associated with the depressed input. The controller interprets the signal configuration retrieved from memory and outputs the stored code to transmitter circuitry capable of transmitting the signal specified by the stored signal configuration settings at the appropriate code modulation and frequency so that a receiver actuation signal will be generated. The transmitter circuitry may include a tunable transmitter loop capable of transmitting at a variety of frequencies, or may include separate transmitter loops each capable of generating signals at different frequencies. According to the preferred embodiment, separate transmitter loops are used and the controller interprets the signal configuration retrieved from memory and outputs the signal to the transmitter loop circuitry capable of transmitting the signal at the appropriate code modulation and frequency. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0020]    Other objects and advantages of the invention will become apparent upon reading the following detailed description and upon reference to the drawings, in which:  
         [0021]    [0021]FIG. 1 is a perspective view of a movable barrier operator using a transmitter embodying the present invention;  
         [0022]    [0022]FIG. 2 is a block diagram of a transmitter embodying the present invention;  
         [0023]    [0023]FIG. 3 is a schematic incorporating the transmitter shown in FIG. 2; and  
         [0024]    [0024]FIGS. 4 a - b  are upper level flow charts of the instructions executing in the controller of FIG. 3. 
     
    
       [0025]    While the invention will be described in connection with a preferred embodiment, it will be understood that it is not intended to limit the invention to that embodiment. On the contrary, it is intended to cover all alternatives, modifications and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims.  
       DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0026]    Referring now to the drawings and especially to FIG. 1, in which a movable barrier operator embodying the present invention is generally shown therein and identified by reference numeral  10 . The movable barrier operator  10  includes a head unit  12  mounted within a garage  14  and is employed for controlling the opening and closing of garage  14 . More specifically, the head unit  12  is mounted to the ceiling  16  of the garage  14  and includes a rail  18  extending therefrom with a releasable trolley  20  attached having an arm  22  extending to a multiple paneled garage door  24  positioned for movement along a pair of door rails  26  and  28 . The movable barrier operator  10  transfers the garage door  24  between the closed position illustrated in FIG. 1 and an open or raised position, allowing access to and from the garage  14 .  
         [0027]    The system includes a hand-held transmitter unit  30  adapted to send signals to an antenna  32  positioned on the head unit  12  and coupled to a receiver located within the head unit  12 . An external control pad  34  is positioned on the outside of the garage having a plurality of buttons thereon and communicates via radio frequency transmission with the antenna  32  of the head unit  12 . The transmitter  30  and control pad  34  are capable of being programmed to transmit a plurality of different codes at a plurality of different frequencies, as will be appreciated in more detail hereinafter. A switch module  39  is mounted on a wall of the garage. The switch module  39  is connected to the head unit by a pair of wires  39   a . The switch module  39  includes a learn switch  39   b , a light switch  39   c , a lock switch  39   d  and a command switch  39   e.    
         [0028]    An optical emitter  42  and an optical detector  46  are coupled to the head unit  12  by a pair of wires  44  and  48 , respectively. The emitter  42  and detector  46  are used to satisfy the requirements of Underwriter&#39;s Laboratories, the Consumer Product Safety Commission and the like which require that garage door operators sold in the United States must, when in a closing mode and contacting an obstruction having a height of more than one inch, reverse and open the door in order to prevent damage to property and injury to persons. A conventional pass point detector or absolute positioning detector may also be used to indicate door position to the controller.  
         [0029]    The transmitter  30  includes a plurality of user inputs  50 , a signal configuration input  52 , controller  54 , memory  56 , and transmitter circuitry  58 , as shown in FIG. 2. The user inputs  50  can comprise any number of pushbuttons and operate to send power to the controller  54 , (indicating that a receiver actuation signal should be transmitted or that learn mode should be entered). The signal configuration input  52  comprises a plurality of multi-position switches that allow the user to select a signal configuration from a plurality of possible transmitter types, bit patterns, code modulation schemes, and frequencies. The signal configuration input settings determine what type of signal will be transmitted as part of the receiver actuation signal.  
         [0030]    As will be discussed in more detail below, the controller  54  determines which user input  50  has been pressed and whether the transmitter has been placed into a learn mode. If in the learn mode, the controller  54  reads the signal configuration input  52  settings and stores the signal configuration settings in memory  56  in a location associated with the particular pushbutton pressed. The transmitter  30  can be programmed with additional signal configurations in similar fashion. Specifically, the user adjusts the configuration input  52  to the desired additional signal configuration, places the transmitter  30  into learn mode, and selects another user input  50  with which the additional signal configuration is to be associated. The controller  54  reads the configuration input  52  settings and stores the signal configuration settings in memory  56 . This process is repeated until all the desired signal configurations have been stored, until all the available memory is used up, or until all user inputs  50  have been assigned a desired signal configuration.  
         [0031]    If the controller  54  determines that the transmitter  30  is not in the learn mode, it retrieves the signal configuration stored at the memory location  56  associated with the depressed input  50 . The controller  54  interprets the signal configuration retrieved from memory and outputs the stored code at the appropriate modulation to transmitter circuitry  58  which is capable of transmitting the signal specified by the stored signal configuration settings at the appropriate code modulation and frequency so that a receiver actuation signal will be generated. The transmitter circuitry  58  may include a tunable transmitter loop capable of transmitting at a variety of frequencies, or may include separate transmitter loops each capable of generating signals, at different frequencies. For example, in FIG. 2, the controller  54  would output data to transmitter circuitry  58  and tune the transmitter circuitry  58  to output at 310 Megahertz (MHZ) if the configuration input  52  specified transmitting an eight bit or ten bit receiver actuation signal at 310 MHZ. Similarly, the controller would tune the transmitter circuitry  58  to output at 300 MHZ if the configuration input  52  specified transmitting a ten bit receiver actuation signal at 300 MHZ. The controller  54  may also tune the transmitter circuitry to 390 MHZ if the configuration input  52  specified transmitting packets of nine bit, twelve bit, or twenty bit packets at 390 MHZ. As discussed further below, the transmitter circuitry  58  may include several transmitter loops each being capable of generating a receiver actuation signal at a different frequency, (e.g., one loop for 300 MHZ, one for 310 MHZ, one for 390 MHZ, etc.).  
         [0032]    Turning now to FIG. 3, in which a schematic diagram of a transmitter embodying the present invention is shown generally at reference numeral  30 . As discussed above, the transmitter  30  includes user input  50 , signal configuration input (or configuration input)  52 , controller  54 , memory  56  and transmitter circuitry  58 . Power is supplied to the transmitter  30  via battery  60  and power circuitry  62  which regulates the voltage supply to +5 Volts (V) for pins VPP, VSS and VDD of controller  54  (which may be a Microchip PIC16C63A). A 4 MHz crystal clock generator (oscillator)  64 , such as a ceramic resonator, is coupled to pins CLKIN and CLKOUT to provide timing for the controller  54 . The configuration input  52  includes two multi-position DIP switches S 1  and S 2  which are connected to input pins RA 0 , RA 1 , RA 2  and RA 3  of controller  54  on one side and pins RC 4 , RC 5 , RC 6  and RC 7  on the other. Switches S 1  and S 2  provide sixteen switches with which the user is able to identify the signal configuration. The controller  54  reads the multi-position switch settings by cycling pin RC 7 , RC 6 , RC 5  and RC 4  on one at a time. From the controller&#39;s perspective the switches are arranged in a four by four matrix with pins RA 0 , RA 1 , RA 2  and RA 3  making up the rows and pins RC 4 , RC 5 , RC 6  and RC 7  making up the columns.  
         [0033]    Switch S 1  contains four switches which are used to identify the type of transmitter that is to be emulated by the universal transmitter  30 . The switches of S 1  are adjusted to open or close the contacts of the DIP switch and are all connected to output pin RC 7  of the controller  54 . The controller  54  determines the position of each of the four switches in DIP switch S 1  by driving output pin RC 7  high and reading the input received on input pins RA 0 , RA 1 , RA 2  and RA 3 . For each of the four switches in DIP switch S 1  that are closed, a high input will be received on the input pin coupled to the closed switch. The settings of these switches will identify to the controller  54  which transmitter is to be emulated. In the preferred embodiment, the universal transmitter is set up to emulate eight different transmitters. These may be transmitters from Stanley, MultiCode, Linear/Moore-O-Matic, Genie and Chamberlain.  
         [0034]    Switch S 2  contains twelve switches which are used to identify the security code (or bit sequence) that is to be transmitted by the universal transmitter  30 . In order to read the settings of switch S 2 , the twelve switches of S 2  are separated into three groups with four switches in each group. The three groups of switches are connected to output pins RC 6 , RC 5  and RC 4 . The controller  54  determines the position of each of the four switches in the first group of switches by driving output pin RC 6  high and reading the input received on input pins RA 0 , RA 1 , RA 2  and RA 3 . For each closed switch a high input will be received on the input pin coupled to the closed switch. The settings of these switches will identify to the controller  54  the first four digits of code that are to be transmitted by the transmitter  30 . Then the controller  54  determines the position of each of the four switches in the second group of switches by driving output pin RC 5  high and reading the input received on input pins RA 0 , RA 1 , RA 2  and RA 3 . Again, for each closed switch a high input will be received on the input pin coupled to the closed switch. The settings of these switches will identify to the controller  54  the fifth through eighth digits of code that are to be transmitted by the transmitter  30 . Lastly, the controller  54  determines the position of each of the four switches in the third group of switches by driving output pin RC 4  high and reading the input received on input pins RA 0 , RA 1 , RA 2  and RA 3 . A high input will be received on the input pins coupled to closed switches. The settings of these switches will identify to the controller  54  the remaining digits of code that are to be transmitted by the transmitter  30 .  
         [0035]    In order to have the controller read the configuration input switch settings, the transmitter  30  must be placed in a learn mode. The transmitter  30  is placed in learn mode by depressing the user input switches  50  (e.g., momentary switches S 2  and S 3 ) down together and holding them down for a minimum of five seconds although other arrangements for entering the learn mode, such as dedicated learn mode switches could be used. When the controller  54  has entered the learn mode, it will alternate pin RA 4  high and low causing bursts of current to flow through the current limiting capacitor R 5  and through the yellow light emitting diode (LED)  66  making the LED  66  blink. The controller  54  will remain in learn mode for 10 seconds and will store the signal configuration settings into memory  56  once a user input  50  is depressed. Since the momentary switches S 2  and S 3  of the transmitter  30  are coupled to the battery  60  on one side and to pins RB 5  and RB 7  on the other, the controller  54  is capable of determining when a user input  50  has been depressed by polling pins RB 5  and RB 7  to see if either have been driven high. If either pin has been driven high, the controller  54  knows that the switch (S 2  or S 3 ) connected to the pin driven high (RB 5  or RB 7 ) has been closed. The memory location where the signal configuration settings are stored is associated with the user input that was depressed so that the controller  54  will recall the correct signal configuration every time that input is depressed. Memory  56  may consist of a serial EEPROM such as PIC16CR62.  
         [0036]    A second signal configuration may be programmed into the transmitter  30  by placing the transmitter  30  back into learn mode, (e.g., depressing both user inputs  50  at the same time and holding for a minimum of five seconds), and selecting/depressing a user input  50  with which the new signal configuration is to be associated. Since the transmitter  30  only remains in the learn mode for ten seconds, the signal configuration settings should be made prior to placing the transmitter  30  into learn mode. By doing so, the user will only need to select the user input  50  the signal configuration settings are to be associated with while the transmitter  30  is in learn mode. In FIG. 3, a two button transmitter is provided in which one signal configuration setting can be stored for switch S 3  of user input  50  and another signal configuration setting can be stored for switch S 4  of user input  50 . In other embodiments, additional user input switches may be provided to allow for the storing of additional signal configurations, (e.g., a three button transmitter may be provided to allow for a third signal configuration setting to be stored, a fourth button transmitter may be provided to allow for a fourth signal configuration setting to be stored, etc.).  
         [0037]    A stored signal configuration setting may be replaced by another signal configuration setting by simply adjusting the signal configuration input  52  to the desired new signal configuration setting, placing the transmitter  30  into learn mode, and selecting the user input  50  associated with the old signal configuration setting to be replaced. This action will cause the controller  54  to store the new signal configuration settings (or the current settings of the multi-position switches S 1  and S 2 ) in place of the old signal configuration settings.  
         [0038]    Unless the learn mode is again entered, the multi-position switch settings may be altered in any fashion without affecting how the transmitter  30  works. This is due to the fact that the signal configuration settings needed for transmitting by the transmitter  30  are retrieved from memory  56  not directly from the configuration input  52 . The signal configuration input  52  simply serves as a way of getting these signal configuration settings stored into memory  56 .  
         [0039]    During normal operation (e.g., when the transmitter  30  is not in learn mode) the controller  54  keeps the transmitter  30  in a suppressed state called sleep mode in an effort to preserve battery power and prolong battery life. The controller  54  is awakened from sleep mode when either of the input pins RB 5  and RB 7  are driven high, or when both of the input pins RB 5  and RB 7  are driven high. In the former instance, the driving of one of the input pins RB 5  and RB 7  signifies to the controller that the user input  50  has been depressed. In the latter instance, the driving of both input pins RB 5  and RB 7  signifies to the controller  54  that the learn mode should be entered (presuming both inputs are depressed for a minimum of five seconds). If one of the user inputs  50  are depressed, the controller retrieves the signal configuration settings from the memory location associated with the depressed user input (S 3  or S 4 ) and determines what transmitter circuitry  58  the signal should be outputted to for transmission.  
         [0040]    In response to the detection of a depressed user input  50  associated with a code to be transmitted at 390 MHZ, the controller  54  will bias transistor  68  on via pin RB 0  to modulate oscillator circuit  70  and transmit the signal specified by the stored signal configuration settings (or stored signal). Transistor  68  and oscillator circuit  70  enable the RF transmission of the stored signal at approximately 390 MHZ via the antenna  72 , herein a printed circuit board (PCB) loop antenna. When the selected signal configuration settings indicate that the stored signal is to be transmitted at 300 MHZ, the controller  54  will bias transistor  74  on via pin RB 1  to modulate oscillator circuit  76  and transmit the stored signal. Transistor  74  and oscillator circuit  76  enable the RF transmission of the stored signal at approximately 300 MHZ via the antenna  78 . When the selected signal configuration settings indicate that the stored signal is to be transmitted at 310 MHZ the controller  54  will bias transistor  80  on via pin RB 2  to modulate oscillator circuit  82  and transmit the stored signal. As with the other transmitter circuits, transistor  80  and oscillator circuit  82  enable the RF transmission of the stored signal at approximately 310 MHZ via the antenna  84 . When an input  50  has been depressed and the transmitter is transmitting the stored signal, the controller  54  will set pin RA 4  high causing current to flow through the current limiting capacitor R 5  and through the yellow light emitting diode (LED)  66  causing the diode to remain steadily lit thereby indicated to the user that the transmission request has been received and that the transmitter is operating.  
         [0041]    Turning now to FIG. 4 a , in which upper-level flow charts of the instructions executing in the controller  54  are shown. During normal operation, the transmitter  30  is awakened out of sleep mode and initialized in step  100  in response to a user input  50  being depressed. The controller  54  then checks to see if user input buttons S 3  and S 4  have been pressed in step  102 , and specifically, whether both input buttons S 3  and S 4  have been pressed in step  104 . If both buttons are not being pressed, the controller  54  checks in step  106  to see if one button has been pressed. If not, the controller returns to its main function of checking to see if any input buttons  50  have been pressed in step  102 . If one input button S 3  or S 4  has been pressed, the controller reads (or retrieves) the stored signal configuration settings from EEPROM  56 , starts interrupt Timer 2 (FIG. 4 b ), and transmits the desired signal via the transmitter circuitry  58  in step  108 .  
         [0042]    If both input buttons S 3  and S 4  have been depressed (or pressed), the controller checks in step  110  to determine whether five seconds has elapsed. If not, the controller returns to its main function of checking in step  102  to determine whether any inputs  50  have been pressed. If five seconds has elapsed, the controller  54  places the transmitter in program (or learn) mode in step  112  and checks to see if both buttons S 3  and S 4  have been released in step  114 . If both buttons continue to be pressed, the controller  54  loops back to step  112  and  114  until both buttons have been released. Once both buttons have been released, the controller  54  in step  116  is ready to program and checks in step  118  to see if one of the input buttons  50  have been pressed. If not, the controller  54  checks to see whether ten seconds have elapsed in step  120 . If ten seconds have not elapsed, the controller remains ready to program in step  116  and checks for button presses in step  118 . If ten seconds have elapsed, the controller  54  places the transmitter  30  into sleep mode in step  122 . If the controller detects that a button has been depressed prior to ten seconds elapsing, it will read the signal configuration settings of the signal configuration input  52  to determine the signal configuration (e.g., code, format and frequency) and store the same in step  124  to EEPROM  56  at a memory location associated with the pressed push button or user input  50 .  
         [0043]    In FIG. 4 b , the main interrupt Timer 0 interrupt, causes an interrupt to occur every one millisecond (mS) in step  150 . At this time, the controller  54  debounces the manufacturing test mode pin of the controller  54  in step  152  and then checks to see if the test mode pin is high in step  154 . If the manufacturing test mode pin is high, the controller is placed into a manufacturing test mode in step  156 . During the manufacturing test mode each of the transmit frequencies are turned on for twelve mS. In the schematic of FIG. 3, pin RB 4  of controller  54  is the manufacturing test mode pin. Once the test mode is complete, pin RB 4  goes low and the controller stops the transmitter from transmitting in step  158  and shuts down the transmitter power (e.g., makes the transmitter enter sleep mode). If the manufacturing test mode pin is not high, the controller  54  debounces the input buttons  50  in step  160  and checks for activity with respect to the transmitter  30  in step  162 . During this check, the controller  54  determines whether the transmitter is still transmitting a signal. With less secure transmissions, the entire signal can be sent in one cycle or frame; however, in more complex transmissions the signal may require two frames of data to be sent. If there has not been activity within the last one hundred mS, control is shifted from step  164  to step  158  and the controller  54  places the transmitter in sleep mode. If there has been activity in the past one hundred mS, control is shifted from step  164  to step  166  and the no-activity timeout timer is reset to one hundred mS and the Timer 0 interrupt is exited (e.g., returning the controller to the state it was in prior to the interrupt).  
         [0044]    The Timer 2 interrupt begins at step  168  when the transmitter  30  has started transmitting and interrupts every one-half mS. During this interrupt, the controller  54  checks to see if a one hundred forty-four second timeout has expired in step  170 . If the timeout has expired, the controller  54  the controller  54  assumes one of the user inputs  50  is stuck on, stops the transmitter  30  from transmitting, and places the transmitter  30  in sleep mode in step  158 . If the transmit timer has not expired, the controller  54  continues to output the data stored in the memory location corresponding to the selected input button  50  and sets flags for the edges of the transmitted signal in step  172 . Once the transmitter has completed transmitting the Timer 2 interrupt is exited and the controller checks to see if there has been any activity with respect to the transmitter buttons in step  162 . Specifically, the controller  54  checks to see if there has been any activity within the last one hundred mS in step  164 . If there has not been any activity, the transmitter is placed in sleep mode in step  158 . If there has been activity within the last one hundred mS, the no-activity timeout timer is reset to one hundred mS and the Timer 0 interrupt is exited at step  166 . As referenced above, a computer program listing appendix including code executed by controller  54  has been submitted with the filing of this application.  
         [0045]    Thus it is apparent that there has been provided, in accordance with the invention, a universal transmitter that filly satisfies the objects, aims, and advantages set forth above. While the invention has been described in conjunction with specific embodiments thereof, it is evident that many alternatives, modifications, and variations will be apparent to those skilled in the art in light of the foregoing description. Accordingly, it is intended to embrace all such alternatives, modifications, and variations as fall within the spirit and broad scope of the appended claims.