單片機(jī)原理與應(yīng)用 及實(shí)驗(yàn)報(bào)告

上傳人:仙*** 文檔編號:29540351 上傳時(shí)間:2021-10-07 格式:DOC 頁數(shù):11 大小:174.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
單片機(jī)原理與應(yīng)用 及實(shí)驗(yàn)報(bào)告_第1頁
第1頁 / 共11頁
單片機(jī)原理與應(yīng)用 及實(shí)驗(yàn)報(bào)告_第2頁
第2頁 / 共11頁
單片機(jī)原理與應(yīng)用 及實(shí)驗(yàn)報(bào)告_第3頁
第3頁 / 共11頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《單片機(jī)原理與應(yīng)用 及實(shí)驗(yàn)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)原理與應(yīng)用 及實(shí)驗(yàn)報(bào)告(11頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、 單片機(jī)原理與應(yīng)用(二) 第三章 單片機(jī)的指令系統(tǒng)及程序設(shè)計(jì) 單片機(jī)的應(yīng)用可歸納為是對單片機(jī)的內(nèi)、外存儲(chǔ)器進(jìn)行“存取”的操作,而“輸入輸出”的操作是對P0、P1、P2、P3這四個(gè)與芯片外部引腳相連的專用存儲(chǔ)器的“存取”。 “存取”操作是在存儲(chǔ)器之間進(jìn)行的,可以直接用存儲(chǔ)器的地址,如18、35H 也可以用專用的或自定義的變量名,如 A,R1, P3, Addr1,X1,ON。 3.1 MCS-51單片機(jī)指令系統(tǒng)概述 共有111條指令。 指令長度:單字節(jié)有49條,雙字節(jié)有45條,三字節(jié)有17條。 執(zhí)行時(shí)間:單周期指令有57條,雙周期指令有52條,四周期指令有2條。 有7種尋

2、址方式,42種助記符,33種功能。 指令可分為三大類: 1.?dāng)?shù)據(jù)傳送指令:MOV、MOVC、MOVX 2.運(yùn)算指令: ADDC、SUBB、RLC、ANL、SETB、CLR 3.轉(zhuǎn)移控制指令:LJMP、JB、JNB、JZ、CJNE、DJNZ、LCALL、RET 指令格式: 標(biāo)號: 功能助記符 [(目標(biāo)操作數(shù)),(源操作數(shù))] ;注釋 例 START: MOV R1,#25H ; 常數(shù)25H送給寄存器R1 MOV A,45H ; 地址45H單元中的內(nèi)容送給寄存器

3、A 功能助記符也叫操作碼。 3.2 MCS-51單片機(jī)指令系統(tǒng)的尋址方式 ⑴ 立即(常數(shù))尋址:MOV A,#18 ; 等價(jià)于C語言的A=18 表示為:A18 MOV A,#3CH ; 等價(jià)于C語言的A=0X3C A3CH MOV DPTR,#25D8H ⑵ 直接尋址: MOV A,18 ; 等價(jià)于C語言的A=數(shù)組名[18] A(18) MOV A,5BH ; 等價(jià)于C語言的A=數(shù)組名[5BH] A(5BH) MOV DPH,62H A

4、NL 40H,#50H LJMP 1234H ⑶ 寄存器尋址: MOV A,R1 ; 等價(jià)于C語言的A=R1 AR1 MOV 27H,SP ⑷ 寄存器間接尋址:MOV A,@R1 ; 等價(jià)于C語言的A=數(shù)組名[R1] A(R1) MOVX A,@R1 MOVX A,@DPTR ; 等價(jià)于C語言的A=數(shù)組名[DPTR] A(DPTR) MOV @R0,#56H ; 等價(jià)于C語言的數(shù)組名[R0]=0X56 (R0)56H ⑸ 相對(PC)尋址:

5、 SJMP 0E4H ; 等價(jià)于C語言的 goto 標(biāo)號; JZ -115 ; 等價(jià)于C語言的 if (A==0) goto 標(biāo)號; ⑹ 變址尋址:MOVC A,@A+DPTR ; 等價(jià)于C語言的A=數(shù)組名[A+DPTR] A(A+DPTR) MOVC A,@A+PC ⑺ 位尋址: MOV C,25H C(25H) MOV 25H,C (25H)C SETB P1.0 P1.01

6、 CLR P2.5 P2.50 SETB 37H (37H)1 應(yīng)表示為:(26H).71 更確切。 因?yàn)椋?MOV 37H, #1 也表示為:(37H)1 3.3 MCS-51單片機(jī)指令系統(tǒng)的使用要點(diǎn) 3.3.1 會(huì)影響標(biāo)志位的指令 PSW中的 C:進(jìn)位 AC:半進(jìn)位 OV:溢出 P:奇偶 例:(-104)+(-117)= (10011000) + (10001011) 補(bǔ)碼運(yùn)算

7、 執(zhí)行 MOV A, #98H 10011000 ADD A, #8BH +10001011 之后 A=23H=35, C=1, AC=1, OV=1, P=1  100100011  關(guān)于溢出:指令進(jìn)行算術(shù)運(yùn)算時(shí),是以補(bǔ)碼進(jìn)行的。 值的范圍:-128~+127,當(dāng)運(yùn)算的結(jié)果超出此范圍時(shí),OV=1 。 例:(-5)+(-6)= (11111011) + (11111010) 執(zhí)行 MOV A, #0

8、FBH 11111011 ADD A, #0FAH +11111010 之后 A=F5H= -11, C=1, AC=1, OV=0, P=0 111110101 3.3.2 偽指令:提供匯編的控制信息。 1. ORG 16位地址 ;指明下一條的地址 例1: ORG 100H ;指明下一條指令的地址是100H LJMP Main1 ;這條指令從程序存儲(chǔ)器地址的100H開始存放 2. [標(biāo)號:]

9、 DB 單字節(jié)數(shù)據(jù)項(xiàng)表 ;針對程序存儲(chǔ)器 例2: ORG 2000H MA:DB 68H,0F5H,128 ;MA≡2000H,(2000H)=68H,(2001H)=128 若執(zhí)行指令 MOV DPTR,#MA ;等價(jià)于 MOV DPTR,#2000H CLR A ; A0 MOVC A,@A+DPTR ;A(A+DPTR)=(0+2000H)=68H 3. [標(biāo)號:] DW 雙字

10、節(jié)數(shù)據(jù)項(xiàng)表 ; 例3: ORG 0F00H MA: DW 68F5H,0234H 4. 名字 EQU 表達(dá)式 ;給表達(dá)式的值或字符串取名 這里的“名字”等同于高級語言中的變量名。 高級語言中注重“變量”,而匯編語言注重“地址”。 例4:ABC EQU 58H ; ABC≡58H DianHuo EQU P1.4 ; DianHuo≡P1.4 指令 MOV A,ABC ; 等價(jià)于 MOV A,58H ;A(58H) 指令 MOV A,#ABC ; 等價(jià)于 MOV

11、 A,#58H ;A58H 指令 SETB DianHuo ; 等價(jià)于 SETB P1.4 5. 名字 DATA 直接字節(jié)地址 ;給內(nèi)存RAM單元取名 6. 名字 WDATA 直接字節(jié)地址 ;給外存RAM單元取名 7. 名字 BIT 位地址 ;給可尋址的位單元取名 例5: DianHuo EQU P1.4 ; DianHuo≡P1.4 (或 DianHuo BIT P1.4 ; DianHuo≡P1.4 ) 指令

12、 SETB DianHuo ; 等價(jià)于 SETB P1.4 BIT、DATA、WDATA是EQU的特例。 8. [標(biāo)號:] END ; 9. [標(biāo)號:] DS 表達(dá)式 ;空出若干個(gè)存儲(chǔ)單元 3.3.3 指令系統(tǒng)的分類:共111條,可分為五大類。 1. 數(shù)據(jù)傳送指令:不影響C、AC、OV ,影響P。 1). 內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM的傳輸指令 匯編指令 機(jī)器指令 ⑴ MOV A,R5 11101r r r MOV A,65

13、H 11100101 01100101 MOV A,#65H 11100100 01100101 MOV A,@R1 1110011 i ⑵ MOV R6,A (書上有錯(cuò)) MOV R3,82H 10101r r r 10000010 MOV R0,#7DH 01111r r r 01111101 ⑶ MOV 15H,A ; (15H)A MOV 38H,R5 ; (38H)R5 MOV

14、 6EH,@R1 ; (6EH)(R1) MOV 53H,#8EH ; (53H)8EH 例: K3 EQU 38H ; 請注意格式的對齊 MOV K3,R5 ; (K3)R5 MOV 0E3H,2AH ⑷ MOV @R0,A MOV @R1,75H MOV @R0,#3BH ⑸ MOV DPTR,#15A3H ; DPTR15A3H ⑹ PUSH 67H ; SPSP+1 , (SP)(67H)

15、 POP PSW ; PSW(SP), SPSP-1 ⑺ XCH A,R3 ; 字節(jié)交換 A←→R3 XCH A,27H ; A←→(27H) XCH A,@R1 ; A←→(R1) ⑻ XCHD A,@R0 ; 字節(jié)的低4位交換,高4位不變 SWAP A ; A的高4位和低4位交換 2). 累加器A與外部數(shù)據(jù)存儲(chǔ)器RAM的傳送指令   MOVX A,@DPTR ; A(DPTR)

16、MOVX @DPTR,A MOVX A,@R1 ;A(P2R1) MOVX @R0,A ;(P2R0) A 3). 查表指令(對程序存儲(chǔ)器ROM) MOVC A,@A+PC MOVC A,@A+DPTR ; A(DPTR+A) 例:①對內(nèi)部RAM:MOV A,@R0 ; R0的內(nèi)容為表格中存放數(shù)據(jù)的地址。 ②對外部RAM:MOVX A,@R0 ; P2,R0 為存放數(shù)據(jù)的地址 MOVX A,@DPTR ; ③對程序ROM:MOVC A,@A+DPTR ;一般A=0,DPTR

17、作為增量。 表中取出的值與指定的值(如字符‘B’)比較、判別: CJNE A, ‘B’, L1 或 CJNE A,#42H,L1 ; 若 A≠42H 則轉(zhuǎn)移到L1執(zhí)行。 2. 算術(shù)操作指令 1). 加法指令 :⑴、⑵、⑷會(huì)影響C、AC、OV 、P。 ⑴ 不帶進(jìn)位的加法運(yùn)算 ADD A,R3 ; AA+R3 ⑵ 帶進(jìn)位的加法運(yùn)算 ADDC A,R3 ; AA+R3+C ⑶ 增量指令 INC A INC R4 ; R4R4+1

18、 INC @R1 ; (R1)(R1)+1 ⑷ 十進(jìn)制調(diào)整指令 DA A ; 當(dāng)A的高四位(低四位)的C=1(AC=1)或者大于9,則進(jìn)行加6調(diào)整。 例: MOV A,#59H ADD A,#69H ; A59H+69H=C2H, C=0, AC=1 必須保證兩個(gè)操作數(shù)均為BCD碼 DA A ; AC2H+66H=28H,C=1 2). 減法指令 :⑴會(huì)影響C、AC、OV 、P。 ⑴ 帶借位減法指令 SUBB A,R5 SUBB A

19、,63H ; AA-(63H)-C SUBB A,@ R1 SUBB A,#4AH ⑵ 減1指令 DEC A DEC R3 DEC @R1 DEC 57H 3). 乘法指令 MUL AB ; AAB 結(jié)果的高8位在B, 低8位在A。 4). 除法指令 DIV AB ; AA/B 結(jié)果的商在A, 余數(shù)在B。 3. 邏輯運(yùn)算指令 1). 單操作數(shù)邏輯運(yùn)算指令 ⑴ 累加器清零 CL

20、R A 其余的寄存器或存儲(chǔ)單元的清零,只能用 MOV R3,#00H ⑵ 累加器取反 CPL A ⑶ 累加器左移 RL A RLC A ; 帶進(jìn)位C ⑷ 累加器右移 RR A RRC A ; 帶進(jìn)位C 2). 雙操作數(shù)邏輯運(yùn)算指令:注意操作數(shù)沒有 ANL 35H,R2的形式。  ⑴ 邏輯與 ANL 35H,A ; (35H)(35H)∧A ⑵ 邏輯或 ORL A,@R1 ; AA∨(R1) ⑶ 邏輯異或

21、 若 MOV 6BH,#0C5H 11000101 XRL 6BH,#59H ;(6BH)(6BH) + 59H=9CH + 01011001 主要用在判斷兩個(gè)字節(jié)內(nèi)容是否相等。 10011100 相等時(shí)的結(jié)果為0。 4. 控制轉(zhuǎn)移指令 1). 無條件轉(zhuǎn)移 ⑴ AJMP 11位地址 ;(PC)PC的高5位后接11位地址 PC的高5位 地址段(2KB)

22、 00000bbb XX 0000~07FF 00001bbb XX 0800~0FFF 00010bbb XX 1000~17FF 00011bbb XX 1800~1FFF | | 11110bbb XX F000~F7FF 11111bbb XX F800~FFFF ⑵ SJMP

23、-128~+127的偏移量 ;PCPC+2+錯(cuò)誤!鏈接無效。 ⑶ LJMP 16位地址 ;PC 16位地址 ⑷ JMP @A+DPTR ;PC(A+DPTR) 例: 應(yīng)用JMP指令實(shí)現(xiàn)switch case轉(zhuǎn)移功能。 START: MOV DPTR,#TEMP MOV 35H,A RL A ADD A,35H ;A=A*3 JMP @A+DPTR T

24、EMP: LJMP CL0 ; 當(dāng)A=0 LJMP CL1 ;當(dāng)A=1 LJMP CL2 ;當(dāng)A=2 ┆ ┆ ┆ LJMP CL9 ;當(dāng)A=9 2).條件轉(zhuǎn)移 ⑴ 測試條件轉(zhuǎn)移 JZ -128~+127的偏移量 ; 當(dāng)(A)=0時(shí),(PC)(PC)+2+偏移量 JNZ -128~+127的偏移量 ; (A)≠0

25、 JC -128~+127的偏移量 ; (C)=1 JNC -128~+127的偏移量 ; (C)=0 JB bit,-128~+127的偏移量 ; (bit)=1 ,(PC)(PC)+3+偏移量 JNB bit,-128~+127的偏移量 ; (bit)=0 JBC bit,-128~+127的偏移量 ; (bit)=1 ,同時(shí)(bit)0 ⑵ 比較不相等轉(zhuǎn)移 CJNE A,#69H,-128~+127的偏移量 ;當(dāng)(A)≠69H時(shí),PCPC+3+偏移

26、量 ;當(dāng)(A)<69H時(shí), PCPC+3 ⑶ 循環(huán)控制轉(zhuǎn)移 DJNZ R5,-128~+127的偏移量 ;R5R5-1, ;當(dāng)R5≠0時(shí),PCPC+2+偏移量 DJNZ 37H,-128~+127的偏移量 ;(37H)(37H)-1, ;當(dāng)(37H)≠0時(shí),PCPC+3+偏移量 3).調(diào)用和返回 ⑴ 調(diào)用 ACALL 11位地址 ; LCALL 16位地址 ;SPSP+1,(SP)PC+2的低字節(jié),

27、 ;SPSP+1,(SP)PC+2的高字節(jié), ;PC16位地址。 ⑵ 返回   RET  ??;子程序返回 PC的高字節(jié)(SP),SPSP-1,               ;PC的低字節(jié)(SP),SPSP-1。 RETI         ;中斷返回 4).空操作 NOP   5. 位操作指令 1). 位傳送    MOV C,27H MOV 5DH,C 2). 位修改(置位或清零) CLR C ;C0

28、 CLR P1.4 CPL C ; 求反 CPL 48H SETB C ;C1 SETB 6DH 3). 位邏輯與 ANL C,45H ;CC∧(45H) ANL C,/45H ;CC∧~(45H) 4). 位邏輯或 ORL C,5BH ;CC∨(5BH) ORL C,/5BH ;CC∨~(5BH) 各種指令操作碼的含義: 1. MOV: 內(nèi)部數(shù)據(jù)存

29、儲(chǔ)器傳送 16. XCH: 兩字節(jié)交換 31. ADD:不帶進(jìn)位的加法 2. MOVX:外部數(shù)據(jù)存儲(chǔ)器傳送 17. JBC:位變量為1則置0并轉(zhuǎn)移 32. CLR: 清0 3. SETB : 位變量置1 18. INC: 加1 33. SJMP:相對于PC轉(zhuǎn)移 4. SWAP:ACC的高低4位交換 19. MOVC:外部程序存儲(chǔ)器傳送 34. AJMP:短轉(zhuǎn)移 5. RETI :中斷返回 20. LCALL:子程序長調(diào)用 35. RLC:帶進(jìn)位左移 6

30、. CJNE :比較不相等則轉(zhuǎn)移 21. DJNE:相減結(jié)果為0則轉(zhuǎn)移 36. MUL:乘法 7. JZ: ACC的內(nèi)容為0則轉(zhuǎn)移 22. SUBB:帶進(jìn)位減法 37. DA: 十進(jìn)制調(diào)整 8. ADDC:帶進(jìn)位的加法 23. POP: 出棧 38. XCHD:低半字節(jié)交換 9. ANL :邏輯與 24. CPL: 位變量取反 39. JB: 位變量為1則轉(zhuǎn)移 10. RRC:帶進(jìn)位右移 25. JNZ:ACC的內(nèi)容不為0則轉(zhuǎn)移 40. RL: 左移 11. XRL

31、:邏輯異或 26. ORL: 邏輯或 41. JNC:進(jìn)位位不為1則轉(zhuǎn)移 12. DIV :除法 27. JNB: 位變量為0則轉(zhuǎn)移 42. RET:子程序返回 13. LJMP:長轉(zhuǎn)移 28. PUSH:進(jìn)棧 43. JMP:間接轉(zhuǎn)移 14. DEC:減1 29. NOP: 空指令 44. ACALL:子程序短調(diào)用 15. RR: 右移 30. JC: 進(jìn)位位為1則轉(zhuǎn)移 45. 偽指令 作業(yè)二:

32、填空題: 1. 通用寄存器R0~R7在工作寄存器區(qū)中有四組,由程序狀態(tài)字中的 位和 位來選擇確定。 2. MCS-51片內(nèi)地址 范圍內(nèi)的數(shù)據(jù)存儲(chǔ)器,既可以字節(jié)尋址又可以位尋址。 3. 在MCS-51單片機(jī)中,如果采用6MHz晶振,則1個(gè)機(jī)器周期的執(zhí)行時(shí)間是 。 4.假定累加器A=49H,執(zhí)行指令: 201AH: MOVC A,@A+PC 后,送入A的是程序存儲(chǔ)器 單元的內(nèi)容。 5.若DPTR=5306H,A=49H,執(zhí)行下列指令: MOVC A,@A+DPTR 后,送入A的是程序存儲(chǔ)器

33、 單元的內(nèi)容。 6.假定SP=45H,ACC=46H,B=47H,執(zhí)行下列指令: PUSH ACC PUSH B 后,SP= ,(46H)= ,(47H)= 。 7.假定SP=47H,(46H)=46H,(47H)=47H。執(zhí)行下列指令: POP DPH POP DPL 后,DPTR= ,SP= 。 8.若A=56H,R0=56H,(56H)=79H。執(zhí)行指令: ADD A,@R0 后,A= ,CY= ,AC= ,OV= 。 9.若A=0FFH,

34、R0=46H,(46H)=0FFH,CY=1。 執(zhí)行指令: ADDC A,@R0 后,A= ,CY= ,AC= ,OV= 。 10.假定A=45H,B=67H。執(zhí)行指令: MUL AB 后,寄存器B= ,累加器A= ,CY= ,OV= 。 11.假定A=0FCH,B=35H。執(zhí)行指令:DIV AB 后,累加器A= ,寄存器B= ,CY= ,OV= 。 3.4 匯編語言程序設(shè)計(jì)及實(shí)用程序舉例 關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)(面向過程) 自頂向下,逐步細(xì)化。 細(xì)化的每個(gè)

35、步驟應(yīng)盡可能劃分成大的部分: 即能劃分成三部分就不要?jiǎng)澐殖伤牟糠郑? 能劃分成兩部分就不要?jiǎng)澐殖扇糠帧? 直至不能再分解。 對每個(gè)部分模塊化,每個(gè)模塊使用結(jié)構(gòu)化方法設(shè)計(jì)。 【補(bǔ)充:關(guān)于面向?qū)ο蟮某绦蛟O(shè)計(jì)(在結(jié)構(gòu)化程序設(shè)計(jì)的基礎(chǔ)上面向數(shù)據(jù))】 順序結(jié)構(gòu)程序 雙分支結(jié)構(gòu)程序 3.4.1 順序結(jié)構(gòu)程序 3.4.2 分支結(jié)構(gòu)程序 N S1=1 Y L1

36、 指令系列1 指令系列2 與框圖對應(yīng)的程序:(S1是位變量) L2 單分支結(jié)構(gòu)程序: 雙分支結(jié)構(gòu)程序: (其他指令) (其他指令) 單分支結(jié)構(gòu)程序 JB S1,L1 JB S1,L1 指令系列 指令系列1 S1=1 Y L1: (其他指令)

37、 SJMP L2 N L1:指令系列2 指令系列 L2:(其他指令) L1 3.4.3 循環(huán)結(jié)構(gòu)程序 1.先循環(huán)后判別 2.先判別后循環(huán) R3為專用變量名 L1

38、L1 1.先循環(huán)后判別 (其他指令) 指令系列 R3=0 Y L1: 指令系列 L2 N DJNZ R3,L1 N R3=0 指令系列 (其他指令) Y

39、 L3 DJNZ R3,L1 這一條指令執(zhí)行的結(jié)果為: ① R3R3-1 ② 如果 R3≠0 則 轉(zhuǎn)移到L1 否則 執(zhí)行下一條指令。 2.先判別后循環(huán) 方法一: 方法二: 方法三: (其他指令) (其他指令) (其他指令) L1: DJNZ R3,L2 L1: MOV A,R3 L1: MOV A,R3 SJMP L3

40、 JZ L3 JNZ L2 L2: 指令系列 L2: 指令系列 SJMP L3 SJMP L1 SJMP L1 L2:指令系列 L3: (其他指令) L3: (其他指令) SJMP L1 (其他指

41、令) 3.4.4 子程序設(shè)計(jì) 1. 子程序的結(jié)構(gòu) 例:軟件延時(shí)3ms,設(shè)Fosc=6MHz。 DELAY3: MOV R5,#3 DEL0: MOV R4,#250 DEL1: DJNZ R4,DEL1 ;2504μs=1ms DJNZ R5,DEL0 RET 使用 LCALL DELAY3 或 ACALL DELAY3 調(diào)用。 軟件延時(shí)程序流程圖: 軟件延時(shí) R53

42、 R4250 R4R4-1 N R4=0 Y R5R5-1 N R5=0 Y RET

43、 2. 子程序的參數(shù)傳遞 1) 無參數(shù) 2) 用累加器A、寄存器R0~R7 3) 通過操作數(shù)地址 4) 通過堆棧:見P49頁的[例3-49] 3. 現(xiàn)場保護(hù)和恢復(fù)現(xiàn)場:主要在中斷子程序的進(jìn)入。 4. 堆棧的設(shè)置:SP的初值為07H,應(yīng)予再設(shè)置,如MOV SP,#60H。 5. 子程序的嵌套:與堆棧的存儲(chǔ)空間有關(guān)。 3.4.5 單片機(jī)實(shí)用程序 1.【例3-44】求表中最小的數(shù)(查表)并保存。 2.【例3-45】延時(shí)子程序 3.【

44、例3-47】兩個(gè)8位二進(jìn)制數(shù)相加 4.【例3-50】雙字節(jié)BCD轉(zhuǎn)換成二進(jìn)制數(shù) (書上有遺漏指令,因其說明有誤。) 5.【例3-51】8位二進(jìn)制數(shù)轉(zhuǎn)換成三位BCD碼; 6.【例3-52】二進(jìn)制碼轉(zhuǎn)換成ASCII碼; 7.【例3-53】ASCII碼轉(zhuǎn)換為4位二進(jìn)制數(shù)。 8. 雙字節(jié)BCD相加 9. 雙字節(jié)無符號數(shù)相加、相減; 10. 雙字節(jié)乘、除單字節(jié)(舉例:模擬運(yùn)行驗(yàn)證結(jié)果) 分析:設(shè)R5、R4為被乘數(shù), R3為乘數(shù),則 (R7、R6)R5*R3, (B、A)R4*R3, R5A, R6R6+B,R7R7+C, 結(jié)果在R7、R6、R5中。

45、 補(bǔ)充:單片機(jī)上的主程序大多如下所示: 主程序 LED(掃描)顯示輸出 鍵盤(掃描)輸入 鍵處理 事件處理 每一個(gè)實(shí)驗(yàn)作業(yè)都要寫實(shí)驗(yàn)報(bào)告,報(bào)告中必須具有以下7項(xiàng)內(nèi)容: ( 全文必須做在實(shí)驗(yàn)作業(yè)紙上用水筆手寫。) 1. 題目 2. 硬件原理電路圖以及電路原理說明 3. 軟件方法 4. 實(shí)驗(yàn)步驟說明 5.畫出程序流程圖 6.寫出實(shí)驗(yàn)后正確的程序并加以注釋 7. 小結(jié):實(shí)驗(yàn)過程中遇到的問題和解決的辦法,完成實(shí)驗(yàn)的關(guān)鍵點(diǎn)、有何注意事項(xiàng),心得體會(huì)等。 實(shí)驗(yàn)報(bào)告一(上機(jī)實(shí)驗(yàn)作業(yè)一) 一、題目:信號燈控制。

46、 內(nèi)容:1. 把一個(gè)發(fā)光LED的正極經(jīng)電阻接至P1.0口,LED的負(fù)極接地; 2. 把一個(gè)撥動(dòng)開關(guān)的一端上拉并接至P1.1口,另一端接地; 3. 編程實(shí)現(xiàn)控制,當(dāng)開關(guān)閉合時(shí)指示燈閃亮,斷開則熄滅。 二、硬件原理: 1.硬件邏輯電路圖: 8051 LED 燈 VCC +5V P1.0 EA XTAL1 +5V

47、 XTAL2 開關(guān) RST P1.1 GND 2.電路原理說明:開關(guān)閉合時(shí),P1.1=0; 開關(guān)斷開時(shí),P1.1=1 。 P1.0=0時(shí),LED燈熄滅; P1.0=1時(shí),LED燈點(diǎn)亮。 三、軟件方法: 當(dāng)檢測到P1.1口位為低電平時(shí),控制P1.0口位輸出“1”,軟件延時(shí)約200ms;然后輸出“0”, 軟件

48、再延時(shí)約200ms;再輸出“1”,……如此循環(huán),直至檢測到P1.1口位為高電平為止; 當(dāng)檢測到P1.1口位為高電平時(shí),控制P1.0口位輸出“0”,再重復(fù)檢測P1.1口位的電平,如此循環(huán)。 四、實(shí)驗(yàn)步驟: 使用Proteus仿真軟件 1. 運(yùn)行PC機(jī)上的Proteus仿真軟件,按題目的硬件原理圖繪制仿真電路圖; 2. 運(yùn)行PC機(jī)上的WAVE仿真軟件,把仿真器設(shè)置為軟件模擬器,編輯、編譯匯編程序; 3. 切換到Proteus仿真軟件,選擇工具欄中的【instant edit mode】, 點(diǎn)擊仿真電路圖中的AT89C51 元件,在提示的窗口中單擊【Program File

49、】欄右側(cè)的打開文件按鈕,并選擇通過WAVE仿真軟件 生成的.hex文件,與單片機(jī)進(jìn)行連接,再將【Clock Frequency】設(shè)置為6MHz; 4. 單擊底行中的【播放】按鈕,運(yùn)行程序,有錯(cuò)誤回到步驟2,編輯、修改匯編程序,再運(yùn)行 直至正確為止。 五、程序框圖: 六、程序及注釋: 七、小結(jié):問題及處理、實(shí)驗(yàn)的關(guān)鍵、注意事項(xiàng)等 程序及注釋: ORG 0000H ;偽指令:指明下一條指令的地址。 Main: SETB P1.1 ;P口作為輸入的位,在測試前必須先置為“1”。 JB P1.1,L1 ;測試開關(guān)的電平,為“1”則轉(zhuǎn)移到L1。

50、 SETB P1.0 ;輸出高電平,點(diǎn)亮 LCALL Delay200 ;延時(shí)200ms CLR P1.0 ;輸出低電平,熄滅 LCALL Delay200 ; 延時(shí)200ms LJMP Main ;循環(huán)顯示 L1: CLR P1.0 ;輸出低電平,熄滅 SJMP Main ;循環(huán)測試開關(guān) Delay200: MOV R3, #200 ; 延時(shí)200ms De1: MOV

51、R4, #250 ; De2: DJNZ R4, De2 ; 250*4us=1ms,MCU的 Fosc = 6MHz DJNZ R3, De1 RET END 問題及解決 1、由于直接復(fù)制黏貼,造成無法識(shí)別的字符。所以,在編譯時(shí)出現(xiàn)錯(cuò)誤,將所有的符號改為半角的字符。 2、再次編譯時(shí),出現(xiàn)了未定義Delay。觀察整個(gè)程序,發(fā)現(xiàn)時(shí)因?yàn)镈elay少了200,實(shí)際上是Delay200 3、在打開isis,打開信號燈控制。出現(xiàn)Edit Component窗口時(shí),忘記將編譯好的EXEC1.HEX導(dǎo)入進(jìn)去,所以,在運(yùn)行時(shí),無法閉合開關(guān),信號燈無法亮。添加EXEC1.HEX,運(yùn)行,閉合開關(guān),信號燈亮了。 4、剛開始不知道該如何畫流程圖,不知該如何下手。于是去課件中尋找各種指令操作碼的含義,根據(jù)它來觀看每條程序的定義,再結(jié)合3.4.1、3.4.2、3.4.3中順序結(jié)構(gòu)程序、雙分支結(jié)構(gòu)程序、循環(huán)結(jié)構(gòu)程序的流程圖。一步一步的分析、判斷,最后將整個(gè)流程圖畫出來。

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!