2013浙大远程教育微机原理与接口技术离线作业及答案
浙江大学远程教育学院 《微机原理与接口技术》微机原理与接口技术》课程作业 课程作业
第二章 P47
2.80C51单片微机芯片引脚第二功能有哪些?
答:80C51单片机的P0、P2和P3引脚都具有第二功能。引脚都具有第二功能。
第一功能 第二变异功能
P0口 地址总线A0~A7/数据总线D0~D7 P2口 地址总线A8~A15 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 0INT(外部中断0) P3.3 1INT(外部中断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个存储器地址空间 片内、片内、片外统一的64KB程序存储器地址空间。程序存储器地址空间。 片内256B(80C52为384B)数据存储器地址空间。数据存储器地址空间。 片内数据存储器空间,片内数据存储器空间,在物理上又包含两部分:在物理上又包含两部分: -对于80C51型单片机,型单片机,从0~127字节为片内数据存储器空间;字节为片内数据存储器空间字节为特殊功能寄存器(SFR)空间(空间(实际仅占用了20多个字节)多个字节片外64KB的数据存储器地址空间。的数据存储器地址空间。 在访问三个不同的逻辑空间时,在访问三个不同的逻辑空间时,应采用不同形式的指令,应采用不同形式的指令,以产生不同存储空间的选通信号。以产生不同存储空间的选通信号访问片内RAM采用MOV指令,指令,访问片外RAM则一定要采用指令会产生控制信号RD或WR,用来访问片外RAM。访问程序存储器地址空间访问程序存储器地址空MOVC指令。指令。
从128~255 MOVX指令,指令,,分
。 MOVX;)。因为间,则应采用
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单元中,单元中
第三章P87
9.MOV、MOVC、MOVX 指令有什么区别,分别用于那些场合,为什么?答:MOV指令用于对内部RAM的访问。的访问。 MOVC指令用于对程序存储器的访问,指令用于对程序存储器的访问,从程序存储器中读取数据指令采用间接寻址方式访问外部数据存储器,指令采用间接寻址方式访问外部数据存储器,令执行时,令执行时,在P3.7引脚上输出RD有效信有效信号或在号或在外部数据存储器或I/O的读或写选通信号,的读或写选通信号,与单片机扩展电路有关。与单片机扩展电路有关
15.已知(R1)=20H,(20H)=AAH,请写出执行完下列程序段后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
答:对程序注释如下:对程序注释如下:
,除去前面3个区,个区,剩下的所有单元。剩下的所有单元 (如表格、如表格、常数等Ri和DPTR两种间接寻址方式。两种间接寻址方式P3.6引脚上输出WR有效信号,有效信号。
A的内容。
。 )。MOVXMOVX指可以用作有。,
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仍为一个字节。仍为一个字节虑进位。虑进位。
17. 已知两个十进制数分别从内部数据存储器中的其字节长度存放在内部数据存储器的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引脚上的波形图,并标出电压⑵加以注释。 ORG 0000H START: MOV SP,#20H MOV 30H,#01H MOV P1,#01 MLP0:ACALL D50ms MOV A, 30H CJNE A, #08H,MLP1 MOV A, #01H 。若30H40H单元和50H单元开始存放
V-时间 ; 软件延时50mS
25(低位在前)T坐标;
中的数大于,则应考,
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…… 0DH 0EH 0FH 对应数据:00A0H 7DC2H FF09H 3456H 89ABH 5678H
请编制查表程序段,加上必要的伪指令,并加以注释。 答:程序如下:程序如下:
ORG 0000H AJMP MAIN, 0RG 0020H
TAB: DB OAOH,OOH,0C2H,7DH,09H,OFFH,...,56H,34H89H,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
ADD A,#01H ;查找数据的高位字节 MOV DPTR,#TAB MOVC A,@A+DPTR
MOV 42H,A 。 ;查找出的数据值高字节放入42H SJMP$
注意:数据表存放在20 H开始的片内存储器中,开始的片内存储器中,该存储器应为内部程序存储器,存储器应为内部程序存储器表指令MOVC的功能是从程序存储器中读数据。的功能是从程序存储器中读数据。
10. 把长度为10H的字符串从内部数据存储器的输入缓冲区INBUF向设在外部数据存储器的输出缓冲区OUTBUF进行传送,一直进行到遇见回车字符“CR”结束传送或整个字符串传送完毕。加上必要的伪指令,并对源程序加以注释。 答:程序如下:程序如下:
ORG 0000H AJMP MAIN
ORG 0030H
MAIN: MOV R7,#10H ;数据长度 MOV R0,#INBUF ;源数据首地址
MOV DPTR,#OUTBUF ;目的数据首地址
LOOP: MOV A,@R0 ;把源数据的值赋给A
CJNE A,#0DH,LOOP1 ;是“CR”(ASCII码值为0DH)? SJMP END1 ;是“CR”,则结束传送 LOOP1:MOVX @DPTR,A ;把A的值赋给目的数据
INC R0 ;源数据下一个地址值 INC DPTR ;目的数据下一个地址值 DJNZ R7,LOOP ;判数据传送是否完毕?
0.ABH,,因为查,
END1: SJMP END1
12.比较两个ASCII码字符串是否相等。字符串的长度在内部数据存储器的20H单元,第一个字符串的首地址在内部数据存储器的30H中,第二个字符串的首地址在内部数据存储器的50H中。如果两个字符串相等,则置用户标志F0为0;否则置用户标志F0为1。 加上必要的伪指令,并加以注释。(注:每个ASCII码字符为一个字节,如ASCII码“A”表示为41H) 答:字符串中每一个字符都可以用一个ASCII码表示。表示。只要有一个字符不相同,就可以判断字符串不相等。
ORG 0000H ’ AJMP MAIN·
ORG 0030H
MAIN:MOV R0,#30H第一个字符串的首地址 MOV R1.,#50H第二个字符串的首地址
LOOP:MOV A,@R0第一个字符串的字符值赋给A MOV B,@R1;第二个字符串的字符值赋给B CJNE A,B,NEXT;两个字符值比较
INC R0 字符值相等,则继续比较 INC R1. DJNZ 20H,LOOP判断字符串是否比较完 CLR F0 字符串相等,则F0位清0 SJMP $
NEXT:SETB F0字符串不等,串不等,则F0位置1 SJMP $ END
例如:(2OH)=03H,(3OH)=41H,(31H)=42H,(32H)=43H,(5OH)=41H,(51H)=42H,(52H)=43H。两个字符串均为“ABC
14. 80C51单片机从内部数据存储器的31H单元开始存放一组8位带符号数,字节个数在30H中。请编写程序统计出其中正数、零和负数的数目,并把统计结果分别存入20H、21H和22H三个单元中。加上必要的伪指令,并对源程序加以注释。
答:分析:带符号数以字节最高位D7的值来区分是正数(包括零)和负数。D7=1,则该带符号数为负数。
程序如下:程序如下: POS_NUM EQU 20H ;正数个数 ZERO_NUM EQU 21H ;零个数 NEG_NUM EQU 22H ;负数个数
ORG 0000H AJMP MAIN ORG 0030H
MAIN: MOV POS_NUM,#0 ;计数单位初始化为0 MOV ZERO_NUM,#0 MOV NEG_NUM,#0
MOV R1,30H ;数据长度 MOV R0,#31H ;数据首地址 LOOP: MOV A,@R0
JB ACC.7, INC_NEG ;符号位为1,该数为负数,跳转加1 CJNE A,#0,INC_POS
INC ZERO_NUM ;该数为0,0个数加1
AJMP LOOP1
INC_NEG: INC NEG_NUM ;负数个数加1
AJMP LOOP1
;该数为正数,INC_POS: INC POS_NUM 数为正数,正数个数加1
LOOP1: INC R0 ;判断统计是否结束
DJNZ R1,LOOP
END
例如:已知(30H)=08H,31H单元起存放数据为:存放数据为:00H,80H,7EH,EDH,FFH。 执行结果:执行结果:(20H)=04H,(21H)=01H,(22H)=03H。
16.将外部数据存储器的2040H单元中的一个字节拆成2个ASCII码,分别存入内部数据存
储器40H和41H单元中,试编写以子程序形式给出的转换程序,说明调用该子程序的入口条件和出口功能。加上必要的伪指令,并加以注释。 答:子程序的入口条件、子程序的入口条件、出口功能及源代码如下:如下: 子程序人口条件:口条件:准备拆为2个ASCII码的数存入外部RAM的40H单元中。单元中子程序出口功能:子程序出口功能:完成外部RAM单元一个字节拆成2个ASCII码,分别存入内部数据存储器40H和41H单元中。单元中。 ORG 1000H
B_TO_A:MOV DPTR,#40H ;外部RAM40H单元
MOV R0, #40H
MOVX A,@DPTR ;取数
PUSH A
ANL A,#0FH ;低4位转换为ASCII码
LCALL.CHANGE MOV @RO,A INC R0
POP A
SWAP A
ANL A,#0FH ;高4位转换为ASCII码 LCALL CHANGE
MOV @R0,A RET
CHANGE:CJNE A,#0AH,NEXT ;转换子程序 NEXT:JNC NEXT2 ;≥0AH,转移
ADD A,#30H ;≤9,数字0-9转化为ASCII码
RET
NEXT2:ADD A,#37H ;字母A~F转化为ASCII码
RET END
设外部(40H)=12H。
6DH,2FH。 34H,,
执行程序B_TO_A后:内部(40H)=31H,(41H)=32H。
设外部RAM(40H)=ABH。
执行程序B_TO_A后,内部(40H)=41H,(41H)=42H。
17.根据8100H单元中的值X,决定P1口引脚输出为:
2X X>0
P1= 80H X=0 (-128D≤X≤63D)
X变反 X
答:程序如下:程序如下:
ORG 0000H SJMP BEGIN ORG 0030H
BEGIN:MOV DPTR,#8100H MOVX A,@DPTR MOV R2,A
JB ACC.7,SMALLER ;有符号数
SMALLER:DEC A ;X
MOV P1,A SJMP OK
UNSIGNED:CJNE A,#00H,BIGGER ;不等于MOV P1,#80H ;X等于0,输出80H SJMP OK
BIGGER: CLR C ;X大于0,输出A×2 RLC A ;A×2 MOV P1,A OK: SJMP $
END
例如:输入55H,P1口引脚输出AAH;输入00H,P1的补码),P1口引脚输出0FH。
22. 编写求一组无符号数中最小值的子程序,入口条件为:内部数据存储器的存数据块的起始地址,22H中存数据块的长度,求得的最小值存入答:程序如下:程序如下: .
;求无符号数最小值的子程序CMPI ORG 2000H CMPI: MOV DPL,20H
MOV DPH,21H
MOV 30H,#0FFH ;最小值单元初始LOOP: MOVX A,@DPTR
MOVX A,@DPTR’
再取反) 0即大于0 80H;输入20H30H中。 设为最大值
F1(一1521H中,口引脚输出和值
CJNE A,30H,CHK ;比较两个数大小
SJM LOOP1 ;两个数相等,不交换
CHK: JNC LOOP1 ;A较大,不交换 MOV 30H,A;A较小,交换 LOOP1:INC DPTR DJNZ 22H.LOOP RET
注意:30H中始终存放两个数比较后的较小值,比较结束后存放的即是最小值。
例如:(20H)=00H,(21H)=80H.(22H)=05H。从8000H开始存放下列数:02H,04H,01H,FFH,03H。
调用子程序CMPl后的结果:后的结果:(30H)=01H
第五章 p141
1.什么是中断?在单片微机中中断能实现哪些功能? 答:单片机在程序执行过程中,’通过硬件打断程序的执行.,使程中,允许外部或内部“事件’断程序的执行.,使其转向执行处理外部或内部“事件’’的中断服务子程序;子程序;而在完成中断服务子程序以后,子程序以后,继续执行原来被打断的程序,断的程序,这种情况称为“中断
7.80C51共有哪些中断源?对其中断请求如何进行控制? 答:中断响应是有条件的,应是有条件的,即: 中断源申请中断;中断;
该中断源已被允许中断,中断,且CPU也已允许中断;中断; 没有同级或高优先级中断在执行中断服务程序。程序。
在接受中断申请时,如遇下列情况之一,硬件生成的长调用指令LCALL将被封锁: ① CPU正在执行同级或高一级的中断服务程序。程序。因为当一个中断被响应时,应时,其对应的中断优先级触发器被置1,封锁了同级和低级中断。中断。
② 查询中断请求的机器周期不是执行当前指令的最后一个周期。目的在于使当前指令执行完毕后,才能进行中断响应,以确保当前指令的完整执行。前指令的完整执行。
③ 当前正在执行RETI指令或执行对IE、IP的读/写操作指令。写操作指令。80C51.中断系统的特性规定,在执行完这些指令之后,必须再继续执行一条指令,执行一条指令,然后才能响应中断。应中断。
12.80C51的中断与子程序调用有哪些异同点,请各举两点加以说明。
答:① 相同点:
⑴ 都是中断当前正在执行的程序,前正在执行的程序,都要通过执行返回指令,回指令,返回到原来的程序。来的程序。
回指令时,⑵ 都是由硬件自动地把地址压入;当执行到返回指令时,自动弹出断点地址以便返回原来的程序。来的程序。
⑶都要通过软件完成现场保护和现场恢复。 ⑷ 都可以实现嵌套。 ② 不同点:
⑴ 信号可以由外部设备信号可以由外部设备发出,是随机的;机的;子程序调用却是由软件编排好的。
而子程序地址由软件设定。⑵ 后由固定的地址转入,而子程序地址由软件设定。
控的,定的。⑶ 中断响应是受控的,其会受一些因素影响;子程序响应时间是固定的。
第六章P161
1. 80C51单片微机内部设有几个定时器/计数器?简述各种工作方式的功能特点?
答:80C51单片机内部设有2个16位定时器/计数器TO和T1。定时器/计数器有4种工作方式,方式,其特点如下:如下:
①方式O是13位定时器/计数器。计数器。由THx高8位(作计数器)和TLx的低5位(32分频的定标器)构成,TLx的低5位溢出时,向THx进位;THx溢出时,硬件置位TFx(可用于软件查询)出时,进位;出时,查询),并可以申请定时器中断。定时器中断。
②方式1是16位定时器/计数器。计数器。TLx的低8位溢出时向THx进位,进位,THx溢出时,出时,硬 件置位TFx(可用于软件查询)查询),并可以申请定时器中断。定时器中断。
③方式2是定时常数自动重装载的8位定时器/计数器。计数器。TLx作为8位计数寄存器,位计数寄存器, THx作为8位计数常数寄存器。位计数常数寄存器。当TLx计数溢出时,出时,一方面将TFxTFx置位,置位,并申请中断;中断;另一方面将THx的内容自动重新装入TLx中,继续计数。计数。由于重新装入不影响THx的内容,的内容,所以可以多次连续再装入。方式2对定时控制特别有用。对定时控制特别有用。
④方式3只适用于TO,T0被拆成两个独立的8位计数器TLO和TH0。TLO做8位计数器,位计数器,它占用了T0的GATE、INTO、启动/启动/停止控制位TRO、TO引脚(P3.4)以及计数溢出标志位TF0和TO的中断矢量(地址为000BH)等TH0只能做8位定时器用,位定时器用,因为此时的外部引脚T0已为定时器/计数器TLO所占用。所占用。这时它占用了定时器/计数器T1的启动/启动/停止控制位控制位TRl、计数溢出标志位TFl.及T1中断矢量(地址为001BH)。 T0设为方式3后,定时器/计数器T1只可选方式O、1或2。由于此时计数溢出标志位TFI.及T1中断矢量(地址为001BH)已所以T1仅能作为波特率发生器或其他不用中断001BH)已被TH0所占用,所占用,的地方。的地方。
5.在80C51单片微机系统中,已知时钟频率为6MHz,选用定时器T0方式3,请编程使 P1.0和 P1.l引脚上分别输出周期为2ms和400μs的方波。加上必要的伪指令,并对源程序加以注释。
答:机器周期为2μs,定时分别为2ms和400μ400μs。
8
计算:计算:400μ400μs定时,定时,400μ400μs=(2-TC)×2μs,TC=38 H。 程序如下:程序如下: ORG 0000H 0000 0130 AJM MAIN ORG 000BH ; ;定时器TO中断矢量。 000B 2100 AJMP TIME MAIN:
0030 7805 MOV R0,#05H
0032 758903 MOV. TMOD,#03H ; ;T0方式3,定时器中断 定时器中断 0035 758A38 MOV TL0,#38H ; ;TLO定时400μ400μs 0038 D28C SETB TR0 ; ;开启定时器TL0 003A C28E CLR, TRl
003C D2A9 SETB ET0 ; ;开定时器TLO中断 中断 003E D2AF SETB EA
0040 80FE SJMP$ ; ;中断等待 ORG 01 00H . . TIME:
0100 758A38 MOV TL0,#38H ; ;TL0定时400~s
0103 B291B291 CPL. P1.1 ; ;400μ400μs 定时到,P1.1输出变反
0105 D804 DJNZ R0,RETURN
0107 7805 MOV R0,#05H
0109 B290 CP[.P1.0 ; ;400μ400μs*5=2ms到,P1.O输出变反
RETURN:
010B 32 RETI
END
14. 监视定时器T3功能是什么?它与定时器/计数器T0、T1有哪些区别?
答:T3俗称“看门狗
在实际应用中,在实际应用中,由于现场的各种干扰或者程序设计错误,可能使单片机的程序进入了“死循环
时器T3,则监视电路将产生一个系统复位信号,,位信号,强迫单片机退出“死循环
在程序正常运行时,,当由于干扰而没能及时“喂狗
第七章P186 ⒌ 简述串行通信接口芯片UART的主要功能?
答:① 它是用于控制与串行设备的芯片。
② 将由内部传送过来的并行数据转换为输出的串行。
③ 将外部来的串行数据转换为,供计算机内部并行数据的器件使用。行数据的器件使用。 ④ 在输出的串行数据流中加入,并对从外部接收的数据流进行奇偶校验。 ⑤ 在输出数据流中加入启停标记,并数据流中删除启停标记。
⑥ 处理由键盘或鼠标发出的中断信号(。 出的中断信号(键盘和鼠标也是串行设备)也是串行设备)。
⑦ 可以处理与外部串行设备的同步管理问题。
⒎ 80C51单片微机串行口共有哪几种工作方式?各有什么特点和功能?
答:80C51单片微机串行口共有4种工作方式:作方式:
① 方式,方式,为的1/12
② 8位UART,可变 可变
③ 9位UART,为的1/32或1/64
④ 9位UART,波特率可变
它们都是。
12. 80C51单片微机串行口共有种工作方式,作方式,它们的波特率分别为的1/12 , 波特率可变 , 波特率为晶振的1/32或1/64 , 波特率可变 。
第八章P259
1.简述单片微机系统扩展的基本原则和实现方法。
答:系统扩展是单片机应用系统硬件设计中最常遇到的问题。系统扩展是指单片机内部各功能部件不能满足应用系统要求时,在片外连接相应的外围芯片以满足应用系统要求。80C51
系列单片机有很强的外部扩展能力,强的外部扩展能力,外围扩展电路芯片大多是一些常规芯片,扩展电路及扩展方法较为典型、规范。用户很容易通过标准扩展电路来构成较大规模的应用系统。
对于单片机系统扩展的基本方法有并行扩展法和串行扩展法两种。两种。并行扩展法是指利用单片机的三组总线(地址总线AB、数据总线DB和控制总线CB)进行的系统扩展;统扩展;串行扩展法是指利用SPI三线总线和12C双线总线的串行系统扩展。统扩展。
① 外部并行扩展 行扩展
单片机是通过芯片的引脚进行系统扩展的。统扩展的。为了满足系统扩展要求,80C51系列单片机芯片引脚可以构成图8-1所示的三总线结构,所示的三总线结构,即地址总线AB、数据总线DB和控制总线CB。单片机所有的外部芯片都通过这三组总线进行扩展。三组总线进行扩展。
② 外部串行扩展 外部串行扩展
80C51.系列单片机的串行扩展包括:SPI(Seria
总线两种。总线两种。在单片机内部不具有串行总线时在单片机内部不具有串行总线时,内部不具有串行总线时,可
虚拟串行总线的功能。串行总线的功能。12C总线系统示意图如图
2. 如何构造80C51单片机并行扩展的系统总线
答:80C51并行扩展的系统总线有三组。统总线有三组。
①地址总线(A0~A15):由P0口提供低8位地址
必须用锁存器锁存,锁存器的锁存控制信号为单片机引脚
供高8位地址A8~A15。
②数据总线(D0~D7):由P0口提供,其宽度为
在同一时间在同一时间里只能够有一个是有效的数据传送通
控制各个芯片的片选线来选择。
③控制总线(控制总线(CB):包:包括片外系统扩展用控制线和片外信号对单片机的控制线。统扩展用控制线和片外信号对单片机的控制线
控制线有ALE、、、。
14. 已知可编程I/O接口芯片8255A的控制寄存器的地址为
入,B口为基本输出,C口为输入方式。请编写从
并根据要求画出80C51与8255A连接的逻辑原
释。
答:已知8255A的控制寄存器地址为BFFFH,
号,则8255A的C口地址为BFFFH,B口地址为
地址线P2.6(A14)作8255A的片选线。的片选线。
8255A与80C51连接图如图8-7所示。所示。 l Peripheral Interface用单片机的两根或三8—2所示。所示。 A0~A7,P0口输出的低ALE输出的控制信号。输出的控制信号8位,数据总线要连到道。哪个芯片的数据通BFFFH,要求设定C口读入数据后,再A0、A1被用BFFDH,A口地址为)三线总线和I/O引脚8位地址。多个外围芯道有效,有效,则由地址线。系AB口输出的程序段。8255A端BFFCH。12C双甩软件来A0~A7P2口提片上,片上,而统扩展用基本输口选择信可以选用利根?由口为从理图。加上必要的伪指令,并对源程序加以注若地址线做
图8-7 8255A与80C51连接图
程序如下:程序如下:
ORG 0000H
MOV DPTR,#0BFFFH ;8255A控制寄存器地址
MOV A,#99H
MOV X @DPTR,A ;写控制字(写控制字(PA输入、输入、PB输出、输出、PC输入)输入) MOV DPTR, #0BFFEH ;C口地址
MOV X A, @DPTR ; PC输入
MOV DPTR, #0BFFDH ;B口地址
MOV X @DPTR,A ; PB输出
19. D/A转换器是将DAC0832具有直通方式单缓冲方式双缓冲方式技术性能有分辨率,
转换精度,转换速率/建立时间
22. 利用ADC0809芯片设计以80C51为控制器的巡回检测系统。(8路输入的采样周期为1秒,)其它末列条件可自定。请画出电路连接图,并进行程序设计。
答:巡回检测系统如下统如下图所示。图所示。
图8-22巡回检测系统
分析:8路模拟输入通道IN0-IN7的地址为DFF8H~DFFFH(P2.5=0)。
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
MOV DPTR,#0DFF8H ;通道0地址
MOV R0,#40H ;存储单元首址
LOOP:MOVX @DPTR,A ;启动A/D转换
LCALL D128μs ;延时等待完成
MOVX A,@DPTR ;读入转换值
MOV @R0,A ;存入内存
……
D128µs: …… ;延时128µs子程序
RET
END
25.如何用静态方式实现多位LED显示,请画出接口电路图,并编写LED显示程序。 答: 静态显示LED接口 接口
(1)连接方法 各数码管的公共极固定接有效电平,各数码管的字形控制端分别由各自的控制信号控制。的控制信号控制。
(2)优点 LED显示亮度温度,容易调节,调节,编程容易,工作时占用CPU时间短。
(3)缺点 若直接用单片机输出各位数码管的字形信号时,的字形信号时,占用单片机的I/O口线较多。一般仅适用于 用于 显示位数较少的应用场合。
26.如何用动态方式实现多位LED显示,请画出接口电路图,并编写LED显示程序。 答:动态显示LED接口 接口
(1)连接方法 各位数码管的字形控制端对应地并在一起,由一组I/O端口进行控制,口进行控制,各位的公共极相互独 立,分别由不同的I/O控制信号控制。控制信号控制。
(2)优点 节省I/O端口线 口线 (3)缺点 显示亮度不够稳定,影响因素较多;编程较复杂,占用CPU时间较多。
《微机原理与接口技术》微机原理与接口技术》实验作业 实验作业
[第一部分 第一部分 简答题]简答题](必做题)必做题)
1. 80C51单片微机内部有哪几个常用的地址指针,它们各有什么用处。 答:80C51单片机内部有三个常用的指针。
① PC--PC--程序计数程序计数器计数器,存放下一条将要从程序存储器中取出的指令的地址。存放下一条将要从程序存储器中取出的指令的地址。 ② SP--SP--堆栈指示器堆栈指示器,指向堆栈栈顶。 指示器,指向堆栈栈
③ DPTR--DPTR--数据指针,作为片外数据存储器或作为片外数据存储器或I/0的地址指的地址指针。
2. 简述80C51的程序状态字PSW的主要功能。
答:PSW主要部分是算术逻辑运算单元ALU的输出。的输出。有些位根据指令运算结果,据指令运算结果,由硬件自动生成。如OV为溢出标志位,用于指示8位带符号数运算后有否号数运算后有否超出8位带符号数允许范围;范围;C标志为进位/借位标志位,多倍精度的加减法运算。运算。
3. 80C51访问片内外不同存储空间时采用哪3类传送指令。 答:① MOV传送指令用于访问片内数据存储器;指令用于访问片内数据存储器;
② MOVC传送指令用于程序存储器内的表格进行查表操作;表操作;
③ MOVX传送指令用于访问片外数据存储器或I/O,因为执行MOVMOVX指令时会产生控制信号/RD或/WR。
4. 简述80C51单片微机内部RAM低128字节4个主要区域的特点。 答:① 寄存器区:寄存器区:共4组寄存器,组寄存器,每组8个存储单元,个存储单元,各组以R0~R7作为单元编号;作为单元编号; ② 位寻址区:位寻址区:20H~2FH中的每一位进行位操作;中的每一位进行位操作;
③ 堆栈区:堆栈区:设置在用户RAM区内,区内,数据先进后出;进后出;
④ 用户RAM区:除去前面3个区,个区,剩下的所有单元。剩下的所有单元。
5. 简述80C51单片微机的并行扩展三总线(AB、DB和CB)如何构成及应用。 答:① AB共16位,由P0口经锁存后得到A0~A7、P2构成A8~A15,作地址总线;作地址总线; ② DB由P0口分时构成,做数据总线;数据总线;
③ CB主要有ALE、/RD、/WR、/PSEN等,作控制总线。作控制总线。
6. 为什么要进行低功耗设计?
答:① 实现绿色电子,电子,节约能源;能源;
② 某些场合(如野外)、某些便携式仪器仪表要求由电池供电,且功耗要小; ③ 能提高应用系统可靠性,因为进入低功耗后,单片微机对干扰往往不敏感。
7. 说明80C51单片微机的复位方式主要有哪几种。
答:80C51单片微机主要有上电复位方式、位方式、按键电平复位方式和外脉冲复位方式。位方式。
8. 80C51芯片内部主要集成逻辑功能部件有哪些?
答:80C51芯片内部主要集成逻辑功能部件有中央处理器、理器、存储器、存储器、定时器/计数器、计数器、I/O口等。口等。
9. 80C51的程序存储器中有几个特定地址。
答:0000H为复位后PC初始值,0003H为外部中断0中断矢量地址,量地址,000BH为T0中断矢量地址,量地址,0013H为外部中断1中断矢量地址,量地址,001BH为T1中断矢量地址,量地址,0023H为串行口中断矢量地址。量地址。
10. 请简述如何在实验室完成实验任务,使用哪些资源?
答:仿真软件由WAVE的编程软件及MICETEK公司的EasyProbe8052F仿真软件组成,自编源程序在PC上进行编辑、上进行编辑、编译及将编译通过后所生成的后缀名为HEX的机器码文件,通过RS-RS-232串行口下载给仿真器,仿真器采用MICETEK公司的EasyProbe8052F仿真器。在仿真器上完成实验的验证、修改和完成。
[第二部分 第二部分 读程序](必做题)必做题)
要求:”右侧对程序加以注释。要求:⑴直接在源程序“直接在源程序“;右侧对程序加以注释。
⑵写出程序功能和运行后结果。写出程序功能和运行后结果。
程序1 ORG 0000H SJMP MAIN ORG 0030H MAIN:MOV DPTR,#2000H ;被加数首地址 被加数首地址 MOV R0,#10H ;加数首地址 加数首地址 MOV R1,#20H ;和首地址 和首地址 MOV R2,#05H ;5字节相加 CLR C ADDA:MOVX A,@ DPTR ;取被加数 取被加数 ADDC A,@ R0 ;加上加数 加上加数 DA A ;二-十进制数校正 MOV @ R1,A ;和存入 和存入 INC DPTR ;修正地址 修正地址 INC R0 INC R1 DJNZ R2,ADDA ;5字节BCD码数加法循环 循环 AJMP $ END ⑵ 程序功能:片外数据存储器中被加数与片内数据存储器中加数以5字节长度的BCD码程序功能:数形式相加,和存入20H~24H。 问题1:若删去”DA A”一行 一行 , 则程序功能为:”片外数据存储器中被加数与片内数据存储器中加数以5字节长度的二进则程序功能为:制数形式相加,和存入20H~24H。 问题2: 若”MOV , R2,#05H”#05H”改为”MOV R2,#02H”#02H”则程序功能:”片外数据存储器中被加数与片内数据存储器中加数以2字节长度的BCD码则程序功能:数形式相加,和存入20H~24H。 问题3: 若和需存入10H-10H-14H中, 则修改MOV @ RO,A ; ;和存入 和存入 程序2 ORG 0000H SJMP MAIN ORG 0030H MAIN:MOV DPTR,#TAB ;指向表地址 MOV A,#02H ;取查表值 MOVC A,@A+DPTR ;查表 MOV R0,A ;查表结果存RO中 SJMP $ ORG 2080H TAB DB 00H,11H,22H,33H ……;表(略) END 程序功能:程序功能: 这是一个查表程序,表程序,欲査值为02H,通过查表得到对应结果。对应结果。 运行后结果:(RO)=22H 运行后结果:① 问题1:若”MOV A,#02H”, #02H”改为”MOV A,#03H”#03H”则运行后结果:(RO)=33H 则运行后结果:② 问题2:若运行后结果为00 H,则修改 MOV A,#00H