This homework is equivalent to a programming assignment. It is worth
100 points. Please work on it alone. NEATNESS and READABILITY count;
actually for 40% of your grade.
You will need to watch the PIC training video linked to off of the
class web page. Specifically, you will need to view video 2: PICmicro
x14 Instruction Set. You will also need to refer to the technical
reference manual for the chip.
1) According to the video, how many instructions are there for the x14 chip ?
2) How many bits are there for the opcode for
a) byte oriented instructions
b) bit oriented instructions
c) for the CALL and GOTO instructions
3) How does the chip decode the opcode for a given instruction ? That
is, given an instruction, how does the chip figure out if it is a byte
oriented, bit oriented, literal or goto/call instruction ? You'll need
to refer to the technical reference manual.
4) For byte oriented instructions, what's the difference between specifying a 'w' or 'f' after the operand?
5) What happens if you don't specify a 'w' or 'f' after the operand in a byte oriented instruction ?
6) The 2K range for goto/call instructions is too restrictive. I wish
to design to a chip using the x14 instruction set and architecture that
can handle bigger programs (for example, up to 8K). Is this possible ?
Explain your answer.
7) What flags exist in the 16F628 ? Where are they located ?
8) What is the DC flag used for? Please don't quote the reference
manual (0 points); given me a practical application (this will take
some thought or research).
9) What is the difference between RETURN and RETLW ?
10) I have written three subroutines: doThis, doThat, doTheOther. I
want to call doThis if PORTB pin 3 is set, otherwise call doThat.
I want to cal doTheOther in either case. Write the code fragment to
11) What is a Watch Dog Timer ?
12) What breed is the Watch Dog for the Watch Dog Timer ?
13) PORTA and PORTB each have 8 pins. NOT all of these pins perform I/O . Which ones do not ? What are these pins functions ?
14) You have beem instructed to include the following lines in all your programs:
;turn comparators off (make it
like a 16F84)
Why should you include these lines ? What is a comparator ?