单片机课后作业答案.ppt

上传人:牧羊曲112 文档编号:5938059 上传时间:2023-09-06 格式:PPT 页数:35 大小:421KB
返回 下载 相关 举报
单片机课后作业答案.ppt_第1页
第1页 / 共35页
单片机课后作业答案.ppt_第2页
第2页 / 共35页
单片机课后作业答案.ppt_第3页
第3页 / 共35页
单片机课后作业答案.ppt_第4页
第4页 / 共35页
单片机课后作业答案.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

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

1、作业0:,1.试画出与.或.非三种位逻辑运算真值表,A&B、A|B、A。,2.试分别分析“按键电平复位电路”在上电和按下按键两种状况下,如何实现在RST引脚上产生高电平复位脉冲的?(只需要定性分析工作原理),3.假设某MCS-51单片机系统外接晶体为11.0592MHz,(1)试计算该单片机的状态周期、状态周期频率、机器周期、机器周期频率、地址锁存信号ALE的频率。(2)已知乘法指令MUL AB需要4个机器周期,加法指令ADD A,Rn需要1个机器周期,试计算单片机执行上述两条指令分别需要多长时间?(1)状态周期:1(11.0592MHz 2)=0.18uS 频率:11.0592MHz 2=5

2、.5296MHz 机器周期:1(11.0592MHz 12)=1.085uS 频率:11.0592MHz 12=0.9216MHz ALE频率:11.0592MHz 6=1.8432MHz(2)MUL:1.085*4=4.34uS ADD:1.085uS,存在计算精度问题.,4.设(20H)=25H,(25H)=10H,P1=CAH执行下列程序:MOV R0,#20HMOV A,R0MOV R1,AMOV B,R1MOV R1,P1MOV P2,P1执行结果为:A=25H;R1=25;B=10H;(20H)=25H;(25H)=CAH;P2=CAH;,作业1:,(8)ADD A,#30H;A=

3、(AAH),CY=(0)(9)ADDC A,30H;A=(20H),CY=(1)(10)SUBB A,30H;A=(D4H),CY=(1)(11)SUBB A,#30H;A=(49),CY=(0)2.假定A=85H,R0=20H,(20H)=0AFH,执行指令“ADD A,R0”后,累加器A的内容为(34H),CY的内容为(1),AC的内容为(1)。,4.编写程序,将内部数据存储器30H35H单元的数据传送到外部数据存储器的2003H2008H单元.MOVR0,#30H;指针首地址MOVDPTR,#2003H;指针首地址MOVR1,#06H;字节个数LOOP:MOVA,R0;取数据MOVXDP

4、TR,A;保存数据INCR0;指针加1INCDPTR;指针加1DJNZR1,LOOP;判断是否传送完SJMP$,5.编写程序,将片内RAM60H单元与61H单元的数据交换。MOVA,#60HMOV60H,61HMOV61H,A,6.如何将累加器A中的数据高4位保持不变,低4位位置1?ORLA,#0FH7.如何将寄存器R2中的数据奇数位清0,偶数位不变?MOVA,R2ANLA,#55HMOVR2,A,作业2:,4.注释下列程序各语句,并说明该程序功能。MOV R0,#36H;立即数#36H送R0 MOV A,R0;取36H单元中的数送累加器A ANL A,#0FH;累加器A中数与立即数#0FH相

5、与 SWAP A;累加器A中的高低四位交换 MOV B,A;累加器A中数送寄存器B INC R0;R0加1 MOV A,R0;取37H单元中的数送累加器A ANL A,#0FH;累加器A中数与立即数#0FH相与 ORL A,B;累加器A与寄存器B相或 INC R0;R0加1 MOVX R0,A;累加器A中的数写入38H单元 该段程序实现字节合并,将36H单元与37H单元中的低4位合并成一个字节,结果存入38H单元中。,5.试编写一拆字子程序,将累加器A中的高、低四位分开,分别对应放到31H单元、30H单元的低四位中,并将31H单元、30H单元的高四位全部补0。,MOV R0,#30H;设指针M

6、OV R2,A;暂存ANL A,#0FH;高半字节清0MOV R0,A;保存数据低位INC R0MOV A,R2SWAP A;ANL A,#0FHMOV R0,A;保存数据高位RET,6.试编写一拼字子程序,将外部RAM中3001H单元、3000H单元的低四位组成一个新的字节,存储到内部数据存储器32H单元中。,MOV DPTR,#3001H;指针指向3001H单元 MOVX A,DPTR;读取36H单元内的数据 ANL A,#0FH;屏蔽高四位,保留低四位 SWAP A;交换到高4位中 MOV B,A;暂存到寄存器B中 DEC DPL;指针指向3000H单元 MOVX A,DPTR;读取30

7、00H单元内的数据 ANL A,#0FH;屏蔽高四位,保留低四位ORL A,B;与寄存器B中数据相或 MOV 32H,A;新字节保存到32H单元中,作业3:,1.利用堆栈操作,将片内RAM 60H单元与61H单元的数据交换。,PUSH 60HPUSH 61HPOP 60HPOP 61H,MOVR0,#40HMOVR1,#50HMOVR2,#04H(05H)CLRCLOOP:MOVA,R0ADDCA,R1INCR0INCR1DJNZR2,LOOPMOV20H,#00HMOV 00H,CMOV54H,20H RET,2.假设有两个4字节的二进制数,分别存放在40H和50H为起始地址的连续单元中(低

8、位放在低地址中),编写子程序,求这两个数的和,结果存放在以50H为起始地址的连续5个单元中。,3.设变量x是无符号的数,并放在寄存器R2中,函数y与x有如下关系式:,请编写子程序计算y,其结果存入寄存器R5中。,CJNER2,#128,NEQ MOVR5,#10H;X=128SJMPOVERNEQ:JCNEQ1MOVA,R2;X128SUBB A,#100MOVR5,ASJMPOVERNEQ1:MOVA,R2;X128ADDA,#5MOVR5,AOVER:RET,4.手工编译下述程序段(12)地址 机器码 ORG 0030H MOV TMOD,#03H MOV TL1,#83H MOV TH1

9、,#4CH SETB TR1 SETB ET1 SETB EA,ORG 0200HD2S:MOV R7,#10D2S1:MOV R6,#200 D2S2:MOV R5,#249 D2S3:NOP NOP DJNZ R5,D2S3 NOP DJNZ R6,D2S2 DJNZ R7,D2S1 RET,ORG 0100HD200MS:MOV R7,#200D200MS1:MOV R6,#250D200MS2:NOP NOP DJNZ R6,D200MS2 DJNZ R7,D200MS1 RET,6.利用第五题的延时子程序,编写一个主程序,要求在P1.0口上连续输出周期为2.2S的方波信号,其中高电平

10、宽度为2S,低电平宽度为200mS。(该题为下次实验内容),ORG 0000H LJMP 0030HORG 0030HLOOP:SETB P1.0 LCALL D2S CLR P1.0 LCALL D200MS SJMP LOOP,定时器作业:,1 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T0以工作方式1产生周期为40ms的等宽方波连续脉冲,并由P1.5口输出.,ORG 0000H LJMP 0030HORG 0030H MOV TMOD,#01H;T0工作方式1 MOV TH0,#0B1H;T1定时250us初值 MOV TL0,#0E0H SETB TR0;打开定时器T1

11、LP:JNB TF0,$;判断T1是否溢出 CLR TF0;清溢出标志位 MOV TH0,#0B1H;重新赋定时初值 MOV TL0,#0E0H CPL P1.5;P1.5口输出状态取反 SJMP LP,2 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T0以工作方式1产生周期为4s的等宽方波连续脉冲,并由P1.4口输出.,ORG 0000H LJMP 0030HORG 0030H MOV TMOD,#01H;T0工作方式1 MOV TH0,#3CH;T0定时50ms初值 MOV TL0,#0B0H MOV R0,#40;定时次数 SETB TR0;启动定时器LP:JNB TF0,

12、$;判断T0是否溢出 CLR TF0;清溢出标志 MOV TH0,#3CH;重赋初值 MOV TH0,#0B0H DJNZ R0,LP;判断溢出次数是否达到40次 CPL P1.4;P1.4口输出状态取反 MOV R0,#40;重置定时次数 SJMP LP,3 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T1以工作方式2产生周期为400us、占空比为50%的连续方波,并由P1.3口输出.,ORG 0000H LJMP 0030HORG 0030H MOV TMOD,#20H;T1工作方式2 MOV TL1,#38H(C8H);T0定时100ms初值 MOV TH1,#38H(C8

13、H);初值预置寄存器 SETB TR1;启动定时器LP:JNB TF1,$;判断T1是否溢出 CLR TF1;清溢出标志 CPL P1.3 SJMP LP,4 已知单片机晶振频率为11.0592MHz,T1工作于方式2,为了让T1每秒溢出1200次,试计算T1的定时初值.如果要求每秒溢出2400次、4800次、9600次,T1的初值又该分别是多少?,9600:X=160=A0H 因此,TL1初值为A0H,4800:X=64=40H 因此,TL1初值为40H,1200和2400需要软件级连.,ORG 0000H LJMP MAIN ORG 000BH LJMP 0100H ORG 0030HMA

14、IN:MOV SP,#6FH MOVR0,#20MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH SETB TR0 SETB ET0 SETB EA SJMP$,ORG 0100HLOOP:MOV TL0,#0B0H MOV TH0,#3CHDJNZR0,LOOP MOVR0,#20 CPL P1.0LOOP:RETI,1.以定时器中断的方法,在P1.0口产生周期为2S的方波,方波占空比为50%,设单片机的外接晶振频率为12MHz。要求写清楚注释,在PC出现跳变时必须在注释中说明。,中断作业:,2.如何设定外部中断源是采用边沿触发还是采用电平触发?这两种中断触发

15、所产生的中断响应过程有何不同?3.MCS51单片机有几个中断源,各中断标志位是如何产生的,哪些标志位在响应中断服务程序是会自动清零,哪些需要软件清零,CPU响应中断请求时,中断服务程序的入口地址分别是多少?4.MCS51单片机的中断系统有几个优先级,如何设定?,1.已知单片机晶体频率为12MHz,SMOD为0,串口工作方式1,波特率为1200bps。(1)试求定时器T1的初值;(2)求实际波特率的误差率。,串行接口作业,(2)实际波特率:,(1)初值:,波特率误差率:(1201.92-1200)/1201.92=0.16%,2.假设8031单片机的晶振频率为6MHz,SMOD=0,定时器T1初

16、值为#0FDH,试计算串行工作方式1的波特率。,波特率误差率:(1201.92-1200)/1200=0.17%,3.按照例7.3中的程序,分别写出甲、乙两台计算机的程序流程图,或者将程序改由中断方式实现。,例7.3设有甲、乙两台单片机,编出两台单片机间实现如下串行通讯功能的程序,要求串口工作方式1,波特率为9600bps,单片机外接晶振为11.0592MHz。甲方发送:将首址为2000H的32个字节的外部数据存储器数据块顺序向乙方发送;乙方接收:将接收的32个字节的数据,顺序存放在以首址为40H的内部数据存储器中。,JNB TI,$;判断定时器是否溢出JNB RI,$;判断定时器是否溢出,发

17、送程序ORG 0000H LJMP MAINORG 0023H LJMP SINTORG 0030H MAIN:MOV SCON,#01000000B MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 SETB EA SETB ES MOV DPTR,#2000H MOV R1,#20H MOVX A,DPTR SJMP$,SINT:CLR TI INC DPTR DJNZ R1,SINT1SINT2:RETISINT1:MOVX A,DPTR MOV SBUF,A SJMP SINT2,接收程序ORG 0000H

18、 LJMP MAIN ORG 0023H LJMP SINT ORG 0030H MAIN:MOV SCON,#01010000B MOV PCON,#00H MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 SETB EA SETB ES MOV R0,#40H MOV R1,#20H SJMP$,SINT:CLR RI MOV A,SBUF MOVR0,A INC R0 DJNZ R1,RETI,4.甲乙两台单片机相距约10米左右,拟采用串口方式1通讯,并用RS-232C电平进行双机通讯。已知两台单片机的晶体频率都是6MHz,约定通讯波特

19、率为1200bps。(1)编制两机各自的程序,实现把甲机内部存储器 53H-67H内的数据传送到乙机的相应片内存储器中。(2)画出两台单片机通讯接口的连接图。,发送程序 ORG 0000H LJMP MAIN;转主程序ORG 0030H MAIN:MOV SCON,#01000000B;置串行口工作方式1,禁止接收 MOV PCON,#00H;SMOD=0 能否用CLR SMOD MOV TMOD,#20H;定时器1为工作方式2 MOV TH1,#0F3H;产生9600波特率的时间常数 MOV TL1,#0F3H SETB TR1;启动定时器1 MOV R0,#53H;首地址 MOV R1,#

20、21(0EH);传送字节数初值LOOP:MOV A,R0;取一个字节待发送 MOV SBUF,A;启动串行口发送命令 JNB TI,$;等待当前字节发送完 CLR TI;软件清标志位 INC R0;地址指针加1 DJNZ R1,LOOP;判断是否发送完毕 SJMP$,接收程序 ORG 0000H LJMP MAIN;转主程序ORG 0030H MAIN:MOV SCON,#01010000B;置串行口工作方式1,允许接收 MOV PCON,#00H;SMOD=0 能否用CLR SMOD MOV TMOD,#20H;定时器1为工作方式2 MOV TH1,#-H;产生9600波特率的时间常数 MO

21、V TL1,#-H SETB TR1;启动定时器1 MOV R0,#53H;首地址 MOV R1,#21;传送字节数初值LOOP:JNB RI,$;等待接收数据 CLR RI;软件清标志位 MOV A,SBUF;从缓冲器中读取数据 MOVR0,A;保存数据 INC R0;地址指针加1 DJNZ R1,LOOP;判断是否接收完毕 SJMP$,设计一个以AT89S51单片机为中心的系统,要求用1片6264扩展8K字节的外部数据存储器,用1片8155扩展16个输出口,6个输入口。(1)试画出电路连接图;(2)写出6264地址映射后的寻址空间;(3)编写子程序,将内部数据存储器的30H-5FH单元内的数据保存到6264的低48个地址单元中;(4)写出8155命令寄存器、PA口、PB口、PC口的口地址,以及命令字。(5)编写8155的初始化子程序。,2000H-3FFFH,7000H7001H7002H7003H,03H,SUB:MOVR0,#30H;内部RAM首地址MOVR1,#30H;字节数MOVDPTR,#2000H;外部RAM首地址LP:MOVA,R0MOVX DPTR,AINCR0INCDPTRDJNZR1,LPRET,8155INIT:MOVDPTR,#7000H;命令口地址MOVA,#03H;命令字MOVX DPTR,A;写入RET,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号