Questions on the '508A
How much do you know about the '508A?
The best way to find out is to answer a set of questions.
Here's 50 questions on the in's and out's this micro. See how much you know.
Why learn about the '508A? . . . . . Why? Because it's much more powerful
than you think.
New versions with 64 bytes of RAM, A to D lines and 1024 bytes of
memory are available and allow you to put together very powerful
miniature projects. So it shouldn't be overlooked the next time you
are thinking of making a project for your self or even a commercial venture.
1. What does the ORG 000 statement mean?
Ans: It tells the assembler to place the next instruction at memory
2. How can you test to see if a file is zero?
Ans: MOVF 1A,1
;test Z flag
3. If a file is zero, what is the value of the Z flag after the file
is tested via the instruction:
Ans: The Z flag = SET = 1
4. The contents of file 1A is "moved" (MOVF 1A,0) to the W register.
After moving, what is the value in file 1A?
Ans: The same as before. The instruction means "copy."
5. Describe the following instruction:
Ans: The instruction tells the micro to make a CALL to a sub-routine
that has its first instruction at an address identified by the word
6. What does the word "Label" mean?
Ans: It means a name or tag (or set of letters) to identify the address
of the first instruction of a sub-routine so the assembler can find it.
7. For a '508A, where in memory can a sub-routine be placed so the
micro can find it? Give the address range:
Ans: 000 to 0FF - only the first half of program space for a '508A.
8. For a PIC16F84, state the address range for "CALL Label."
Ans: 000 to 7FF
9. Explain the instruction: BCF 06,2
Ans: Clear bit 2 of file 6 - the input/output port (file). i.e: Zero
10. What does WDT mean?
Ans: WatchDog Timer. A separate timer within the micro that counts
for 18mS and resets the micro (unless WDT is turned OFF).
11. How do you reset the WDT?
12. How do you disable the WDT?
Ans: When burning the chip, set WDT_OFF in the config setup.
13. Explain the following:
Loop1 GOTO Loop1
Ans: This is the same as a HALT or STOP instruction. The micro will
loop around this instruction indefinitely unless the WDT (Watchdog
Timer) is SET.
14. How do you increment W?
Ans: There is no direct instruction to increment W. Put W into a temporary
file, INC the file and copy the result into W - It only takes two
15. How do you double a value in a file? In other words how do multiply
Ans: Clear the carry flag and rotate left the file:
This only works if the number is 7F or less. If the value in the file
is unknown, test bit 7 of the file to see if it is zero:
Below (the next instruction is placed here)
16. What file is the input/output port?
Ans: file 06
17. How many port lines for a '508A?
Ans: 6 lines.
18. What is special about line 3 (GP3)?
Ans: It is input only.
19. Name the Port lines for a '508A:
Ans: GP0, GP1, GP2, GP3, GP4, GP5
20. Name the output lines for a '508A:
Ans: GP0, GP1, GP2, GP4, GP5
21. What is the name of the register that controls the bits on the
port to make them input or output?
Ans: The TRIS register.
To make Bit0 an output, the instructions are:
MOVLW 0011 1110 ;Put 3E into W
MOVWF TRIS 06
;Make GP0 output
22. Can GP0 be both input AND output?
Ans: Yes, but not at the SAME TIME. The direction of a port line (except
GP3) can be changed at any time during the running of a program. See
Changing Direction in Library of Routines.
23. What does RETLW mean?
Ans: It means RETURN from sub-routine with a value in W. The value
will be the hex value contained in the instruction:
e.g: RETLW 00
You cannot create a sub-rotuine that "puts a value into W." The value
in W is "locked-in" during the initial writing of the program.
24. What are these instructions doing?
Ans: The instructions test the zero flag to see if file 1A contains 08.
25. What is the value in W after the following 4 instructions:
Ans: After the first instruction W = 08. After the 2nd instruction
W = 08. After the 3rd instruction W = unknown as the value in file
1B is unknown. After the 4th instruction W = unknown as MOVF 1A,1 moves
the value in and out of 1A but not into W.
26. What does the following instruction mean:
Ans: Increment the value contained in the file at the specified address
and place the result in W.
Our programming code is easier to understand. Our instruction takes
Where 1A is the file and 0 is the destination W.
27. How do you increment an address?
Does this statement mean:
(a) Increment from file 1A to file 1B or,
(b) Increment the contents at the specified address?
See Q26 for answer to (b).
Ans: To increment from one address to another see INCrement Address
in Library of Routines.
28. What is the value in 1A after the following 3 instructions:
29. Describe the operation of the following instruction:
The instruction is testing GP1 and most likely this is an input bit
and the program is testing for a HIGH.
30. What are these instructions doing:
Ans: Testing to see if file 1A is zero.
31. If a table starts at address 080h, what is its maximum length.
Ans: 080h - 1 so it does not go over the first page boundary.
32. How can you find the address of a sub-routine?
Ans: Go to the .LST file and read the address value for each label
33. Can a sub-routine be CALLed, that is lying across the page boundary
of a '508A?
Ans: Yes. It's only a Table that must not go over the page boundary.
34. How do you load a file from another file?
Ans: e.g: Move the contents of file 1A to 1B:
35. How many delay loops can be created with a single file:
Ans: 256 loops
36. How do you load the TRIS register?
Ans: Each bit in the TRIS register operates on the corresponding bit
in the input/output port (file 06). For each port line required to
be made an input, make the corresponding bit in TRIS "1." When you
have worked out the value for the 6 bits, they are loaded into W and
moved from W to the TRIS register thus:
E.g: To make lines GP0 and GP3 input:
;GP0 and GP3 = input
37. How many uS for the following instructions. Work out the total
and look for the "catch."
Ans: 6uS. At BTFSS, file 0C will be 01 and bit 6 will be zero. The
next instruction (GOTO Below) will be executed by the micro and the
next three instructions are not counted.
38. Describe one of the uses for the AND operation?
Ans: To mask a HIGH or LOW nibble.
To remove the high nibble from a number, the file is ANDed with 0F.
See Library of Routines.
39. Describe a use for the XOR operation.
Ans: It can be used to see if two files are the SAME.
40. How do you make a port line HIGH?
Ans: Step 1: Make the corresponding bit in TRIS an output by making
Step 2: SET the required bit in file 6 (the input/output port). i.e:
make it "1."
41. Where do you find the Carry flag?
Ans: In the STATUS file (03) bit 0.
42. Where do you find the Zero flag?
Ans: In the STATUS file (03) bit 2.
43. Write an instruction for HALT
Stay GOTO Stay
44. How many levels of stack in the '508A?
45. What is the longest Delay routine that can be created with the
Ans: Possibly months, using all the files in a nested routine.
46. What is the shorted delay?
Ans: 1uS Use NOP.
47. How do you DECrement W?
Ans: There is no direct instruction to DECrement W. Put W into a temporary
file, DEC the file and copy the result into W - It only takes two
48. What does DEFAULT mean?
Ans: The setting that applies when no instructions are given.
49. What does COMPLEMENT mean?
Ans: To change the bits in a file to the opposite state. E.g: to change
"0" to "1" and "1" to "0."
50 Are the following projects suitable for a '508A?
(a) one input line, two output lines, 350 instructions in the program,
driving red and green 3mm LEDs.
(b) three input lines, four output lines, 500 lines of code in the
program, driving a mini speaker via a buffer transistor.
(c) One input line, 8 output lines, 340 lines of code in the program,
driving buffer transistors.
Ans: (a) and (b) can be performed with a '508A. (c) can be handled with a PICF84.
Produced by Colin Mitchell 1 - 1 - 2001