1 / 13

16.317: Microprocessor System Design I

16.317: Microprocessor System Design I. Instructor: Dr. Michael Geiger Spring 2012 Lecture 32: PIC instruction set, pt. 2. Lecture outline. Announcements/reminders Lab 4 due 4/25 Limited # of PICkits  strongly suggest you work in a group for the last two assignments

cyndi
Download Presentation

16.317: Microprocessor System Design I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 16.317: Microprocessor System Design I Instructor: Dr. Michael Geiger Spring 2012 Lecture 32: PIC instruction set, pt. 2

  2. Lecture outline • Announcements/reminders • Lab 4 due 4/25 • Limited # of PICkits strongly suggest you work in a group for the last two assignments • PICkits can be checked out from the lab • Lab 5, HW 4 to be posted ASAP (hopefully later today) • Lecture outline • Review: PIC instructions • Formats • Variables • Clear/move • Unary ops • Arithmetic • PIC instructions • Logical ops • Goto/call/return • Misc Microprocessors I: Lecture 32

  3. Review: PIC instructions • Four instruction formats • Upper bits of all hold opcode • Byte-oriented includes 1 bit destination, 7 bit direct address • Bit-oriented includes 3 bit position (0-7), 7 bit direct address • Literal/control includes 8 bit literal • CALL/GOTO includes 11 bit literal • Variable declarations • cblock <start_address>: start of variable declarations • All names between cblock/endc directives assigned to consecutive bytes starting at <start_address> Microprocessors I: Lecture 32

  4. Review: PIC instructions (cont.) • Clearing register: clrw/clrf • Moving values: movlw/movwf/movf • Swap nibbles: swapf • Single bit manipulation: bsf/bcf • Unary operations: incf/decf/comf • Arithmetic: addlw/addwf/sublw/subwf Microprocessors I: Lecture 32

  5. Example • Show the values of all changed registers after the following sequence cblock0x20 varA varB varC endc clrfvarA clrfvarB clrfvarC incfvarA, W sublw 0x0F addwfvarB, F decfvarB, F comfvarB, W subwfvarC, F Microprocessors I: Lecture 32

  6. Example solution clrfvarA varA = 0 clrfvarB varB= 0 clrfvarC varC= 0 incfvarA, W  W = varA + 1 = 1 sublw 0x0F  W = 0x0F – W = 0x0F – 1 = 0x0E addwfvarB, F  varB = varB + W = 0x0E decfvarB, F  varB = varB – 1 = 0x0D comfvarB, W  W= ~varB = ~0x0D = 0xF2 subwfvarC, F  varC = varC – W Microprocessors I: Lecture 31

  7. Multi-bit Manipulation Examples: • andlw B’00000111’ ;force upper 5 bits of W to zero • andwf TEMP1, F ;TEMP1 <- TEMP1 AND W • andwf TEMP1, W ;W <- TEMP1 AND W • iorlw B’00000111’ ;force lower 3 bits of W to one • iorwf TEMP1, F ;TEMP1 <- TEMP1 OR W • xorlw B’00000111’ ;complement lower 3 bits of W • xorwf TEMP1, W ;W <- TEMP1 XOR W andlw k ; AND literal value k into W andwf f, F(W) ; AND W with F, putting result in F or W iorlw k ; Inclusive-OR literal value k into W iorwf f, F(W) ; Inclusive-OR W with F, putting result in F or W xorlw k ; Exclusive-OR literal value k into W xorwf f, F(W) ; Exclusive-OR W with F, putting result in F or W STATUS bits: Z Microprocessors I: Lecture 32

  8. Rotate Examples: • rlf TEMP1, F ; C <- TEMP1.bit(7), TEMP1.bit(i+1) <- TEMP1.bit(i) ; TEMP1.bit(0) <- C • rrf TEMP1, W ; Copy TEMP1 to W and rotate W right through C ; TEMP1 unchanged rlf f, F(W) ; copy f into F or W; rotate F or W left through ; the carry bit rrf f, F(W) ; copy f into F or W; rotate F or W right through ; the carry bit STATUS bits: C Microprocessors I: Lecture 32

  9. Example • Show the values of all changed registers after the following sequence • Assume the carry bit is initially 0 cblock0x40 z endc clrf z movlw 0xF0 iorwf z, F xorlw 0xFF rrf z, F andwf z, W rlf z, F Microprocessors I: Lecture 32

  10. Example solution clrf z  z = 0 movlw 0xF0  W = 0xF0 iorwf z, F  z = z OR W = 0xF0 xorlw 0xFF  W = W XOR 0xFF = 0xF0 XOR 0xFF = 0x0F rrf z, F  Rotate z right thru carry Before rotate, (z, carry) = 1111 0000 02  z = 0111 10002 = 0xE8, C = 0 andwf z, W  W = z AND W = 0xE8 AND 0x0F = 0x08 rlf z, F  Rotate z left thru carry Before rotate, (z, carry) = 0 0111 10002  z = 1111 00002 = 0xF0, C = 0 Microprocessors I: Lecture 32

  11. Goto/Call/Return/Return from Interrupt Examples: • goto There ; Next instruction to be executed is labeled “There” • call Task1 ; Push return address; Next instruction to be ; executed is labeled “Task1” • return ; Pop return address off of stack • retlw 5 ; Pop return address; W <- 5 • retfie ; Pop return address; re-enable interrupts goto label ; Go to labeled instruction call label ; Call labeled subroutine return ; Return from subroutine retlw k ; Return from subroutine, putting literal ; value in W retfie ; Return from interrupt service routine; ; re-enable interrupts STATUS bits: none Microprocessors I: Lecture 32

  12. Miscellaneous Examples: • clrwdt ; if watchdog timer is enabled, this instruction will reset ; it (before it resets the CPU) • sleep ; Stop clock; reduce power; wait for watchdog timer or ; external signal to begin program execution again • nop ; Do nothing; wait one clock cycle clrwdt ; clear watchdog timer sleep ; go into standby mode nop ; no operation STATUS bits: clrwwdt, sleep: NOT_TO, NOT_PD nop: none Microprocessors I: Lecture 32

  13. Next time • Continue with discussion of PIC instructions Microprocessors I: Lecture 32

More Related