AT89S51单片机作业.ppt

上传人:小飞机 文档编号:6501840 上传时间:2023-11-07 格式:PPT 页数:53 大小:307.49KB
返回 下载 相关 举报
AT89S51单片机作业.ppt_第1页
第1页 / 共53页
AT89S51单片机作业.ppt_第2页
第2页 / 共53页
AT89S51单片机作业.ppt_第3页
第3页 / 共53页
AT89S51单片机作业.ppt_第4页
第4页 / 共53页
AT89S51单片机作业.ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《AT89S51单片机作业.ppt》由会员分享,可在线阅读,更多相关《AT89S51单片机作业.ppt(53页珍藏版)》请在三一办公上搜索。

1、第2章 作业,P402,3,4,6,7,第3章 作业1,1.将寄存器R2中的内容传送到寄存器R1中(R2R1);2.片外RAM(0030H)R1;3.片外RAM(0030H)片内RAM(30H);4.片内RAM(30H)片外RAM(2000H);5.ROM(1000H)R0;6.ROM(1000H)片外RAM(0020H);7.ROM(1000H)片内RAM(20H);8.片外RAM(1000H)片外RAM(2000H);,1.将寄存器R2中的内容传送到寄存器R1中(R2R1)MOV A,R2MOV R1,A作业中的错误:MOV R1,R2 指令格式错误:1)操作码内不能有空格;2)操作码和目

2、的操作数之间 必须有空格;3)目的操作数和源操作数之 间逗号隔开;4)一行只能写一条指令;5)每个指令一般不用;结束。,2.片外RAM(0030H)R1MOV DPTR,#0030H MOV R0,#30HMOVX A,DPTR MOVX A,R0MOV R1,A MOV R1,A 作业中的错误:1)表示立即数的”#”漏写;2)MOV DPTR,#0030H和MOV DPTR,#30H的区别3)MOVX R1,A的错误4)DPTR-DPRT5)MOVX R1,DPTR,3.片外RAM(0030H)片内RAM(30H)MOV DPTR,#0030HMOVX A,DPTRMOV 30H,A作业中的

3、错误:1)表示立即数的”#”漏写;2)MOV DPTR,#0030H和MOV DPTR,#30H的区别3)DPTR-DPRT4)MOV A,30H MOVX A,DPTR,4.片内RAM(30H)片外RAM(2000H)MOV A,30HMOVX DPTR,#2000HMOV DPTR,A作业中的错误:1)表示立即数的”#”漏写;2)间接寻址的“”漏写3)DPTR-DPRT,5.ROM(1000H)R0 MOV A,#00HMOV DPTR,#1000HMOVC A,A+DPTRMOV R0,A作业中的错误:1)MOV R0,1000H?;2)漏写MOV A,#00H3)MOV R0,A?,6

4、.ROM(1000H)片外RAM(0020H)MOV A,#00HMOV DPTR,#1000HMOVC A,A+DPTRMOV DPTR,#0020HMOVX DPTR,A作业中的错误:1)”#”;2)”,7.ROM(1000H)片内RAM(20H)MOV A,#00HMOV DPTR,#1000HMOVC A,A+DPTRMOV 20H,A作业中的错误:1)MOV 20H,1000H,8.片外RAM(1000H)片外RAM(2000H)MOV DPTR,#1000HMOVX A,DPTRMOV DPTR,#2000HMOVX DPTR,A,第3章 作业21.试编一程序对外部RAM2000H

5、单元的第0位清零,第7位置1其余各位保持不变。2.试编一程序对外部RAM3000H单元的第0位置1,第7位清零其余各位求反。,第三章 作业2讲解1.试编一程序对外部RAM2000H单元的第0位清零,第7位置1其余各位保持不变。涉及的知识点:1)片外RAM单元中数据的传输指令 2)利用逻辑与进行位清零 和0与结果是0,和1与结果是自己 3)利用逻辑或进行位置1 和1或结果是1,和0或结果是自己,第三章 作业2讲解(续)1.试编一程序对外部RAM2000H单元的第0位清零,第7位置1其余各位保持不变。MOV DPTR,#2000H xxxxxxxx MOVX A,DPTR 11111110 ANL

6、 A,#FEH xxxxxxx0 ORL A,#80H 10000000 MOVX DPTR,A 1xxxxxx0,第三章 作业2讲解(续)2.试编一程序对外部RAM3000H单元的第0位置1,第7位清零其余各位求反。涉及的知识点:1)片外RAM单元中数据的传输指令 2)利用逻辑与进行位清零 和0与结果是0,和1与结果是自己 3)利用逻辑或进行位置1 和1或结果是1,和0或结果是自己 4)利用逻辑异或进行位求反 和1异或结果求反,和0异或结果是自己(或利用累加器A的求反指令CPL A),第三章 作业2讲解(续)2.试编一程序对外部RAM3000H单元的第0位置1,第7位清零其余各位求反。MOV

7、 DPTR,#2000H xxxxxxxx MOVX A,DPTR 00000001 ORL A,#01H xxxxxxx1 ARL A,#7FH 01111111 XRL A,#7EH 0 xxxxxx1 MOVX DPTR,A 01111110 0 1,第三章 作业2讲解(续)2.试编一程序对外部RAM3000H单元的第0位置1,第7位清零其余各位求反。MOV DPTR,#2000H xxxxxxxx MOVX A,DPTR CPL A 00000001 ORL A,#01H ARL A,#7FH 01111111 MOVX DPTR,A,第三章 作业2讲解(续)2.试编一程序对外部RAM

8、3000H单元的第0位置1,第7位清零其余各位求反。MOV DPTR,#2000H xxxxxxxx MOVX A,DPTR 00000001 ORL A,#01H xxxxxxx1 ARL A,#7FH 01111111 CPL A MOVX DPTR,A,18,第四章 作业1)设有100个单字节数组成的数据块,存放在外部RAM中其起始地址为1000H,试编一程序,将这一数据块传送至6000H为起始地址的区域中去。2)设有两个长度均为10的数组,分别存放在6000H和8000H为起始地址的外部RAM中,试编一程序求其对应项之和,结果存放在第一数组区域中。3)设有100个带符号的单字节数组成的

9、数组,存放在以2800H为起始地址的存储区域中,试编一程序找出它们中的最小数,并存放到2000H单元中。4)试编一程序若累加器A中内容分别满足一下条件,则程序转至标号为COMP的存储单元。设A中为无符号数1)A 20;2)A 20;3)A20;4)A20.,18,第四章 作业讲解1.试编一程序若累加器A中内容分别满足一下条件,则程序转至标号为COMP的存储单元。设A中为无符号数1)A 20;2)A 20;3)A20;4)A20.方法1:两个数据做减法SUBB,可根据借位CY来判断两个数的大小!方法2:两个数据做比较CJNE,再根据是否相等和借位CY来判断两个数的大小!,第四章 作业讲解1.试编

10、一程序若累加器A中内容分别满足一下条件,则程序转至标号为COMP的存储单元。设A中为无符号数1)A 20;1)A 20;CLR C CLR C SUBB A,#14H(#20)CJNE A,#14H,L0 JNC COMP SJMP COMP COMP:XXXXXXXX L0:JNC COMP COMP:XXXXXXX FINISH:XXXXXXX,第四章 作业讲解1.试编一程序若累加器A中内容分别满足一下条件,则程序转至标号为COMP的存储单元。设A中为无符号数2)A 20;2)A 20;CLR C CLR C SUBB A,#14H(#20)CJNE A,#14H,L0 JNC COMP

11、SJMP FINISH COMP:XXXXXXXX L0:JNC COMP COMP:XXXXXXX FINISH:XXXXXXX,第四章 作业讲解1.试编一程序若累加器A中内容分别满足一下条件,则程序转至标号为COMP的存储单元。设A中为无符号数3)A 20;3)A 20;CLR C CLR C SUBB A,#14H(#20)CJNE A,#14H,L0 JC COMP SJMP COMP JZ COMP L0:JC COMP COMP:XXXXXXXX COMP:XXXXXXX FINISH:XXXXXXX,第四章 作业讲解1.试编一程序若累加器A中内容分别满足一下条件,则程序转至标号为

12、COMP的存储单元。设A中为无符号数4)A 20;4)A 20;CLR C CLR C SUBB A,#14H(#20)CJNE A,#14H,L0 JC COMP SJMP FINISH COMP:XXXXXXXX L0:JC COMP COMP:XXXXXXX FINISH:XXXXXXX,第四章 作业讲解1)设有100个单字节数组成的数据块,存放在外部RAM中其起始地址为1000H,试编一程序,将这一数据块传送至6000H为起始地址的区域中去。,1)设有100个单字节数组成的数据块,存放在外部RAM中其起始地址为1000H,将数据块传送至6000H为起始地址的区域中。程序:ORG 000

13、0H MOV R0,#64H DJNZ R0,LOOP MOV DPL,#00H SJMP$LOOP:MOV DPH,#10H END MOVX A,DPTR MOV DPH,#60H MOVX DPTR,A INC DPL,1)设有100个单字节数组成的数据块,存放在外部RAM中其起始地址为1000H,将数据块传送至6000H为起始地址的区域中。程序:ORG 0000H MOV DPL,R2 MOV R0,#64H MOVX DPTR,A MOV R1,#60H INC DPRT MOV R2,#00H MOV DPH,R1 MOV DPTR,#1000H MOV DHL,R2 LOOP:M

14、OVX A,DPTR POP DPL INC DPTR POP DPH PUSH DPH DJNZ R0,LOOP PUSH DPL SJMP$MOV DPH,#R1 END MOV DPH,R1,第四章 作业讲解2)设有两个长度均为10的数组,分别存放在6000H和8000H为起始地址的外部RAM中,试编一程序求其对应项之和,结果存放在第一数组区域中。,2)两个长度为10的数组,放在6000H和8000H为起始地址的外部RAM中,对应项之和,结果放在第一数组中。程序:ORG 0000H MOV R2,#0AH INC DHL MOV DPL,#00H LOOP:MOV DHP,#80H DJ

15、NZ R2,LOOP MOVX A,DPTR SJMP$MOV R5,A END MOV DHP,#60 MOVX A,DPTR ADD A,R5,程序:ORG 0000H MOV DPL,R2 MOV R0,#10 MOVX A,DPTR MOV R1,#60H ADD A,R5 MOV R2,#00H MOVX DPTR,A MOV DPTR,#8000H INC DPRTLOOP:MOVX A,DPTR MOV DPH,R1 MOV R5,A MOV DHL,R2 INC DPTR POP DPL PUSH DPH POP DPH PUSH DPL DJNZ R0,LOOP MOV DP

16、H,#R1 SJMP$END,第四章 作业讲解3)设有100个带符号的单字节数组成的数组,存放在以2800H为起始地址的存储区域中,试编一程序找出它们中的最小数,并存放到2000H单元中。,程序:ORG 0000H MOV R2,#64H MOV DPTR,#2800H DEC R2 LOOP:MOVX A,DPTR MOV R3,A INC DPTR MOVX A,DPTR MOV R4,A,程序:MOV A,R3 SJMP LOOP2 CLR C LOOP1:MOV A,R3 XRL A,R4 LOOP2:DJNZ R2,LOOP JB ACC.7,NEXT1 MOV DPTR,#2000

17、H MOV A,R3 MOVX DPTR,A SUBB A,R4 JC LOOP1 MOV A,R4 SJMP LOOP2NEXT1:MOV A,R3 JB ACC.7,LOOP1 MOV A,R4,33,第六章 作业1.以T0为定时器,在P1.1引脚上产生频率为1HZ的方波。2.利用定时器/计数器实现数字频率计的功能,将T0设置为定时器,T1设置为计数器,把测得信号接T1引脚(P3.5),启动定时/计数器工作后,在1S到达时,读取T1的内容作为频率值,存放于21H(F_HIGH)和20H(L_HIGH),fosc=12MHZ,33,第六章 作业讲解1.以T0为定时器,在P1.1引脚上产生频率

18、为1HZ的方波。1.确定功能,以十六进制形式写入TMOD1)定时还是计数?2)是否用中断?3)工作方式?4)启动方式。2.设置初值,将其写入TH和TL,并清零TF。3.用位操作指令SETB TR0(TR1)完成启动设置。,1.以T0为定时器,在P1.1引脚上产生频率为1HZ的方波。分析:1)周期1秒,定时时间为0.5秒,由于T0要重复定时计数,因此选择工作方式2或1,C/T=1,与INT1无关,则GATE=0 2)方式2的最大定时间:12M-256us;6M-512us,方式1的最大定时时间:12M-65.536ms;6m-131.072ms需要嵌套循环,循环次数X定时时间=0.5s。方式1定

19、时时间100ms,循环次数5。(方式2 500us,1000)TMOD=01H(TMOD=02H)3)(216-X)x2x10-6=0.1 X=15536=3CB0 216=65536 TH0=3CH,THL=B0H,源程序:(查询方式)ORG 2000H LOOP:JBC TF0,LQMOV TMOD,#01H SJMP LOOP LQ:CLR TF0MOV TH0,#3CH MOV TH0,#3CHMOV TL0,#0B0H MOV TL0,#0B0HMOV R5,#5 DJNZ R5,LOOPCLR TF0 MOV R5,#5CLR EA QF:CPL P1.0SETB TR0 SJMP

20、 LOOP END,源程序:(中断方式)ORG 0000H SETB TR0 LJMP MAIN HERE:SJMP HERE ORG 0003H INT0:MOV TH0,#3CH LJMP INT0 MOV TL0,#0B0HMAIN:MOV TMOD,#01H DJNZ R5,RTURN MOV TH0,#3CH QF:CPL P1.0 MOV TL0,#0B0H RTURN:RETI MOV R5,#5 END SETB EA SETB ETO,38,2.将T0设置为定时器,T1设置为计数器,把测得信号接T1引脚(P3.5),启动定时/计数器工作后,在1S到达时,读取T1的内容作为频率

21、值,存放于21H(F_HIGH)和20H(L_HIGH),fosc=12MH分析:1)由于T1要重复计数计数,因此选择工作方式1,C/T=1,与INT1无关,则GATE=02)T0作为定时器,每隔50ms溢出一次,选择方式1,与软件一起实现定时1秒钟,则M1M0=01,C/T=0,与INT1无关,则GATE=0。所以:TMOD=0101 0001=51H3)定时器T1的初值:X1=0000H定时器T0的初值:,38,39,源程序:ORG 2000H LOOP:JBC TF0,LQMOV TMOD,#16H SJMP LOOPMOV TH1,#00H LQ:MOV TH0,#3CHMOV TL1

22、,#00H MOV TL0,#0B0HMOV TH0,#3CH DJNZ R7,LOOPMOV TL0,#0B0H MOV R7,#20MOV R7,#20 MOV 21H,TH1CLR EA MOV 20H,TL1SETB TR1 SJMP LOOP SETB TR0 END,39,40,第五章 作业1.AT89S51单片机的引脚INT1接入如图所示电路。要求每按一下按钮B,单片机就将P1寄存器中的第0位置1,第7位清零,第1位和第6位互换,其余各位求反。试利用外部中断0编写实现这一功能的程序。,40,第五章 作业讲解中断程序设计需考虑的问题:一、中断初始化设置 1.设置堆栈指针SP 设置适

23、宜的堆栈深度。(1)深度要求不高且工作寄存器组13不用时,可维持复位时状态:SP=07H,深度为 24B(20H2FH为位寻址区)。(2)要求有一定深度时,可设SP=60H或50H,这时深度分别为32B和48B。,第五章 作业讲解中断程序设计需考虑的问题:2.定义中断优先级 根据中断源的轻重缓急,划分高优先级和低优先级。3.定义外部中断触发方式 一般情况下,应定义边沿触发方式为宜。若外部中断必须采用电平触发方式时,应在硬件电路上和中断服务程序中采取撤除中断请求信号的措施。4.开放中断 由于AT89C51采用了二级中断控制方式,因此开放中断必须同时开放二级中断控制,即同时置位EA和需要开放中断的

24、中断允许控制位。,二、中断服务主程序 1.在中断服务入口地址设置一条跳转指令,以便转移到中断服务程序的实际入口处 2.数据需要保护现场。通常是保护Acc、PSW和DPTR等等特殊功能寄存器中的内容3.中断源请求中断服务要求的操作,这是 中断服务程序的主体。4.若是外部中断电平触发方式,应有中断标志撤除操作。若是串行收发中断,应 有对RI、TI清0指令。5.恢复现场。与保护现场相对应,注意按“先进后出、后进先出”的原则操作。6.中断返回,最后一条指令必须是RETI。,第五章 作业讲解常用的主程序结构如下:ORG 0000HLJMP MAINORG 中断入口地址LJMP INT ORG XXXXH

25、MAIN:主 程 序INT:中断服务程序,第五章 作业讲解程序:ORG 0000H LJMP MAIN ORG 0013H;外部中断1的入口地址 LJMP INTT0 ORG 1000HMAIN:SETB IT1;设置外部中断1的触发方式为跳沿触发 SETB EX1;允许外部中断1 SETB EA;总中断开关位开放HERE:SJMP HERE,INTT0:MOV A,P1 ORL A,#01H;或指令置1 ANL A,#7FH;与指令清零 XRL A,#3CH;异或指令取反 MOV C,Acc.1 MOV Acc.6,Acc.1 MOV Acc.1,C RETI END,第六章作业1.在AT8

26、9S51串行口的工作方式1中,定时器T1的定时常数直接影响波特率。若晶振频率是11.0592MHz,波特率为2400B/s。请问定时初值(常数)是多少?试编写在AT89S51串行口的发送程序,要求以工作方式1将存放在外部数据存储器中地址为0010H至0030H的单元中的的数据一一发送出去。解:串行通讯中定时器以工作方式2工作,定时常数与波特率、晶振频率和SMOD(0或1)相关计算公式(7-3),取SMOD=0,则2400=(1/32)*11.0592*106/(12(256-X)X=244=F4H,1.串行发送(方式1,2,3)步骤(1)设置SCON(工作模式和发送状态)(2)设置PCON(3

27、)(方式1和3)设置TMOD(T1工作方式2)设置TH1,THL1初值 打开TR1启动计数器(4)清零TI,设置TB8(方式2,3)(5)将数据由A SBUF(6)等待发送完,若还要发送返回(4),程序(查询方式)ORG 0100HMAIN:MOV DPTR,#0010H MOV R7,#33H MOV SCON,#40H;01000000 MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H,SETB TR1LOOP:CLR TI MOV A,DPTR MOV SBUF,AHERE:JNB TI,HERE CLR TI INC DPT

28、R DJNZ R7,LOOP CLR TR1 SJMP$END,2.试编写在AT89S51串行口的接收程序,要求以工作方式1接收32个字节的数据,并将接收到的数据存放在外部数据存储器中地址为0010H至0030H的单元。已知晶振频率是11.0592MHz,波特率为2400B/s。步骤:1.串行接收(方式1,2,3)步骤(1)设置SCON(工作模式和发送状态)(2)设置PCON(3)(方式1和3)设置TMOD(T1工作方式2)设置TH1,THL1初值;打开TR1启动计数器(4)清零TI,设置TB8(方式2,3)(5)等待接收结束,将数据由A SBUF,(在工作方式2,3时,由RB8取校验位)(6

29、)若还要发送返回(5),否则关闭REN,程序:(中断方式)ORG 0000H LJMP MAIN ORG 0023H LJMP SINT ORG 1000HMAIN:MOV DPTR,#0010H MOV R7,#33H MOV SCON,#40H MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H,53,SETB TR1 SETB REN SETB ES SETB EA SJMP$SINT:CLR RI MOV A,SBUF MOV DPTR,A INC DPTR DJNZ R7,NEXT CLR RI CLR TR1NEXT:RETI END,53,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号