单片机课后作业摘要
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三次作业
3-1 指出下列每一条指令的寻址方式及其完成的操作。
MOV 2FH,#40H;立即寻址,将40H移入片内2FH单元
MOV A,2FH;直接寻址,将片内2FH单元的数移入累加器A
MOV R1,#2FH;立即寻址,将2FH移入当前寄存器组的R1单元
MOV A,@R1;寄存器间接寻址,将寄存器R1中所存地址中的值移入累加器A
MOV 2FH,A ;隐含寻址,将累加器A中的值移入片内2FH单元
3-2 内部RAM的4FH单元,可用哪几种寻址方式?分别举例说明。
答:直接寻址:MOV R1,4FH
间接寻址:MOV R1,#4FH
寄存器间接寻址:MOV A,@R1
3-6 指出下列指令的执行结果,并写出每条指令的机器码。
MOV 30H,#52H ;(30H)=52H 01110101(753052H)
MOV A,#70H ;(A)=70H 01110100(7470H)
MOV A,30H ;(A)=52H 11100101(E530H)
MOV R0,#30H ;(R0)=30H 10101000(7830H)
MOV A,@R0 ;A=52H 11100010(E6H)
3-10 用指令实现下述数据传送:
(1)内部RAM20H单元送内部RAM40H单元。
答:MOV 40H,20H
(2)外部RAM20H单元送R0寄存器。
答:MOV R1,#20H MOVX A,@R1 MOV R0,A
(3)外部RAM20H单元送内部RAM20H单元
答:MOV R1,#20H MOVX A,@R1 MOV 20H,A
(4)外部RAM1000H单元送内部RAM20H单元
答:MOV DPTR,#1000H MOVX A,@DPTR MOV 20H,A
(5)外部ROM1000H单元送内部RAM20H单元。
答:MOV DPTR,#1000H MOV A,#00H MOVC A,@A+DPTR MOV 20H,A
(6) 外部ROM1000H单元送外部RAM20H单元。
答:MOV DPTR,#1000H MOV A,#00H MOVC A,@A+DPTR MOV R1,#20H MOVX @R1,A
3-17 试编写程序,查找在内部RAM的20H~50H单元中是否有0AAH这一数据。
若有,则将51H单元置01H,若未找到,则将51H单元置00H。
MOV 51H,#00H ;先设没找到
MOV R0,#20H ;起始地址
LOOP: MOV A,@R0 ;取出数字
CJNE A,#0AAH,NEXT ;不相等就跳转
INC 51H ;相等将51单元置1
SJMP EEE ;找到转去结束NEXT: INC R0 ;下一个地址
CJNE R0,#51H,LOOP ;地址没找完就继续EEE: SJMP $ ;暂停
3-25 已知从外部RAM 2000H开始的单元中有20个带符号的补码数,试编程把正数和0取出来存放到内部RAM20H开始的存储单元中(负数为作处理)。
START: MOV R0,#20H ;需处理的数的个数
MOV DPTR,#2000H ;需处理数的起始地址
MOV R1,#20H ;用于存储的目标地址LOOP: MOVX A,@DPTR
JB ACC.7,NEG ;负数不需处理
MOV @R1,A
INC R1
NEG: INC DPTR
DJNZ R0,LOOP
SJMP $
第四次作业
4-1 什么叫伪指令?伪指令与指令有什么区别?
答:伪指令不属于单片机指令集中的指令,在汇编时不产生目标代码,不影响程序的执行,仅指明在汇编时执行一些特定的操作。
如为程序指定一个存储区、将一些数据、表格常数存放在指定的存储单元、对地址赋用户名等。
指令是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。
51单片机单片机的指令有二种表达方式:机器码指令和汇编语言指令。
4-2 循环程序由哪几部分组成?
答:由初始化部分、循环处理部分、循环控制部分、循环结束部分这四部分组成。
4-4 试对下列程序进行人工汇编,并说明此程序的功能。
地址指令码
ORG 1000H ;
ACDL: MOV R0,#25H ;1000H 78 25
MOV R1,#2BH ;1002H 79 2b
MOV R2,#06H ;1004H 7A 06
CLR C ;1006H C3
CLR A ;1007H E4
LOOP: MOV A,@R0 ;1008H E6
ADDC A,@R1 ;1009H 37
DEC R0 ;100AH 18
DEC R1 ;100BH 19
DJNZ R2,LOOP ;100CH DA FA
SJMP $ ;100EH 80 FE
END ;
1008H-100EH=-06H,其补码为(11111010)
→0FAH
2
功能:将25H单及前5个数与2BH单元及前5个数分6组相加,结果丢弃。
4-5 从内部RAM的20H单元开始,有15个数据。
试编一程序,把其中的正数、负数分别送到41H和61H开始的存储单元,并分别将正数、负数的个数送40H单元和60H单元。
MOV R0,#41H ;存放正数的起始地址
MOV R1,#61H ;存放负数的起始地址
MOV SP,#2EH ;指明栈顶地址
MOV R3,#00H ;正数个数
MOV R4,#00H ;负数个数
MOV R7,#15 ;需判断数的个数LOOP: POP ACC ;出栈放入A
JB ACC.7,NEG ;负数跳转
CJNE A,#00H,LOOP1 ;非负非零转正数处理
SJMP LOOP ;零不处理,取下一个数LOOP1:MOV @R0,A ;正数保存
INC R0 ;正数存放地址加1
INC R3 ;正数个数加1
SJMP LOOP2 ;未结束就继续
NEG: MOV @R1,A ;将负数送负数保存地址
INC R1 ;负数地址加1
INC R4 ;负数个数加1
LOOP2: DJNZ R7,LOOP ;未结束就继续
MOV 40H,R3 ;正数个数送40H单元
MOV 60H,R4 ;负数个数送60H单元
SJMP $
END
4-7 试编制实现ASCII码转十进制数的程序。
在8032单片机内RAM的40H 单元中存放一个代码。
若此代码为十进制数的ASCII码,则将其相应的十进制数送片内RAM的50H单元,否则将此单元置成0FFH。
MOV A,40H
CLR C
SUBB A,#30H ;数字比其ASCII码值小30H
JC LOOP ;存的ASCII值小于0的ASCII码值跳转
MOV R0,A
MOV A,#09H ;减30H后差大于0,是否不
SUBB A,R0 ; 大于9?
JC LOOP ;差大于9,跳转
MOV 50H,R0 ;将数字存入50H单元
SJMP $
LOOP:MOV 50H,#0FFH ;不是数字,存入0FFH SJMP $
END
4-14 设片外RAM从1000H单元开始存放100个无符号8位二进制数。
试编程将它们从大到小依次入片内RAM从10H开始的单元中。
(左边抄完了抄右边,然后下一页)
MOV R7,#100
MOV DPTR,#1000H
MOV R0,#10H
LOOP: MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R7,LOOP
MOV R7,#99
MOV R6,#99 NEXT: MOV R0,#10H
MOV A,@R0
MOV R1,A LOOP2: INC R0
MOV A,@R0
CLR C
SUBB A,R1
JNZ LOOP3
SJMP LOOP4 LOOP3: JC LOOP4
MOV A,@R0
DEC R0
MOV @R0,A
MOV A,R1
INC R0
MOV @R0,A
LOOP4: MOV A,@R0
MOV R1,A
DJNZ R7,LOOP2
DEC R6
MOV A,R6
MOV R7,A
INC R6
DJNZ R6,NEXT
SJMP $
END
4-17 利用查表技术将累加器A中的一位BCD码转换成相应的十进制数的七段码,结果仍放在A中(设显示管0~9的七段码分别是40H,79H,24H,30H,19H,12H,02H,78H,00H,1BH)。
SUB1: INC A
MOVC A,@A+PC
RET
DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,1BH
第五次作业
5-2 MCS-51系列单片机能提供几个中断源?
答:MCS-51系列单片机能提供6个中断源,。
5-3 MCS-51单片机的中断系统中有几个优先级?如何设定?
MCS-51单片机有2个中断优先级。
各个中断源的优先级是由特殊功能寄存器IP 来确定,IP中和各个中断源对应位为1时,此中断源为高优先级,否则为低优先级。
在同一优先级中,各个中断源的优先顺序是由自然优先级来确定的。
5-5 简述MCS-51系列单片机的中断响应过程。
答:MCS-51系列单片机的中断响应过程是按照以下顺序执行的:开中断→中断请求→中断判断→中断响应→中断返回。
5-6 MCS-51单片机中断响应时间是否固定?为什么?
答:MCS-51单片机中断响应时间不固定,因为当中断源向CPU提出中断请求时,CPU正在执行的指令的指令周期是不一样的,一般情况下中断响应时间在3~8个机器周期之间。
当然如果中断到来时是在处理同级或高级中断服务程序中,则响应时间就无法估计了。
5-7 MCS-51中若要扩充8个中断源,可采用哪些方法?如何确定优先级?
答:一般可采取中断加查询方式,软件先查询到的为高优先级,最后查询到的为低优先级。
5-8 8031芯片的INT0、INT1引脚分别输入压力超限、温度超限中断请求信号,定时器/计数器0作定时检测的实时时钟,用户规定的中断优先权排队次序为:压力超限→温度超限→定时检测。
要求确定IE、IP的内容,以实现上述要求。
第六次作业
6-7 已知8051单片机的fosc=6MHz,请利用T0和P1.2输出长形波。
其长形高电平宽50us,低电平宽300us。
解:(1)定时时间设为50us,低电平时间相当于持续6个定时周期。
可选择于方式2,8位自动重装初值方式。
X=256-6×50/12=231,即E7H
(2)设置TMOD参数:T1的四位全“0”,低四位为“0010”,TMOD=02H
(3)中断IE:EA=1,ET0=1.其余为0,IE=82H
(4)TCON用于控制启停的TR0位在程序中用位设置。
(5)编写源程序如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP T0INT
ORG 0030H MAIN:MOV TH0,#0E7H
MOV TL0,#0E7H
MOV R7,#06H
MOV TMOD,#02H
MOV IE,#82H
SETB TR0
SETB P1.2
SETB F0
SJMP $
T0INT:JBC F0,LOOP
DJNZ R7,LOOP2
SETB P1.2
SETB F0
MOV R7,#06H
SJMP LOOP2 LOOP:CLR P1.2 LOOP2: RETI
END。