Description: We hold the first rights to the presentation of this approach and the best part is: It's FREE! The PIC12C508A is one of the most amazing devices but because it does not come in a low-cost re-programmable form, it has never been presented in a designers article. It is a one-time programmable device (OTP) and once it is programmed, it cannot be re-programmed. To develop with this chip is not an economical decision as it may take 30 to 100 modifications before you are completely happy with the operation of the software. That's 99 wasted chips! The only way to carry out experimentation is with the EPROM version (window version). These carry the part number PIC12C508A-JW and are about 10 times the cost of a normal PIC12C508A. More: To remove the program, they must be erased under an ultra-violet lamp for about 20 minutes. When you are in the process of developing, this time-delay is very annoying and it usually takes about 10 units to keep the development process active. Adding up the costs, makes this process slow, cumbersome and costly. We have got around this problem by using a PIC16F84 to hold the development program and when you are completely satisfied with the operation, the EXACT SAME program is burnt into a PIC12C508A. All you have to do is select "12C508A" in the chip list on MPASM and the program will be assembled with a .hex file to suit a 508A. Click on ICProg, select 508A as the chip to be programmed, insert a 508A into the Multi Chip Programmer and the program will be burnt into the 8 pin chip. The .hex files for the two chips are entirely different as the core of each is different, but that does not involve us. The programming instructions are the same and the circuit-operation is the same. The secret to this approach is to use only the instructions and files that are common to both chips. Fortunately nearly all the instructions for the 16F84 can be used by the 508A and nearly all the files are common. The table above shows the similarities etc. The PIC12C508A chip is theoretically a One Time Programmable device, but it can be re-burnt, providing a number of points are remembered. Any location can be re-burnt down. This means any bit in any location can be changed from a 1 to 0. This gives a wide range of possibilities for any byte but it will be very rare that a byte will need to be changed like this. The other method is to place the new routine after the old program and NOP out the old program. This is easily done by counting the bytes in the old program and placing the same number of NOP's above the new program you are burning. Add say an extra 3 - 10 NOPs just to be sure that no old instructions remain. The micro will quickly run through the NOPs before coming to the new program, each time the project is turned on and everything will run as before. There are only two things you have to be aware of. The interrupt vector (location 004) will not be available. The program must not have any CALL instructions (if you have any locations higher than 0FFh - that need to be jumped to via a CALL instruction). The PIC12C508A has 1FFh locations (512) - minus the last location as it is the oscillator calibration byte and is not available for a program instruction. CALL instructions only work to the first 0FFh (256) locations (half the memory of a 508A). One of the solutions is to place sub-routines in Main and use only GOTO instructions. This may increase the length of the program but it is one way to get around the problem. If the program does not work perfectly on the second burn, it can be NOP'ed and the new program added below, until the whole memory has been used. They are about 95% compatible and all the in/out lines of the 508A are identical to port B lines on the F84. In/out lines GP0 to GP5 on the PIC12C508A are common to in/out lines RB0 to RB5 for the PIC16F84. The only thing to remember is line GP3 (RB3). It is an input-only line and this is where you normally place a push-button or some other input device.
The PIC12C508A is a one-time programmable (OTP) microcontroller, suitable for various embedded applications. Its architecture allows for a maximum of 512 program memory locations, with a limitation on the use of CALL instructions due to the memory addressing constraints. The device operates in conjunction with the PIC16F84, which serves as a development platform due to its re-programmable nature. This hybrid approach allows for iterative programming and testing without the high costs associated with multiple OTP chips.
During the development phase, the PIC16F84 can be programmed and debugged using standard development tools such as MPASM and ICProg. The transition from the 16F84 to the PIC12C508A involves ensuring that the common instruction set is utilized to maintain compatibility. The programming process requires careful management of memory locations, particularly avoiding the use of CALL instructions for addresses above 0FFh. Instead, the use of GOTO instructions and the strategic placement of NOPs can facilitate the integration of new routines without disrupting existing functionality.
The PIC12C508A's pin configuration mirrors that of the PIC16F84, particularly in the context of GPIO ports. Lines GP0 to GP5 on the PIC12C508A correspond to RB0 to RB5 on the PIC16F84, enhancing the ease of porting designs between the two devices. Special attention must be paid to GP3 (RB3), which is designated as an input-only line, typically used for interfacing with external components such as push-button switches.
In summary, while the PIC12C508A presents challenges in terms of its one-time programmability, it can be effectively utilized in conjunction with the PIC16F84 to streamline the development process, allowing for efficient testing and final programming of embedded applications.We hold the "first rights" to the presentation of this approach and the best part is: "It's FREE!"
The PIC12C508A is one of the most amazing devices but because it does not come in a low-cost re-programmable form, it has never been presented in a "designers article." It is a one-time programmable device (OTP) and once it is programmed, it cannot be re-programmed. To develop with this chip is not an economical decision as it may take 30 to 100 modifications before you are completely happy with the operation of the software.
That's 99 wasted chips! The only way to carry out experimentation is with the EPROM version (window version). These carry the part number PIC12C508A-JW and are about 10 times the cost of a normal PIC12C508A. To remove the program, they must be erased under an ultra-violet lamp for about 20 minutes. When you are in the process of developing, this time-delay is very annoying and it usually takes about 10 units to keep the development process active. Adding up the costs, makes this process slow, cumbersome and costly. We have got around this problem by using a PIC16F84 to hold the development program and when you are completely satisfied with the operation, the EXACT SAME program is burnt into a PIC12C508A.
All you have to do is select "12C508A" in the chip list on MPASM and the program will be assembled with a .hex file to suit a 508A. Click on ICProg, select 508A as the chip to be programmed, insert a 508A into the Multi Chip Programmer and the program will be burnt into the 8 pin chip.
The .hex files for the two chips are entirely different as the "core" of each is different, but that does not involve us. The programming instructions are the "same" and the circuit-operation is the same. The secret to this approach is to use only the instructions and files that are common to both chips. Fortunately nearly all the instructions for the 16F84 can be used by the 508A and nearly all the files are common.
The table above shows the similarities etc. The PIC12C508A chip is theoretically a One Time Programmable device, but it can be re-burnt, providing a number of points are remembered. Any location can be re-burnt "down." This means any bit in any location can be changed from a "1" to "0."
This gives a wide range of possibilities for any byte but it will be very rare that a byte will need to be changed like this.
The other method is to place the new routine after the old program and "NOP" out the old program. This is easily done by counting the bytes in the old program and placing the same number of NOP's above the new program you are burning. Add say an extra 3 - 10 NOPs just to be sure that no old instructions remain. The micro will quickly run though the NOPs before coming to the new program, each time the project is turned on and everything will run as before.
There are only two things you have to be aware of. The interrupt vector (location 004) will not be available. The program must not have any CALL instructions (if you have any locations higher than 0FFh - that need to be "jumped to" via a CALL instruction). The PIC12C508A has 1FFh locations (512) - minus the last location as it is the oscillator calibration byte and is not available for a program instruction.
CALL instructions only work to the first 0FFh (256) locations (half the memory of a 508A). One of the solutions is to place sub-routines in Main and use only GOTO instructions. This may increase the length of the program but it is one way to get around the problem. If the program does not work perfectly on the second burn, it can be NOP'ed and the new program added below, until the whole memory has been used. They are about 95% compatible and all the in/out lines of the 508A are identical to port B lines on the F84.
In/out lines GP0 to GP5 on the PIC12C508A are common to in/out lines RB0 to RB5 for the PIC16F84. The only thing to remember is line GP3 (RB3). It is an input-only line and this is where you normally place a push-button or some other input device.
The gap between TTL (Transistor-Transistor Logic) devices and personal computers can be effectively bridged with modern microcontrollers. These microcontrollers not only incorporate a central processing unit (CPU) but also include program and data memory, EEPROM, input/output (I/O) ports, timers, and...
A small transmitter board interfaces with a microcontroller and conductivity probe to measure liquid conductance and conductivity. Precise equations and measurements are provided for this microcontroller-controlled conductivity meter.
The described circuit consists of a compact transmitter board that serves as an...
The driving circuit depicted in Figure 18-12 consists of a connection between the driving portion, the microcontroller, and the air conditioning operation components of the bridge. The microcontroller's digital signal levels from ports P4.0 to P4.3 (approximately 12 feet) and...
The switch control system utilizes sensors to inform the microcontroller of the trains' positions on the layout. This ensures that only one train occupies the main line at any given time and that switches are correctly set for the train's...
The filter consisting of resistors R1, R2, and capacitor C1 integrates the PWM waveform. The purpose of the operational amplifier appears to be that of a non-inverting amplifier, with the gain determined by resistors R6 and R7. However, the need...
This schematic illustrates the placement of a decoupling capacitor on the right side, which should be positioned as close as possible to the power pins of the microcontroller. It includes a crystal oscillator, which is optional; an internal RC oscillator...
Security is a primary concern in daily life, and an access control system is a crucial component of a security framework. The microcontroller-based digital lock described here is an access control system that permits only authorized individuals to enter a...
A timer is being developed for circuit training or boxing training. The timer does not require any external input, except for a reset function. The project can be simplified using a microcontroller, such as the PIC12F635, which is cost-effective at...
This circuit employs an 87C57 microcontroller along with several peripherals to convert X-10 power-line carrier-code formats from a personal computer for use with an X-10 power-line interface in a home-control system. Software details can be found in the reference.
The circuit...
We use cookies to enhance your experience, analyze traffic, and (if you allow) serve personalized ads.
By clicking Accept All, you agree to our use of cookies.
Learn more