اصول ميکروکامپيوترها استاد درس: دکتر http://eeiustacir/rahmati/indexhtm rahmati@iustacir ا درس Email و Website برای تکاليف و : http://eeliustacir/rahmati/ ١ /١۴ هفدهم فصل ا شنايی با دستورالعمل ها وMode های ا درس دهی ميکروکنترولر 8051 ٢ /١۴ ١
SETBbit ; bit=1 CLR bit ; bit=0 SETB C ; CY=1 SETB P00 ;bit 0 from port 0 =1 SETB P37 ;bit 7 from port 3 =1 SETB ACC2 ;bit 2 from ACCUMULATOR =1 SETB 05 ;set high D5 of RAM loc 20h Note: CLR instruction is as same as SETB ie: CLR C ; CY=0 But following instruction is only for CLR: CLR A ; A=0 دستورالعمل های مربوط به bit ٣ /١۴ دستورالعمل های مربوط به byte DEC byte ;byte=byte-1 INC byte ;byte=byte+1 INC R7 DEC A DEC 40H ; [40]=[40]-1 SETB P00 ACALL UP UP: CLR P00 RET ۴ /١۴ Call instruction ACALL SUBROUTINE1 LCALL SUBROUTINE2 ٢
(Conditional Jumps) JZ Lable1 JNZ Lable2 DJNZ Lable1 DJNZ Rn, Lable1 CJNE A, byte, Lable1 CJNE Reg, data, Lable1 JC Lable1 JNC Lable2 JB bit, Lable1 JNB bit, Lable2 JBC bit, Lable1 دستورالعمل های پرش شرطی Jump if A=0 Jump if A 0 Decrement and jump if A 0 Decrement and jump if Rn 0 Jump if A byte Jump if byte data Jump if CY=1 Jump if CY=0 Jump if bit=1 Jump if bit=0 Jump if bit=1 and then clear bit ۵ /١۴ همه پرش های شرطی کوتاه هستند Jumps) (Short حالت ها ا درس دهی 8051 The 8051Addressing Modes ۶ /١۴ ٣
(ا درس دهی با ثبات) -1 Register Addressing Mode Operand به صورت يک بايت در يکی از رجيسترهای داخلی( Rn ) قرار دارد MOV A, R7 ; Copy the contents of R7 into A ADD A, R7 ; Add the contents of R7 to A MOV MOV R7, A A, R5 INC R0 ; Increment R0 DEC R1 ; Decrement R1 ANL A, R6 ; Logic AND (A+R6) ٧ /١۴ (ا درس دهی مستقيم) 2-Direct Addressing Mode ا درس Operand به صورت يک بايت داده می شود MOV A, P1 MOV A, 90H ; Copy the contents of P1 (90H) into A ; Copy the contents of P1 (90H) into A MOV A, 7FH ; Copy the contents of memory location (7FH) into A INC 7FH ; Increment (internal RAM) memory location (7FH) MOV MOV P1, A A, DPH ADD A, 4 ANL A, 37H ; AND Logically MOV 4, 7 ; Copy the contents of R7 into R4 ٨ /١۴ MOV R4, R7 Invalid Instruction ٤
(ا درس دهی غير مستقيم) Mode -3 Indirect Addressing ا درس در يکی از رجيسترهای R0 يا R1 قرار دارد ٩ /١۴ MOV A, @R1 ; Copy the contents of (R7) into A MOV @R0, A MOV @R1, B MOV A, @R1 MOVC A, @DPTR ; Read from code (ROM) memory MOVX A, @R0 ; Read from external memory MOVX @R0, A ; Write to (external RAM) data memory MOVX A, @DPTR ; Read from external data memory MOVX @DPTR, A ; Write to external memory ADD A, @R0 ; Add the contents of (R0) to A ANL A, @R0 ; AND Logically INC @Ri ; i=0, 1 (ا درس دهی بلافصل) 4-Immediate Addressing Mode Data ا درس يا Operand مقدار ثابتی است MOV A, #12H MOV DPTR, #2000H MOV DPL, #00 MOV DPH, #2O MOV R4, #62 MOV R4, #COUNT ADD A, #25H ANL A, #33 ١٠ /١۴ ٥
(ا درس دهی نسبی) Mode 5-Relative Addressing از اين ا درس دهی برای پرش های نسبی کوتاه (۱۲۷+ تا ۱۲۸-) استفاده می شود JZ AGAIN ; Jump if A=0 JNZ AGAIN ; Jump if A 0 SJMP 5 ; Jump forward 5 locations SJMP 0F6H ; Jump back 10 locations JB P12, LABLE1 ; Jump if the bit is set (P12=1) JC LABLE2 ; Jump if Carry is set (Cy=1) JNC LABLE2 ; Jump if Carry is not set (Cy=0) SJMP START DJNZ Ri, LABLE3 ; Decrement Ri and jump if Ri 0 ١١ /١۴ DJNZ CJNE R7, AGAIN R5, #73H, AGAIN ;Compare and Jump if Not Equal (ا درس دهی مطلق) 6- Absolute Addressing Mode فقط در دستورات ACALL و AJMP استفاده می شود ا درس دارای ۱۱ بيت است به هر خانه ای در صفحه ۲ کيلوبايت حاضر می تواند پرش کند AJMP ACALL THERE ;Absolute Jump THERE ;Absolute call ١٢ /١۴ ٦
(ا درس دهی طولانی) 7- Long Addressing Mode فقط در دستورات LCALL و LJMP استفاده می شود ا درس دارای ۱۶ بيت است به هر خانه ای در حافظه می تواند پرش کند LJMP LCALL THERE ;Long Jump THERE ;Long Call ١٣ /١۴ (ا درس دهی انديس دار) -8 Indexed Addressing Mode فقط در دستورات JMP و MOVC استفاده می شود ا درس حاصل مساوی است با محتويات PC يا DPTR (به عنوان ا درس پايه) بعلاوه محتويات ا کومولاتور (به عنوان ا فست) اين مود ا درس دهی کار با جداول را ا سان می کند MOVC A,@A+PC MOVC A,@A+DPTR ;Read from address (A+PC) ;Read from address (A+DPTR) JMP @A+DPTR Jump to address (A+DPTR) ١۴ /١۴ ٧
پايان ١۵ /١۴ ٨