1、 附 录 附录 A 外文资料 AT89C51 In-Circuit Programming This application note illustrates the in-circuit programmability of the Atmel AT89C51 Flash-based microcontroller. Guidelines for the addition of in-circuit programmability to AT89C51 applications are presented along with an application example and the m
2、odifications to it required to support in-circuit programming. A method is then shown by which the AT89C51 microcontroller in the application can be reprogrammed remotely, over a commercial telephone line. The circuitry described in this application note supports five volt programming only, requirin
3、g the use of an AT89C51-XX-5. The standard AT89C51 requires 12 volts for programming. The software for this application may be obtained by downloading from Atmels. General Considerations EA/VPP must be held high during programming. In applications which do not utilize external program memory, this p
4、in may be permanently strapped to VCC. Applications utilizing external program memory require that this pin be held low during normal operation. RST must be held active during programming. A means must be provided for overriding the application reset circuit, which typically asserts RST only briefly
5、 after power is applied. PSEN must be held low during programming, but must not be driven during normal operation. ALE/PROG is pulsed low during programming, but must not be driven during normal operation. During programming, AT89C51 I/O ports are used for the application of mode select, addresses a
6、nd data, possibly requiring that the controller be isolated from the application circuitry. How this is done is application dependent and will be addressed here only in general terms. Port Used for Input During programming, the controller must be isolated from signals sourced by the application circ
7、uitry. A buffer with three state outputs might be inserted between the application circuitry and the controller, with the buffer outputs three-stated when programming is enabled. Alternately, a multiplexer might be used to select between signal sources, with signals applied to the controller by eith
8、er the application circuitry or the programmer circuitry. Port Used for Output No circuit changes are required if the application circuitry can tolerate the state changes which occur at the port during programming. If the prior state of the application circuitry must be maintained during programming
9、, a latch might be inserted between the controller and the application circuitry. The latch is enabled during programming, preserving the state of the application circuitry. An Application Example This application was selected for its simplicity and ability to show graphically the results of in-circ
10、uit reprogramming. The text to be displayed is programmed into the controller as part of its firmware, and cannot be changed without reprogramming the device. The displayed text is presented in one of two modes selected by the four-position DIP switch. In the first mode, one character at a time ente
11、rs the display from the right and moves quickly to the left through each element of the display to its final position in the assembled message. In the second mode, the message moves through the display, from right to left, with the display acting as a window onto the message. This mode is familiar a
12、s the method often used in displays of stock prices. The output consists of four DL1414T, four-digit, 17-segment alphanumeric displays with integral decoders and drivers. This yields 16 total display elements, each capable of displaying digits 0-9, the upper case alphabet, and some punctuation chara
13、cters. The displayable character codes are ASCII 20H-5FH. A power-on reset circuit and a 6-MHz crystal oscillator complete the application. Neither external program memory nor external data memory is used. Modifications to the Application to Support In-Circuit Programming Figure 2 shows the applicat
14、ion modified for in-circuit programming. When inactive, will neither drive nor excessively load the application. Since the application does not use external program memory, EA/VPP on the controller is connected to VCC. This meets the requirement for programming. The reset circuit has been modified b
15、y the addition of two transistors, which allow RST on the controller to be forced high by the programmer. PSEN and ALE/PROG, unused in the basic application, are under the direct control of the programmer. Programming requires programmer access to all of the four AT89C51 I/O ports, as documented in
16、the data sheet. The programmer is connected directly to those controller pins which are unused by the application, while access to pins used by the application requires special treatment, as explained in the following paragraphs. The least significant four bits of the address generated by the progra
17、mmer are multiplexed onto port one of the controller with the data from the DIP switch. Note that the four resistors added at the switch are not required in the basic application, since the AT89C51 provides internal pull-ups on port one. During the normal operation of the application, controller por
18、ts zero and two provide data and control signals (respectively) to the displays. During programming and program verification, the programmer asserts control of port zero and part of port two. The programmer is connected to ports zero and two without buffering, since, when inactive, its presence does
19、 not affect the normal operation of the application. A transparent latch has been added between port two of the controller and the display control inputs. The latch holds the display control signals inactive during programming, which eliminates erratic operation of the displays due to programmer act
20、ivity on ports zero and two. No isolation of the display data inputs is required, since data applied to the inputs is ignored when the control signals are inactive. The AT89C51 reset circuit, input multiplexer and output latch are controlled by a single signal generated by the programmer. During pro
21、gramming, reset is asserted, the multiplexer switches inputs, and the latch freezes the display control lines. To ensure that the display control lines are in a known state before they are latched, an AT89C51 external interrupt is used to allow the programmer to signal the application before asserti
22、ng reset. The application firmware responds to the interrupt by displaying a message and deactivating the display control lines. After programming, when reset is deasserted, the controller ports are high as the latch becomes transparent. Since the display control inputs are inactive high, the display contents are not disturbed until the new program writes the display. Although not essential to this application, it might be imperative in some applications that the state of the peripheral circuitry not be disturbed during programming.