单片机原理及应用四章3-4
单片机原理及应用第四章课后题答案

第四章作业答案16.MCS-51单片机系统中,片外程序存储器和片外数据存储器共用16位地址线和8位数据线,为何不会产生冲突?解:数据存储器的读和写由RD和WR信号控制,而程序存储器由读选通信号PSEN控制,这些信号在逻辑上时序上不会产生冲突;程序存储器访问指令为MOVC,数据存储器访问指令为MOVX。
程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于二者访问指令不同,控制信号不同,所以两者虽然共处于同一地址空间,不会发生总线冲突。
18.某单片机应用系统,需扩展2片8KB的EPROM和2片8KB的RAM,采用地址译码法,画出硬件连接图,并指出各芯片的地址范围。
解:硬件连接电路图如图4.18所示。
各芯片的地址范围为:2764(1#):0000H~1FFFH 2764(2#):2000H~3FFFH6264(1#):4000H~5FFFH 6264(2#):6000H~7FFFH图4.18 4.18题硬件连接电路图21.8255A的端口地址为7F00H~7F03H,试编程对8255A初始化,使A口按方式0输入,B口按方式1输出。
解:程序如下:ORG 0000HLJMP STARTORG 0030HSTART:MOV SP, #60HMOV DPTR,#7F03HMOV A,#10010100BMOVX @DPTR,ASJMP $END25.使用8255A或者8155的B端口驱动红色和绿色发光二极管各4只,且红、绿发光二极管轮流发光各1s,不断循环,试画出包括地址译码器、8255A或8155与发光管部分的接口电路图,并编写控制程序。
解:使用8255A,电路连接图如图4.25所示。
图4.25 4.25题硬件连接电路图其中,PB0~PB3接红色发光二极管,PB4~PB7接绿色发光二极管。
设MCS-51单片机主频为12MHz。
程序如下:ORG 0000HLJMP STARTORG 0030HSTART:MOV SP, #60HMOV DPTR, #7FFFH ; 数据指针指向8255A控制口MOV A, #80HMOVX @DPTR, A ; 工作方式字送8255A控制口MOV DPTR, #7FFDH ; 数据指针指向8255A 的B口MOV A, #0FH ; 置红色发光二极管亮LP1:MOVX @DPTR, A ; 置红色发光二极管亮LCALL DELAY ; 调用1S延时子程序CPL A ; 置发光二极管亮反色SJMP LP1 ; 循环执行DELAY:MOV R7,#10 ; 1s延时子程序D1:MOV R6,#200D2:MOV R5,#248D3:NOPDJNZ R5,D3DJNZ R6,D2DJNZ R7,D1RETEND采用定时器T0方式1中断实现1s定时。
单片机原理与应用第四章作业答案

4-9 试计算片内RAM区40H~47H单元中8个数据的平均值,结果存放在4Ah中;说明:先对8个数求和,结果放在30h,31h;然后用右移3次求平均。
ORG 0000HSJMP MAINORG 0030HMIAN: MOV R0,#40HMOV R1,#30HMOV 30H,#00HMOV 31H,#00HMOV R2,#8CLR CL1: MOV A,@R1ADDC A,@R0MOV @R1,AINC R0INC R1MOV A,@R1ADDC A,#00HMOV @R1,ADEC R1DJNZ R2,L1INC R1L2: MOV R2,#03HMOV A,@R1RRC AMOV @R1,AINC R1MOV A,@R1RRC AMOV @R1,ADEC R1DJNZ R2,L2DEC R1MOV 4AH,@R1SJMP $4-10 在起始地址为2100H,长度为64H的数表中查找ASCII码’F’,如果有,将其值送到1000H单元,如果没有,将0FFH送1000H单元.ORG 0000HSJMP MAINORG 0030HMAIN: MOV R2,#64MOV DPTR,#2100HL2: MOVX A,@DPTRCJNE A,#’F’,L1MOV DPTR,#1000HMOV A,#00HMOVX @DPTR,ASJMP LASTL1: INC DPTRDJNZ R2,L2MOV A,#0FFHMOVX @DPTR,ALAST: SJMP $4-11 试编写将片内40H~60H 单元中的内容传送到外部RAM以2000h为首地址的存放区域中,并将原数据全部清零。
ORG 0000HSJMP MAINORG 0030HMIAN: MOV R0,#40HMOV DPTR,#2000HMOV R1,#20HL1: MOV A,@R0MOVX @DPTR,AMOV @R0,#00HINC R0INC DPTRDJNZ R1,L1SJMP $4-12 编写,内部RAM50H‐59H 10个单元内容的平均值,并存放在5AH单元。
单片机原理及应用(徐泳龙主编)第2版课后参考答案

《单片机原理及应用》习题答案第一章计算机基础知识1-1 微型计算机主要由哪几部分组成?各部分有何功能?答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):即地址总线AB、数据总线DB和控制总线CB 来连接。
CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。
存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。
按其功能可分为RAM和ROM。
输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。
总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。
1-3 什么叫单片机?其主要由哪几部分组成?答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。
1-4 在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用?答:单片机片内ROM的配置状态可分四种:(1)片内掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产;(2)片内EPROM型单片机(如8751),适合于研制产品样机;(3)片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;(4)EEPROM(或Flash ROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。
1-5 写出下列各数的另两种数制的表达形式(二、十、十六进制)1-6 写出下列各数的BCD参与:59:01011001,1996:0001100110010110,4859.2:0100100001011001.0010 389.41:001110001001.01000001第二章MCS-51单片机的硬件结构2-1 8052单片机片内包含哪些主要逻辑功能部件?答: 8052单片机片内包括:①8位中央处理器CPU一个②片内振荡器及时钟电路③256B数据存储器RAM。
第4章单片机原理及应用(C51编程)

4.3 C51的函数
4.3.1
返回值类型 { 函数体 }
C51函数的定义
函数名(形式参数列表)[编译模式][reentrant][interrupt n][using n]
一般形式:
编译模式为SMALL、COPACT或LARGE reentrant用于定义可重入函数 interrupt n 用于定义中断函数,n为中断号,可以为0~31 using n 确定工作寄存器组,取值为0~3
从而使DBYTE用于以字节形式对data区访问,可以写成:
与此类似: CBYTE用于以字节形式对code区进行访问; PBYTE用于以字节形式对pdata区进行访问; XBYTE用于以字节形式对xdata区进行访问。
CWORD、DWORD、PWORD和XWORD用于以字形式对 code区、data区、pdata区和xdata区进行访问。
4.2.4
C51程序编写示例
C51源程序
C51编译器
浮动目标码模块 系统库 连接器
列表文件 用户库
绝对定位目标码文件
映像文件
软件模拟器
转换器
硬件仿真器
OMF51格式文件 写入程序存储器 编程器
【例4-1】将30H至3FH共16个RAM单元初始化为“55H”。 #include <reg52.h> #include <absacc.h> void main(void) { unsigned char i; for (i=0;i<=15;i++) { DBYTE[0x30+i]=0x55; } while(1); } 编译系统自动连接了 startup.a51生成代码 一是将内部RAM的 00H~7FH清0; 二是设置堆栈指针SP。 有全局变量赋值时 编译系统会自动连接 init.a51生成代码
单片机原理及应用(张毅刚-第三版)课后习题答案(全)

第1章思考题及习题1参考答案一、填空1. 除了单片机这一名称之外,单片机还可称为或。
答:微控制器,嵌入式控制器.2.单片机与普通微型计算机的不同之处在于其将、、和三部分,通过内部连接在一起,集成于一块芯片上。
答:CPU、存储器、I/O口、总线3. AT89S52单片机工作频率上限为 MHz。
答:33 MHz。
4. 专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低和提高。
答:成本,可靠性。
二、单选1. 单片机内部数据之所以用二进制形式表示,主要是A.为了编程方便B.受器件的物理性能限制C.为了通用性D.为了提高运算速度答:B2. 在家用电器中使用单片机应属于微计算机的。
A.辅助设计应用B.测量、控制应用C.数值计算应用D.数据处理应用答: B3. 下面的哪一项应用,不属于单片机的应用范围。
A.工业控制 B.家用电器的控制 C.数据库管理 D.汽车电子设备答:C三、判断对错1. STC系列单片机是8051内核的单片机。
对2. AT89S52与AT89S51相比,片内多出了4KB的Flash程序存储器、128B的RAM、1个中断源、1个定时器(且具有捕捉功能)。
对3. 单片机是一种CPU。
错4. AT89S52单片机是微处理器。
错5. AT89C52片内的Flash程序存储器可在线写入,而AT89S52则不能。
错6. 为AT89C51单片机设计的应用系统板,可将芯片AT89C51直接用芯片AT89S51替换。
对7. 为AT89S51单片机设计的应用系统板,可将芯片AT89S51直接用芯片AT89S52替换。
对8. 单片机的功能侧重于测量和控制,而复杂的数字信号处理运算及高速的测控功能则是DSP的长处。
对四、简答1. 微处理器、微计算机、微处理机、CPU、单片机、嵌入式处理器它们之间有何区别?答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机。
而微计算机、单片机它们都是一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。
单片机原理及其应用

单片机原理及其应用
单片机即单片微型计算机,是一种集成电路芯片,内部包含了处理器、存储器、输入输出接口等电子器件和电路。
它可以完成各种计算和控制任务,具有体积小、功耗低、功能强大等特点,广泛应用于各个领域。
单片机的工作原理是通过指令的执行来完成相应的任务。
它内部的处理器通过解析存储在存储器中的指令,执行不同的操作,包括算术运算、逻辑运算、数据传输等。
同时,单片机还可以与外部设备通过输入输出接口进行数据交换,并控制外部设备的工作。
单片机的应用十分广泛。
在家电领域,它可以作为控制中心,实现灯光控制、电机控制、温度控制等功能。
在汽车电子领域,单片机可以用于控制发动机系统、车载娱乐系统、车身电子系统等。
在工业自动化领域,单片机可以用于控制生产线上的各种设备,实现自动化生产。
此外,单片机还可以应用于电子计算器、遥控器、安防系统、医疗设备等领域。
总的来说,单片机通过内部的处理器和外部设备的交互,实现各种控制和计算任务,广泛应用于各个领域,为我们的生活和工作提供了很大的便利。
单片机原理及应用(林立张俊亮版)课后习题答案

第一章习题1.什么是单片机?单片机和通用微机相比有何特点?答:单片机又称为单片微计算机,它的结构特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。
虽然单片机只是一个芯片,但无论从组成还是从逻辑功能上来看,都具有微机系统的定义。
与通用的微型计算机相比,单片机体积小巧,可以嵌入到应用系统中作为指挥决策中心,是应用系统实现智能化。
2.单片机的发展有哪几个阶段?8位单片机会不会过时,为什么?答:单片机诞生于1971年,经历了SCM、MCU、SOC三大阶段,早期的SCM单片机都是8位或4位的。
其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列MCU系统。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。
随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
然而,由于各应用领域大量需要的仍是8位单片机,因此各大公司纷纷推出高性能、大容量、多功能的新型8位单片机。
目前,单片机正朝着高性能和多品种发展,但由于MCS-51系列8位单片机仍能满足绝大多数应用领域的需要,可以肯定,以MCS-51系列为主的8位单片机,在当前及以后的相当一段时间内仍将占据单片机应用的主导地位。
3.举例说明单片机的主要应用领域。
答:单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:智能仪器单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
单片机原理及应用

单片机原理及应用教案福建省三明工贸学校机电技术应用第一章绪论第一节单片机单片机即单片机微型计算机,是将计算机主机(CPU、内存和I/O接口)集成在一小块硅片上的微型机。
第二节单片机的历史与现状第一阶段(1976~1978年):低性能单片机的探索阶段。
以Intel公司的MCS-48为代表,采用了单片结构,即在一块芯片内含有8位CPU、定时/计数器、并行I/O口、RAM 和ROM等。
主要用于工业领域。
第二阶段(1978~1982年):高性能单片机阶段,这一类单片机带有串行I/O口,8位数据线、16位地址线可以寻址的范围达到64K字节、控制总线、较丰富的指令系统等。
这类单片机的应用范围较广,并在不断的改进和发展。
第三阶段(1982~1990年):16位单片机阶段。
16位单片机除CPU为16位外,片内RAM和ROM容量进一步增大,实时处理能力更强,体现了微控制器的特征。
例如Intel 公司的MCS-96主振频率为12M,片内RAM为232字节,ROM为8K字节,中断处理能力为8级,片内带有10位A/D转换器和高速输入/输出部件等。
第四阶段(1990年~):微控制器的全面发展阶段,各公司的产品在尽量兼容的同时,向高速、强运算能力、寻址范围大以及小型廉价方面发展。
第三节单片机的应用领域一、单片机在仪器仪表中的应用二、单片机在机电一体化中的应用三、单片机在智能接口和多机系统中的应用四、单片机在生活中的应用第二章硬件结构第一节MCS-51单片机及其演变特点(1)一个8位微处理器CPU。
(2)数据存储器RAM和特殊功能寄存器SFR。
(3)内部程序存储器ROM。
(4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。
(5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出。
(6)一个串行端口,用于数据的串行通信。
(7)中断控制系统。
(8)内部时钟电路。
第二节80C51单片机的基本结构1) 中央处理器(CPU)中央处理器是单片机的核心,完成运算和控制功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 定时器/计数器的功能
2个16位,分为TH、TL,用来存放计数初值,TH存 高位。 定时:定时的发出脉冲,在发出定时脉冲的同时, 还可以向CPU申请中断。定时的起始时间、终止时 间的控制及时间间隔等均可由程序设定。 计数:对外部的事件计数。当达到程序所规定的计 数常数时,输出一脉冲信号,并可同时向CPU发出 中断请求信号。
4. 初始化步骤
确定T1的工作方式:编程TMOD 计算T1的初值:装载TH1、TL1 启动T1:TCON的TR1 确定串行口的控制:编程SCON 串行口在中断方式时,须开中断:编程IE
4.4 串行口编程
5. 例子
利用AT89C51的串行口设计4位静态数码管显示器,要求4位显示器上每 隔1s交替显示“ABCD”和“1234”,电路图如下。
申请中断
4.4 串行口编程位寻址。
位地址
位功能
9FH
SM0
9EH
SM1
9DH
SM2
9CH
REN
9BH
TB8
9AH
RB8
99H
TI
98H
RI
PCON
D7 与串行口无关 SMOD
4.4 串行口编程
2. 工作方式
四种工作方式,由SCON的SM0、SM1组合确定。
INT1 TXD
0
&
0
0
+5V A CLK CLR B 74LS164 A CLK CLR B 74LS164 CLK CLR 74LS164
RXD
...
200*4 AT89C51
...
...
...
LED
LED
...
LED
共阳
+5V
4.4 串行口编程
分析:
方式0,8位同步移位寄存器方式。 TXD输出时钟脉冲,RXD输出数据。不是多机通信,没有接收。 SCON写入控制字为00H。 “ABCD”与“1234”的字形码分别对应4个LED,由74164输出。 定时1s可以由定时器确定,也可由软件定时。 设定时器T0定时,假如fosc=12MHz,则机器周期TC=1us,定时1s需 要1000000次,定时器4种工作方式都不适合。须另想办法。 可以考虑T0定时与软件定时相结合的方式用来定时1s的时间。 串行口方式0,发送8位数据后,TI会置位。程序上,可以采用查询 方式与中断方式。
机器周期Tc=1us;10KHz的中断,其周期即定时时 间为0.1ms=100us。 可用T1的方式2-8位计数器模式,最大定时时间为 256us,初值为256-100=156。
4.3 定时器/计数器编程
程序如下: #include<reg51.h> static unsigned long overflow_count=0; void timer1(void) interrupt 3 { overflow_count++; } void main(void) { TMOD=(TMOD&0x0F)|0x20; TH1=256-100; TL1=TH1; ET1=1; TR1=1; EA=1; While(1); }
4.3 定时器/计数器编程
设10MHz晶振,在P1.0脚上输出周期为2.5s,占空 比为20%的脉冲信号。 中断次数加1 分析:
对于10MHz,最大定时时间为 几十ms,取10ms定时,周期2.5s 需250次中断。占空比为20%,高 电平应为50次中断。 T0方式1,需计数次数为 10×1000×10/12=8333 程序流程图如右
4.4 串行口编程
方式2和方式3
11位异步通信。 帧格式: 起
始
D0 D1 D2 D3 D4 D5 D6 D7 D8
停 止
波特率:方式2为 2SMOD×(fosc/64);方式3同方式1 输出时,第9位数据TB8输出后,置位TI 输入时,REN=1,第9位数据接收到后,RI=0时存入RB8, 并且置位RI RI、TI为软件清零
Y
次数=高电平? P1.0=0
N N
次数=周期?
Y
P1.0=1
返回
4.3 定时器/计数器编程
程序如下
#include<reg51.h> #define uchar unsigned char uchar time; uchar period=250; uchar high=50; timer0() interrupt 1 using 1 { TH0=(65536-8333)/256; TL0=(65536-8333)%256; if(++time==high) P1=0; else if(time==period) { time=0; P1=1; } }
自动再装入的8位计数器,TL计数器, TH存初值
T0分为2个8位计数器,T1停止计数
4.3 定时器/计数器编程
4. 编程初始化
确定T/C的工作方式:TMOD 计算T/C的计数初值,并装载到TH和TL T/C中断方式时,开中断:IE 启动T/C:TCON
4.3 定时器/计数器编程
5. 计数初值的计算
4.3 定时器/计数器编程
设fosc=12MHz要求在P1.0输出周期为2ms的方 波。 分析:
周期为2ms的方波,定时间隔为1ms,每次时间到 时,P1.0取反。 机器周期Tc=1us,需计数1ms/1us=1000,可用定 时器0或1的方式0或方式1;设用方式1,初值为 65536-1000。 程序的编写,可以用查询方式实现,查询TF位;也 可用中断方式实现。
4.4 串行口编程
{SBUF=tab[a]; a--; while(!TI); TI=0; if(a==255) a=7; } P3_3=0; timer(100); }
SM0 SM1
0 0 1 1 0 1 0 1
工作方式
方式0 方式1 方式2 方式3
功能描述
波特率
8位移位寄存器 fosc/12 10位UART 11位UART 11位UART 可变,定时器控制 fosc/64或fosc/32 可变,定时器控制
4.4 串行口编程
方式0
8位移位寄存器方式。串行数据由RXD输入、输出,低位在前, TXD输出移位时钟。波特率fosc/12。 发送以写sbuf开始,8位输出结束时TI置位。 REN=1、RI=0同时满足,接收开始。数据装入SBUF中,结 束时RI置位。 可以用CD4014(74LS165)扩展输入,CD4094(74LS164) 扩展输出。其中,CD4014为并入-串出移位寄存器,CD4094 为串入-并出移位寄存器。 还可以用于两个单片机之间的通信。
4.4 串行口编程
查询方式程序如下 #include<reg51.h> #define uchar unsigned char sbit P3_3=P3^3; char code tab[]={0x88,0x83,0xc6,0xa1,0xf9,0xa4,0xb0,0x99}; void timer(uchar); main() {uchar I,a=3; SCON=0; for(;;) {P3_3=1; for(i=0;i<4;i++)
4.3 定时器/计数器编程
如图,在P1.7端接有一个LED,要求利用 T/C控制,使LED亮1s、灭1s,周而复始。
分析:
定时1s,3种工作方式不行。 采用复合定时。 T0方式1,定时100ms,定时 时间到P1.0反相;T1计数器方式 2,对P1.0输入脉冲计数,满5次, 定时1s到,将P1.7反相。 设晶振6MHz,Tc=2us,则 T1需计数100ms/2us=50000, 初值为65536-50000。
定时器的计数初值
若fosc=6MHz,则1个机器周期Tc=2us,则 13 方式0最大定时间隔,2 ×2us=16.384ms; 方式1最大定时间隔,131.072ms; 方式2最大定时间隔,512us; 有如下公式计算: t=Tc×(2L-TC)=12/fosc×(2L-TC),TC为计数初值
main() { TMOD=0x01; TH0=(65536-8333)/256;
TL0=(65536-8333)%256;
EA=1; ET0=1; TR0=1; do{}while(1); }
4.4 串行口编程
UART-Universal Asynchronous Receiver/Transmitter。 发送时数据由TXD送出, 接收时数据由RXD输入。 SCON 结构如右图,有发送及接收 缓冲器。 定时器单元 波特率时钟由T1获得。 接收SBUF 功能:与通用微机的通信、 TX 串行口控制逻辑 单片机间的通信、主从结构 RX 的分布式控制系统机间通信。 发送SBUF
}
4.3 定时器/计数器编程
中断方式程序如下:
#include<reg51.h> sbit P1_0=P1^0; void timer0(void) interrupt 1 using 1 { P1_0=!P1_0; TH0=(65536-1000)/256; TL0=(65536-1000)%256; } void main(void) { TMOD=0x01; P1_0=0; TH0=(65536-1000)/256; TL0=(65536-1000)%256; EA=1; ET0=1; TR0=1; do{}while(1); }