| 
		DEVELOPMENTAL AREA PIC Fx-1 module 
		contains a Matrix of holes where you can add components to create your own 
		project.
 The SUPPLY RAILS at the top and bottom of this area allows you to 
		connect to the rails and place the components in the same 
		locations as in the circuit.
 This may seem a very simplistic approach to making a circuit but you 
		will appreciate it when coming back to it after a few months. 
		You will be able to immediately recognise the circuit and this makes it 
		easy to work-on.
 Look through the projects we have presented using this micro and you 
		will see some of its capabilities.
 The prototyping area can be cut-to-size to make the board very small.
 You can use the 3 switches and 3 LEDs as a basis to your project and add 
		further components to the prototyping area.
 
 COMPETITION
 There are at least 4 other developmental packages available 
		on the web and some have achieved a large following, mainly because 
		MICROCHIP has not introduced a beginners developmental package at 
		low-cost and have never aimed at the 
		beginner/experimenter/hobbyist/robot enthusiast. This has allowed other 
		manufacturers/designers/programmers to come in and grab this field, with enormous 
		results.
 This has allowed thousands of hobbyists to get in to the robotics arena 
		and develop lots of impressive projects.
 However the methods to create a program have used techniques that 
		involve learning a programming language that is quite complex and 
		difficult to follow.
 It uses a lot of syntax and this means the structure of each line of 
		code must follow a definite arrangement. A coma or bracket out-of-place 
		will prevent the program working.
 But the main disappointment, as far as I am concerned, is the fact that 
		the modules they have designed uses programming that has nothing to do with 
		the instructions needed by the microcontroller. You are 
		simply programming a "chip" and you don't know any of its capabilities.
 This may be ok for a robot enthusiast, but it doesn't suit me. I want to 
		know what is happening at the grass-roots level.
 The other major concern is the fact that some-to-all the memory is taken up with the 
		program supplied by the designer of the prototyping module and all that remains 
		is a small area for your instructions in the EEPROM.
 The result is the chip has much less capability and a larger chip is 
		required to do the task of a smaller version.
 In the end, you don't know how a microcontroller operates.  You are 
		simply creating a program using a high level language.
 With OUR approach, we explain how to write a program from the beginning and show how much 
		can be done with an 8-pin chip.
 In fact we fit 4 times more than any other prototyping module, into the 
		8-pin chip.
 Using a programming language is like getting a "ghost writer " to write 
		your biography. You sit down for 5 minutes and say 10 sentences and he 
		goes away and writes a whole chapter.
 You are not involves in the intervening "thought-exchanges."   
		The same with high-level programming.
 A few lines of code will produce a considerable outcome via the 
		microcontroller.
 But for those who want to know what is happening "along-the-way" you 
		need to use the instructions supplied with the chip.
 Our system is only suitable for small chips (up to 1,000 lines of code 
		as this represents over 20 quarto pages of a  program and unless 
		you put every sub-routine in alphabetical order, the searching through a 
		program becomes very time-consuming.
 Our method also helps you understand and develop the BUILDING BLOCKS 
		needed to produce a program by working out what is needed in 
		COMPUTER-SPEAK for the micro to produce an outcome.
 A Building Block might be:  "output this"  or "shift this" or 
		"divide this by 3" or "look up 5 bytes from a table."  These 
		commands have to be converted into instructions that are understood by 
		the micro and no matter which path you go down, correctly-written 
		instructions must be written.
 Our method uses a basis of 53 instructions, of which only about 20 are 
		in constant use and they are all COPIED AND PASTED into a program so no 
		mistake can be made.
 In fact, whole sub-routines are generally transferred and you are aware 
		of exactly what each sub-routine will produce.
 
		THE NEXT STEP
		The next thing 
		you will want to do is write your own program. But before this can be 
		done, you need 5 things:
 
 1. Software to display your template on your computer: NotePad  -  free
 2. Software to convert your program (called an assembly file) into .hex  
		- MPASM - free
 3. Software to "burn" (flash) your 
		program into the micro via USB programmer - PICkit2 - free
 4. USB Programmer  - kit: $25.00
		to physically "burn" or flash the data.
 5. 5-6 pin connector $2.30 - to connect the USB programmer to PIC 
		Fx module via the ICSP pins.
 
		PROGRAMMING THE 
		CHIP
		If you want to write 
		your own program for an entirely different effect or project, you can use the 
		In-Circuit Programming feature, using the 5 programming pins at the 
		top of the board.
 This will mean you will lose all the programs supplied in the chip, but 
		the .hex listing is available on the web for easy re-downloading.
 The microcontrollers are only $2.00 each and it may be best to buy a 
		number of chips so you can produce your own programs and keep them 
		separate.
 A complete 
		
		PIC Fx-1 module is only $12.00 and hardly requires re-thinking.
 
 Programming uses the same in/out pins as the project and providing the 
		devices connected to the pins are high impedance, they will not affect 
		the programming signals.
 In our case the switches are open and the LEDs have a characteristic 
		voltage of 3.6v before they become a "load."  The 82R resistors 
		allow the voltage to rise another 1v before the resistor and LED becomes 
		a significant load to the programming signals.
 When creating a project, drawing a circuit and writing a program, keep 
		to the same input lines (pins) and output lines as supplied on the 
		module, so nothing has to be re-arranged.
 Here is the circuit for the 
		
		PIC Fx-1 module:
 
		
 
 
		  
		  
		
		
 
 When it all boils down, none of the other techniques teaches anything to 
		do with PROGRAMMING A MICROCONTROLLER.
 You are using instructions called a HIGH LEVEL LANGUAGE and they can be 
		used to program almost any microcontroller.
 Our course specifically targets the PIC family of microcontrollers and 
		you are writing lines of code called mnemonic instructions.
 Each line of code consists of letters to represent a set of words 
		(called a mnemonic - something to simplify and aid memory retention).
 This is called ASSEMBLY CODE and everything you write controls the 
		microcontroller DIRECTLY.
 Writing a program in assembly code is only suitable for very small microcontrollers because 
		the program for the chip we are using will be over 1,000 lines if you 
		want to completely fill the chip. This is more than 20 quarto pages of 
		writing and merely searching up and down will take an effort. That's why 
		you must structure your program in the way we explain  and place 
		the sub-routines in alphabetical order.
 Our method is only intended to get you started in programming.
 If you have been put-off by trying to learn the complexities of a 
		high-level language, this is the place to start.
 You only have to know the 63 instructions for the chip and these are 
		provided in a table.
 But we have made it even easier by creating a template with lots of 
		sub-routines.
 All you have to do is copy-and-paste the sub-routines you want into the 
		template to produce a program.
 
 Everything is wonderful with a high level language until something does 
		not work.
 That's when the problem starts. You don't know if the instructions are 
		incorrect or the microcontroller has made a mistake.
 By writing the code yourself, you are saved this 
		frustration.
 
 
 
 
 
 
 
 
 
 
 
 
							
								| INSTRUC There
 Turn project ON.
 Allow all theC and at the same time, turn project 
		ON.
 |  PROGRAMMThe kit comes with a pre-programmed PIC chip but if you want to write 
		your own program for an entirely different effect, you llo the project can be connected 
		to all sorts of voltages.
 It will work on 6v  know these "tricks" unless you 
		study programming. That's why we are here.
 
		Set-up a folder called PICkit-2 in which you will place the
 programs for all your projects.
 Within the folder you can place
		
		MPASM and ".inc 
		files" and PICkit-2
 burning routine (from the CD that comes with PICkit-2).
 If you are not using PICkit-2, call the folder All Files
 and place "WinPIC.exe" 
		or "WinPIC.zip" 
		in the folder,
 as well as
		
		MPASM and ".inc 
		files."
 You will need
		
		NotePad2.exe or
		
		NotePad2.zip so you can take a .asm file from one of
 the projects we have produced and use it to write your own program.
 sample.asm     
		
		sample.asm
 
 Note 
		1: MPASM and 
		WinPIC have been used to program PIC16F628A
 using 8-pin to 5-pin adapter described below. The chip was programmed
 successfully but WinPIC displayed "Programming failed and only the
 first line of code was displayed in green.   WinPIC  does not read the
 chip properly after burning.
 
 Note 2: 
		I have not successfully programmed a PIC10F220 via WinPIC
 or PICkit-2. I do not suggest you buy a PIC10Fxxx until I have 
		successfully
 programmed one.
 
 
  
		
 p12f629.inc
 
     
		
 Here is the file you will need to write your own program:
 Blank.asm
 
 It contains all the areas, such as Tables, Delays, Sub-routines and 
		Main, where you place your lines of code.
 But before you write a program, go through the following experiments to 
		show how to write a program and produce a number of different effects on 
		the PIC Fx Module:
 
 
		
			| 	
;*******************************
;Blank Template.asm
; date: 
;*******************************
	list	p=12F629
	radix	dec
	include	"p12f629.inc"
	
	errorlevel	-302	; Don't complain about BANK 1 Registers during assembly
	__config	_mclre_off & _cp_off & _wdt_off & _intrc_osc_noclkout  ;Internal osc.
     ;_mclre_off  - master clear must be off for gp3 to work as input pin 
;******************************
; variables - names and files
;******************************
temp1	equ 20h	
temp2	equ 21h	
;*************************
;Equates
;*************************
status	equ	0x03
rp1	equ	0x06
rp0	equ	0x05
GPIO 	equ 	0x05
status	equ	03h
option_reg	equ 81h
	; bits on GPIO
		
pin7	equ	0	;GP0  
pin6	equ	1	;GP1  
pin5	equ	2	;GP2  
pin4	equ	3	;GP3   
pin3	equ	4	;GP4  
pin2	equ	5	;GP5  
	;bits
				
rp0	equ	5	;bit 5 of the status register
;**************************
;Beginning of program
;**************************
	org	0x00
	nop
	nop
	nop
	nop
	nop			
SetUp	bsf	status, rp0 	;Bank 1			
       	movlw	b'11111000'	;Set TRIS  GP0,1,2 out   GP3,4,5 input
	movwf	TRISIO	
	bcf	status, rp0		;bank 0
	movlw   	07h         		;turn off Comparator ports
       	movwf   	CMCON       	;must be placed in bank 0  
	clrf 	GPIO       		;Clear GPIO of junk		
	goto 	Main			
;********************
;* Tables 		*
;********************
table1	addwf   	PCL,F   ;02h,1  add W to program counter
	retlw   	.10     
	retlw   	1ch 
        	retlw   	0Abh   
	
;********************
;* Delays 		*
;********************
		
	;5mS delay 
		
_5mS	movlw	05h
	movwf	temp2
_5	nop
	decfsz 	temp1,f
	goto 	_5
	decfsz 	temp2,f
	goto 	_5	
	retlw 	00	
;****************************
;* Sub Routines 	*
;****************************
	
toggle	movf	count,0
	movwf	temp1
	goto	$+1
	goto	$+1
	decfsz	temp1,1
	goto	$-3
	movlw	b'00000001'
	xorwf	gpio,1		;toggle bit 0
	retlw	00	
		
;************************************
;* Main 			*
;************************************
Main    	bsf      	gpio,0	
	call   	_1Sec
	bcf   	gpio,0	
	call   	_1Sec
	goto	Main		
				
	END	 |  Here is Blank 
		Template.asm with each line described in full detail: 
		
		
 
 
 
		Here is the .asm and .hex files for Experiment1 Blink A LED.asm:
 Burn or flash the .hex file into a NEW PIC12F629 via the In-Circuit 
		Programming port (the 6 pin connector at the top of the module) and turn 
		the project ON. The LED will blink.
 
 Now load blinkA-LED.asm into Notepad and change the value 05, loaded 
		into temp3 in _1Sec delay to 03 or .3 and save the program as blink-2.
 Assemble the program in MPASM to get blink-2.asm and blink-2.hex
 
 Open PICkit2 and load blink-2.hex and press "Write."
 The LED will flash at a faster rate.
 
 Now change the value to 02 or 2 or .2 and save the program as blink-3.
 Assemble the program in MPASM to get blink-3.asm and blink-3.hex
 
 Open PICkit2 and load blink-3.hex and press "Write."
 The LED will flash very fast.
 
		  
		EXPERIMENT 5  XXX      
		THE HIDDEN PROGRAM A program can be placed in the micro and only accessed when a special 
		combination of switches is pressed.
 This must be done at a particular time for the routine to be access.
 The simplest way to implement this feature is to press a button before 
		turn the project ON and the program will detect this switch in the 
		"set-up" section of the program and go to the required program.
 We will show how this is done and prove the flashing routine cannot be 
		access without performing the required step.
 If button A is not pressed before turning the project ON, the micro goes 
		to Main and loops forever.
 If button A is pressed before turning the project ON, the micro goes to
		Main2 and executes the flash routine.
 With 3 switches you can have up to 6 hidden programs: A, B, C, AandB, 
		AandC, BandC.
 
		
		Here is the hidden program for BandC:
 
 |