浙大远程微机原理与接口专业技术离线作业
浙江大学远程教育学院
《微机原理与接口技术》课程作业
姓名:学号:
年级:学习中心:—————————————————————————————第二章P47
2.80C51单片微机芯片引脚第二功能有哪些?
答:80C51单片机的P0、P2和P3引脚都具有第二功能。
第一功能第二变异功能
P0口地址总线A0~A7/数据总线D0~D7
P2口地址总线A8~A15
P3.0 RXD (串行输入口)
P3.1 TXD (串行输出口)
P3.2 0
INT(外部中断0)
P3.3 1
INT(外部中断1)
P3.4 T0 (定时器/计数器0的外部输入)
P3.5 T1 (定时器/计数器0的外部输出)
P3.6 WR(外部读写存储器或I/O的写选通)
P3.7 RD(外部读写存储器或I/O的读选通)
4.80C51存储器在结构上有何特点?在物理上和逻辑上各有哪几种地址空间?
访问片内数据存储器和片外数据存储器的指令格式有何区别?
答:80C51单片机采用哈佛(Har-yard)结构,即是将程序存储器和数据存储器截然分开,分别进行寻址。不仅在片内驻留一定容量的程序存储器和数据存储器及众多的特殊功能寄存器,而且还具有强的外部存储器扩展能力,扩展的程序存储器和数据存储器寻址范围分别可达64KB。
⒈在物理上设有4个存储器空间
●片内程序存储器;
●片外程序存储器;
●片内数据存储器;
●片外数据存储器。
⒉在逻辑上设有3个存储器地址空间
●片内、片外统一的64 KB程序存储器地址空间。
●片内256B(80C52为384 B)数据存储器地址空间。
片内数据存储器空间,在物理上又包含两部分:
-对于80C51型单片机,从0~127 字节为片内数据存储器空间;从128~255
字节为特殊功能寄存器(SFR)空间(实际仅占用了20多个字节)。
●片外64 KB的数据存储器地址空间。
在访问三个不同的逻辑空间时,应采用不同形式的指令,以产生不同存储空间的选通信号。
访问片内RAM采用MOV指令,访问片外RAM则一定要采用MOVX指令,因为MOVX 指令会产生控制信号RD或WR,用来访问片外RAM。访问程序存储器地址空间,则应采用MOVC指令。
6.80C51片内数据存储器低128个存储单元划分为哪4个主要部分?各部分主
要功能是什么?
答:80C51片内RAM的低128个存储单元划分为4个主要部分:
●寄存器区:共4组寄存器,每组8个存储单元,各组以R0~R7作为单元编号。常
用于保存操作数及中间结果等等。R0~R7也称为通用寄存器,占用00H~1FH共
32个单元地址。
●位寻址区:20H~2FH,既可作为一般RAM单元使用,按字节进行操作,也可以
对单元中的每一位进行位操作,称为位寻址区。寻址区共有16个RAM单元,共
计128位,位地址为00H~7FH。
●堆栈区:设置在用户RAM区内。
●用户RAM区:在内部RAM低128单元中,除去前面3个区,剩下的所有单元。第三章P87
9.MOV、MOVC、MOVX 指令有什么区别,分别用于那些场合,为什么?
答:MOV指令用于对内部RAM的访问。
MOVC指令用于对程序存储器的访问,从程序存储器中读取数据(如表格、常数等)。MOVX指令采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式。MOVX指令执行时,在P3.7引脚上输出RD有效信号或在P3.6引脚上输出WR有效信号,可以用作外部数据存储器或I/O的读或写选通信号,与单片机扩展电路有关。
15.已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后A的内容。
MOV A,#55H
ANL A,#0FFH
ORL 20H,A
XRL A,@R1
CPL A
答:各指令执行结果如下:
MOV A,#55H ;(A)=55H
ANL A,#0FFH ;(A)=55H
ORL 20H,A ;(20H)=FFH
XRL A,@R1 ;(A)=AAH
CPL A ;(A) =55H
执行完程序段后,A的内容为55H。
16.阅读下列程序,说明其功能。
MOV R0,#30H
MOV A,@R0
RL A
MOV R1,A
RL A
RL A
ADD A,R1
MOV @R0,A
答:对程序注释如下:
MOV R0,#30H ;(R0)=30H
MOV A,@R0 ;取数
RL A ;(A)×2
MOV R1,A
RL A ;(A)×4
RL A ;(A)×8
ADD A,R1 ;(A)×10
MOV @R0,A ;存数
功能:将30H中的数乘以10以后再存回30H中。
条件:30H中的数不能大于25,25×10=250仍为一个字节。若30H中的数大于25,则应考虑进位。
17. 已知两个十进制数分别从内部数据存储器中的40H单元和50H单元开始存放(低位在前),其字节长度存放在内部数据存储器的30H单元中。编程实现两个十进制数求和,并把和的结果存放在内部数据存储器40H开始的单元中。【答】程序如下:
ORG 0000H
SJMP MAIN
ORG 0030H
MAIN:
MOV R0,#40H ;被加数首址.又作两个十进制数和的首址
MOV R1,#50H ;加数首址
MOV R2,30H ;字节长度
CLR C
PP: MOV A,@R1 ;取加数
ADDC A,@R0 ;带进位加
DA A ;二一十进制数调整
MOV @R0,A ;存和
INC R0 ;修正地址
INC R1
DJNZ R2,PP ;多字节循环加
AJMP $
END
21.读程序,请⑴画出P1.0~P1.3引脚上的波形图,并标出电压V-时间T坐标;
⑵加以注释。
ORG 0000H
START: M OV SP,#20H
MOV 30H,#01H
MOV P1,#01
MLP0:ACALL D50ms ; 软件延时50mS
MOV A, 30H
CJNE A, #08H,MLP1
MOV A, #01H
MOV DPTR,#ITAB
MLP2∶MOV 30H, A
MOVC A,@A+DPTR
MOV P1, A
SJMP MLP0
MLP1:INC A
SJMP MLP2
ITAB: DB 0,1,2,4,8
DB 8,4,2,1
D50ms:…; 延时50ms子程序(略) RET
答:
①程序功能:P1.0~P1.3引脚上的波形图如图3-2所示。
图3-2 P1.0~P1.3引脚上的波形图
②注释见源程序右边所述。
ORG 0000H
START: MOV SP,#20H
MOV 30H,#01H
MOV P1,#01H ;P1.0~P1.3引脚输出波形MLP0:ACALL D50ms ;软件延时50ms
MOV A, 30H
CJNE A, #08H,MLP1 ;判表格中数据是否取完?
MOV A, #01H ;取完,从表头开始取
MOV DPTR,#ITAB ;表格首地址
MLP2∶MOV 30H, A
MOVC A,@A+DPTR ;取表格中数据
MOV P1, A
SJMP MLP0
MLP1:INC A ;表格中数据未取完,准备取下一个SJMP MLP2
ITAB:DB 0,1,2,4,8 ;表
DB 8,4,2,1
D50ms:…;软件延时50ms子程序
RET
第四章P123
6 .根据运算结果给出的数据到指定的数据表中查找对应的数据字。
运算结果给出的数据在片内数据存储器的40H单元中,给出的数据大小在00~0FH之间,数据表存放在20H开始的片内程序存储器中。查表所得数据字(为双字节、高位字节在后)高位字节存于42H、低位字节存于41H单元。其对应关系为:
给出数据;00 01 02…… 0D H 0EH 0FH
对应数据:00A0H 7DC2H FF09H 3456H 89ABH 5678H 请编制查表程序段,加上必要的伪指令,并加以注释。
【答】程序如下:
ORG 0000H
AJMP MAIN ,
0RG 0020H
TAB:DB OAOH,OOH,0C2H,7DH,09H,OFFH,...,56H,34H,0.ABH,89H,DB 78H,56H;数据字表
ORG 0050H
MAIN: MOV A,40H ;运算结果给出的数据放在40H中
MOV DPTR,#TAB ;指向数据字表首地址
RL A ;由于是双字节,所以A左移1位(乘2)
MOV 40H,A ;结果放在40H ’
MOVC A,@A+DPTR ;查表,找出对应的值
MOV 41H,A ;查找出的数据值低字节放入41H
MOV A.40H