❶ 用AT89C51单片机和温度传感器DS18B20S设计数字式温度计
江苏省联合职业技术学院常州旅游商贸分院
专科毕业论文
基于51单片机及DS18B20温度传感器的数字温度计设计
姓 名:(××××××××3号黑体)
学 号:(××××××××3号黑体)
班 级:(联院班级号×××3号黑体)
专 业:(××××××××3号黑体)
指导教师:(××××××××3号黑体)
系 部:创意信息系××××3号黑体)
二〇二0年××月××日
摘 要
本设计采用的主控芯片是ATMEL公司的AT89S52单片机,数字温度传感器是DALLAS公司的DS18B20。本设计用数字传感器DS18B20测量温度,测量精度高,传感器体积小,使用方便。所以本次设计的数字温度计在工业、农业、日常生活中都有广泛的应用。
单片机技术已经广泛应用社会生活的各个领域,已经成为一种非常实用的技术。51单片机是最常用的一种单片机,而且在高校中都以51单片机教材为蓝本,这使得51单片机成为初学单片机技术人员的首选。本次设计采用的AT89S52是一种flash型单片机,可以直接在线编程,向单片机中写程序变得更加容易。本次设计的数字温度计采用的是DS18B20数字温度传感器,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
本设计根据设计要求,首先设计了硬件电路,然后绘制软件流程图及编写程序。本设计属于一种多功能温度计,温度测量范围是-55℃到125℃。温度值的分辨率可以被用户设定为9-12位,可以设置上下限报警温度,当温度不在设定的范围内时,就会启动报警程序报警。本设计的显示模块是用四位一体的数码管动态扫描显示实现的。在显示实时测量温度的模式下还可以通过查询按键查看设定的上下限报警温度。
关键词:单片机、数字温度计、DS18B20、AT89S52
目 录
1 引言 1
2 系统总体方案及硬件设计 2
2.1 系统总体方案 2
2.1.1系统总体设计框图 2
2.1.2各模块简介 2
2.2 系统硬件设计 6
2.2.1 单片机电路设计 6
2.2.2 DS18B20温度传感器电路设计 6
2.2.3 显示电路设计 7
2.2.4 按键电路设计 7
2.2.5 报警电路设计 8
3 软件设计 9
3.1 DS18B20程序设计 9
3.1.1 DS18B20传感器操作流程 9
3.1.2 DS18B20传感器的指令表 9
3.1.3 DS18B20传感器的初始化时序 10
3.1.4 DS18B20传感器的读写时序 10
3.1.5 DS18B20获取温度程序流程图 11
3.2 显示程序设计 13
3.3 按键程序设计 13
4实物制作及调试 14
5电子综合设计体会 15
参考文献 16
1 引言
本系统所设计的数字温度计采用的是DS18B20数字温度传感器测温,DS18B20直接输出的就是数字信号,与传统的温度计相比,具有读数方便,测温范围广,测温准确,上下限报警功能。其输出温度采用LED数码管显示,主要用于对测温比较准确的场所。
该设计控制器使用的是51单片机AT89S52,AT89S52单片机在工控、测量、仪器仪表中应用还是比较广泛的。测温传感器使用的是DS18B20,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。显示是用4位共阴极LED数码管实现温度显示,LED数码管的优点是显示数字比较大,查看方便。蜂鸣器用来实现当测量温度超过设定的上下限时的报警功能。
2 系统总体方案及硬件设计
2.1 系统总体方案
2.1.1系统总体设计框图
由于DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。
温度计电路设计总体设计框图如图2-1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,显示采用4位LED数码管,报警采用蜂鸣器、LED灯实现,键盘用来设定报警上下限温度。
图2-1 温度计电路总体设计框图
2.1.2各模块简介
1.控制模块
AT89S52单片机是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含有8kb的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程的Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
2.显示模块
显示电路采用4位共阴LED数码管,从P0口输出段码,P2口的高四位为位选端。用动态扫描的方式进行显示,这样能有效节省I/O口。
3.温度传感器模块
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5v;零待机功耗;温度以9或12位二进制数字表示;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;
DS18B20采用3脚TO-92封装或8脚SO或µSOP封装,其其封装形式如图2-2所示。
图2-2 DS18B20的封装形式
DS18B20的64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM。高速暂存RAM的结构为8字节的存储器,结构如图2-3所示。
图2-3 DS18B20的高速暂存RAM的结构
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值,该字节各位的定义如表2-1所示。
表2-1:配置寄存器
D7 D6 D5 D4 D3 D2 D1 D0
TM
R1
R0
1
1
1
1
1
配置寄存器的低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,“R1R0”为“00”是9位,“01”是10位,“10”是11位,“11”是12位。当DS18B20分辨率越高时,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位s=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。输出的二进制数的高5位是符号位,最后4位是温度小数点位,中间7位是温度整数位。表2-2是一部分温度值对应的二进制温度数据。
表2-2 DS18B20输出的温度值
温度值
二进制输出
十六进制输出
+125℃
0000 0111 1101 0000
07D0h
+85℃
0000 0101 0101 0000
0550h
+25.0625℃
0000 0001 1001 0001
0191h
+10.125℃
0000 0000 1010 0010
00A2h
+0.5℃
0000 0000 0000 1000
0008h
0℃
0000 0000 0000 0000
0000h
-0.5℃
1111 1111 1111 1000
FFF8h
-10.125℃
1111 1111 0101 1110
FF5Eh
-25.0625℃
1111 1110 0110 1111
FF6Fh
-55℃
1111 1100 1001 0000
FC90h
DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
4.调节模块介绍
调节模块是由四个按键接地后直接接单片机的I/O口完成的。当按键没有按下时单片机管脚相当于悬空,默认下为高电平,当按键按下时相当于把单片机的管脚直接接地,此时为低电平。程序设计为低电平触发。
5.报警模块介绍
报警模块是由一个PNP型的三极管9012驱动的5V蜂鸣器,和一个加一限流电阻的发光二极管组成的。报警时蜂鸣器间歇性报警,发光二极管闪烁。
2.2 系统硬件设计
2.2.1 单片机电路设计
图2-4 单片机最小系统原理图
单片机最小系统是由晶振电路,上电复位、按键复位电路,ISP下载接口和电源指示灯组成。原理图如图2-4所示。
2.2.2 DS18B20温度传感器电路设计
DS18B20温度传感器是单总线器件与单片机的接口电路采用电源供电方。
电源供电方式如图2-7,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。
图2-7 DS18B20电源供电方式
当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。
2.2.3 显示电路设计
显示电路是由四位一体的共阴数码管进行显示的,数码管由三极管9013驱动。
四位一体的共阴数码管的管脚分布图如图2-5所示。
图2-5 四位一体的共阴数码管管脚分布图
显示电路的总体设计如图2-6所示。
图2-6 显示电路
2.2.4 按键电路设计
按键电路是用来实现调节设定报警温度的上下限和查看上下报警温度的功能。电路原理图如图2-10所示。
图2-10 按键电路原理图
2.2.5 报警电路设计
报警电路是在测量温度大于上限或小于下限时提供报警功能的电路。该电路是由一个蜂鸣器和一个红色的发光二极管组成,具体的电路如图2-9所示。
图2-9 报警电路原理图
3 软件设计
3.1 DS18B20程序设计
3.1.1 DS18B20传感器操作流程
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
• 每一次读写之前都要对DS18B20进行复位操作
• 复位成功后发送一条ROM指令
• 最后发送RAM指令
这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500μs,然后释放,当DS18B20收到信号后等待16~60μs左右,后发出60~240μs的存在低脉冲,主CPU收到此信号表示复位成功。
DS18B20的操作流程如图3-1所示。
如图3-1 DS18B20的操作流程
3.1.2 DS18B20传感器的指令表
DS18B20传感器的操作指令如表3-1所示。传感器复位后向传感器写相应的命令才能实现相应的功能。
表3-1 DS18B20的指令表
指 令
指令代码
功 能
读ROM
0x33
读DS1820温度传感器ROM中的编码(即64位地址)
符合 ROM
0x55
发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。
搜索 ROM
0xF0
用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。
跳过 ROM
0xCC
忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。
告警搜索命令
0xEC
执行后只有温度超过设定值上限或下限的片子才做出响应。
温度变换
0x44
启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。
读暂存器
0xBE
读内部RAM中9字节的内容
写暂存器
0x4E
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制暂存器
0x48
将RAM中第3 、4字节的内容复制到EEPROM中。
重调 EEPROM
0xB8
将EEPROM中内容恢复到RAM中的第3 、4字节。
读供电方式
0xB4
读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。
3.1.3 DS18B20传感器的初始化时序
DS18B20传感器为单总线结构器件,在读写操作之前,传感器芯片应先进性复位操作也就是初始化操作。
DS18B20的初始化时序如图3-2所示。首先控制器拉高数据总线,接着控制器给数据总线一低电平,延时480μs,控制器拉高数据总线,等待传感器给数据线一个60-240μs的低电平,接着上拉电阻将数据线拉高,这样才初始化完成。
图3-2 DS18B20初始化时序
3.1.4 DS18B20传感器的读写时序
1.写时序
DS18B20传感器的读写操作是在传感器初始化后进行的。每次操作只能读写一位。
当主机把数据线从高电平拉至低电平,产生写时序。有两种类型的写时序:写“0”时序,写“1”时序。所有的时序必须有最短60μs的持续期,在各个写周期之间必须有最短1μs的恢复期。
在数据总线由高电平变为低电平之后,DS18B20在15μs至60μs的时间间隙对总线采样,如果为“1”则向DS18B20写“1”, 如果为“0”则向DS18B20写“0”。如图3-2的上半部分。
对于主机产生写“1”时序时,数据线必须先被拉至低电平,然后被释放,使数据线在写时序开始之后15μs内拉至高电平。
对于主机产生写“1”时序时,数据线必须先被拉至低电平,且至少保持低电平60μs。
2.读时序
在数据总线由高电平变为低电平之后,数据线至少应保持低电平1μs,来自DS18B20的输出的数据在下降沿15μs后有效,所以在数据线保持低电平1μs之后,主机将数据线拉高,等待来自DS18B20的数据变化,在下降沿15μs之后便可开始读取DS18B20的输出数据。整个读时序必须有最短60μs的持续期。如图3-2的下半部分。读时序结束后数据线由上拉电阻拉至高电平。
图3-3 DS18B20传感器的读写时序
3.1.5 DS18B20获取温度程序流程图
DS18B20的读字节,写字节,获取温度的程序流程图如图3-3所示。
图3-4 DS18B20程序流程图
3.2 显示程序设计
显示电路是由四位一体的数码管来实现的。由于单片机的I/O口有限,所以数码管采用动态扫描的方式来进行显示。程序流程图如图3-4所示。
图3-5 显示程序流程图
3.3 按键程序设计
按键是用来设定上下限报警温度的。具体的程序流程图如图3-5所示。
图3-6 按键程序流程图
4实物制作及调试
制作好的实物如图4-1所示。
图4-1 数字温度计实物正面图
在做实物时出现了不少问题。比如本来是采用NPN型9013驱动蜂鸣器,但是在实际调试中蜂鸣器驱动不了,经多次试验,在三极管的基极电阻与单片机的接口处接一个1、2kΩ的上拉电阻就能驱动了。但考虑到单片机的I/O口默认状态时为高电平,这样一上电蜂鸣器就会响,所以将NPN型9013换成了PNP型的9012三极管,效果还不错。
5电子综合设计体会
经过将近一个月的设计、焊接、编程、调试,我们终于完成了数字温度计的设计,基本能够达到设计要求,而且还设计了一些其他功能,比可以开启或消除按键音功能,开机动画功能,查看报警上下限温度功能。
此次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我们所学到的知识运用到实践中去。在大学课堂的学习只是给我们灌输专业知识,而我们应把所学的知识应用到我们现实的生活中去。这次的设计不仅使我们将课堂上学到的理论知识与实际应用结合了起来,而且使我们对电子电路、电子元器件、印制电路板等方面的知识有了更进一步的认识,同时在软件编程、焊板调试、相关调试仪器的使用等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。此次单片机设计也为我们以后进行更复杂的单片机系统设计提供了宝贵的经验。
在本次设计的过程中,我们遇到不少的问题,刚开始焊好的板子下不进去程序,经过一再仔细的检查,才发现是在下载口处出了问题,由于焊盘口比较小,排针插不进去,最后使了很大力气才插进去,插进去后才发现坏了,结果在去排针的时候把焊盘给去下来了,最后只能在旁边将下载口引了出来。还有就是文章中提到的蜂鸣器驱动问题等等。经过此次的硬件制作与调试,锻炼了我们的动手实践能了。本次设计的另一个重点就是软件程序的设计,其中需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,有好多的东西,只有我们去试着做了,才能真正的掌握,只学习理论,有些东西是很难理解的,更谈不上掌握。
通过此次的综合设计,我们初步掌握了单片机系统设计的基本原理。充分认识到理论学习与实践相结合的重要性,对于书本上的很多知识,不但要学会,更重要的是会运用到实践中去。在以后的学习中,我们会更加注重实践方面的锻炼,多提高自己的动手实践能力。
参考文献
[1] 谭浩强.C程序设计(第三版).北京:清华大学出版社,2005.7 .
[2] 余发山,王福忠.单片机原理与应用技术.徐州:中国矿业大学出版社,2008.6 .
[3] 求是科技.单片机典型模块设计实例导航.北京:人民邮电出版社,2005.5 .
[4] 求是科技.8051系列单片机C程序设计完全手册.北京:人民邮电出版社,2006.4 .
[5] 于永,戴佳,刘波.51单片机C语言常用模块与综合系统设计实例精讲(第2版).北京:电子工业出版社,2008.10 .
[6]刘腾远.基于单片机的温度控制系统设计[J].科技经济导刊,2018(01):77-78.
[7]苏康友.基于51单片机的无线温度控制系统设计[J].电子技术与软件工程,2017(10):250-251.
[8]刘丰年.基于AT89C51的简易智能化加湿器设计[J].三门峡职业技术学院学报,2016,15(04):139-142.
[9]杨伟才.基于DS18B20的多点温度测量系统研究[J].山东工业技术,2016(24):266.
[10]严敏.基于单片机的智能温控系统的设计与实现[J].无锡职业技术学院学报,2016,15(03):61-64.
[11]吴嘉颖. 基于单片机的地铁低压设备触点温度监测系统的设计与实现[D].西南交通大学,2017.
[12]孙晓倩.基于51单片机的温度监测报警系统设计研究[J].赤峰学院学报(自然科学版),2015,31(24):24-26.
[13]仲霞.基于DS18B20的多点温度测量系统探讨[J].山东工业技术,2015(22):156.
[14]吕晓磊.基于单片机智能控温的仿真与设计[J].安徽电子信息职业技术学院学报,2015,14(03):34-37.
[15]贺争汉.基于51单片机的温度控制系统[J].黑龙江科技信息,2015(16):145.
[16]谭虹.智能型滑雪保温鞋温控系统的设计与实现[J].体育世界(学术版),2014(11):19-20.
[17]王云飞.DS18B20温度传感器的应用设计[J].电子世界,2014(12):355.
[18]刘金魁.基于DS18B20的数字测温系统[J].焦作大学学报,2014,28(02):99-100.
[19]杨丹丹,杨风,马慧卿.基于单片机的温度采集系统设计[J].山西电子技术,2014(03):19-21.
[20]曹美霞.单片机与数字温度传感器DS18B20的接口设计[J].电子制作,2014(11):9-10.
❷ 简述MCS-51单片机中断响应的过程
嘉鸿视频教学 www.study8.net.cn 专业提供211重点大学各类视频教育、教学资料 单片机技术(34讲)--吉林大学 赵宏伟 主讲 单片机及应用(32讲)--东南大学 刘其奇教授 先修课程 数字逻辑电路 计算机组成原理 接口技术 汇编语言 课程性质:应用型课程 前 言: 单片机在一块半导体材料上集成了CPU、存储器、I/O接口等各种功能部件,具有体积小、功耗低、价格便宜、功能强、可靠性好和使用方 便灵活的特点。单片机在工业控制、数据采集、智能化仪表、办公自动化以及家用电器方等各个领域中得到了越来越广泛的应用。 将单片机技术与测量控制技术相结合,可以使工业自动控制变得更方便、控制效果更佳。在机电一体化方面,单片机也发挥了它的特殊作 用,使许多传统产业发生了巨大的变化,使许多工业产品体积缩小,能耗降低,功能增加,操作方便。由于单片机在如此广泛的领域里获得了 应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,其中,MCS-51系列单片机以其优越的性能、成熟的技术和高可靠性,占领 了工业控制的主要市场。特别是在我国,〖WTBZ〗MCS-51系列单片机已成为单片机应用领域的主流。 课程简介: 本课程精选了单片机应用技术的基础知识、传感器与检测技术以及〖WTBZ〗PC微机控制技术的部分内容,并使之融为一体,在应用技术的 复合方面具有新意。 本课程以MCS-51系列的8位单片机为教学对象,介绍单片机的发展概况、原理及应用。全书共分14章,内容包括:单片机概述,〖WTBZ〗 MCS-51系列单片机的结构,〖WTBZ〗MCS-51系列单片机指令系统,程序设计基础,中断系统,〖WTBZ〗MCS-51系列单片机内部定时器/计数器及 其应用,串行接口,单片机应用系统扩展设计基础,模拟量输入输出接口技术,人机接口技术,功率接口技术,单片机应用系统设计技术,单 片机实用技术举例,新型单片机介绍。 本课程可作为高等院校电气信息类各专业“单片机原理及应用技术”课程的教程,同时可供有关工程技术人员参考。 教材目录: 第1章 单片机概述 1.1单片机发展概况 1.2单片机的分类 1.3单片机应用介绍 思考题与习题 第2章 MCS-5单片机的结构 2.1 MCS-51单片机的结构和引脚 2.1.1引脚定义及功能 2.1.2 MCS-51单片机的基本组成 2.2 8051单片机存储器结构及其用途 2.2.1 程序存储器 2.2.2 数据存储器地址空间 2.3 并行I/0口 2.3.1并行I/0口的结构 2.3.2 并行I/0口操作注意事项 2.4 时钟电路 2.4.1内部时钟电路 2.4.2 外部时钟电路 2.4.3 时钟与时序 2.5 复位电路 2.5.1单片机复位原理 2.5.2 复位电路 思考题与习题 第3章 MCS-51单片机指令系统 3.1指令格式和寻址方式 3.1.1指令格式 3.1.2 寻址方式 3.2指令系统 3.2.1寻址空间及符号注释 3.2.2 数据传送指令 3.2.3 算术运算指令 3.2.4 逻辑运算指令 3.2.5 控制转移指令 3.2.6 位操作指令 思考题与习题 第4章 程序设计基础 4.1 MCS-51单片机汇编语言的伪指令 4.2汇编语言程序的基本结构 4.3实用程序设计举例 4.3.1 数制转换程序 4.3.2 算术和逻辑运算类程序设计 4.3.3 查表程序设计 思考题与习题 第5章 中断系统 5.1 中断概念 5.2中断源与中断请求 5.3中断允许控制 5.4中断优先级控制 5.5中断响应与中断处理 思考题与习题 第6章 MCS-51单片机内部定时器/计数器及其应用 6.1 定时器的结构及工作原理 6.2定时器的控制 6.2.1工作模式寄存器TMOD 6.2.2 控制寄存器TCON 6.3 定时器的工作模式及其应用 6.3.1模式0及应用 6.3.2模式1及应用 6.3.3模式2及应用 6.3.4模式3及应用 6.3.5综合应用举例 思考题与习题 第7章 串行接口 7.1 串行通信概念 7.2 串行接口的工作方式 7.2.1串行接口的结构 7.2.2串行接口的工作方式 7.3 串行接口的波特率 7.4 串行接口的应用 7.4.1串行接口工作方式0的I/O扩展应用 7.4.2串行口的异步通信应用 思考题与习题 第8章 单片机应用系统扩展设计基础 8.1程序存储器扩展 8.1.1 EPROM程序存储器的扩展设计 8.1.2扩展E2PROM 8.2 数据存储器的扩展设计 8.2.1 数据存储器扩展举例 8.2.2 扩展数据和程序存储器综合举例 8.3 并行I/O扩展设计 8.3.1 简单的I/O扩展设计 8.3.2 8255可编程并行I/O接口扩展电路设计 8.3.3 8155可编程I/O接口扩展设计 8.3.4 串行口扩展I/O接口 8.4 外部中断扩展方法 8.4.1 利用定时器扩展外部中断源 8.4.2 中断加查询扩展中断源 思考题与习题 第9章 模拟量输入输出接口技术 9.1 模拟量输入接口技术概述 9.1.1 传感器技术 9.1.2 模拟量信号处理技术 9.2 A/D转换器的主要性能指标及分类 9.2.1 A/D转换器的主要性能指标 9.2.2 A/D转换器的分类 9.3 常用的A/D转换芯片 9.3.1 ADC0809 8位A/D转换器 9.3.2 AD574 12位A/D转换器及接口 9.3.3 双积分A/D转换器及接口技术 9.3.4 V/F转换器与单片机接口 9.4 D / A转换器及接口技术 9.4.1 D / A转换器的主要性能指标 9.4.2 D AC0832 8位D / A转换器 9.4.3 MCS-51单片机与12位D / A转换器DAC1208的接口 9.4.4 F / V转换电路 思考题与习题 第10章 人机接口技术 10.1 开关接口 10.1.1 机械式开关接口的基本应用 10.1.2 电子式开关接口的基本应用 10.2 键盘接口 10.2.1 硬件消除抖动法 10.2.2 软件消除抖动法 10.2.3 简单键盘接口 10.2.4 矩阵式键盘接口 10.2.5 BCD码拨盘接口 10.3 LED显示接口 10.3.1 发光二极管接口 10.3.2 LED数码管接口 10.4 LCD液晶显示接口 10.4.1 字段型LCD及其应用 10.4.2 图形式液晶显示驱动器 第11章 功率接口技术 11.1开关型接口 11.1.1 简单开关量输出接口 11.1.2 光电耦合接口 11.1.3 继电器接口 11.2电压调节接口 11.2.1 可控硅工作原理 11.2.2 可控硅在电压调节中的应用 11.2.3 固态继电器 思考题与习题 第12章 单片机应用系统设计技术 12.1设计原则与要求 12.2硬件设计要求 12.3软件设计要求 12.4 逻辑电平设计要求 12.5可靠性设计要求 12.6 印刷电路的设计要求. 12.7 电源系统的设计要求 12.8 单片机开发装置的选择 思考题与习题 第13章 单片机实用技术举例 13.1 智能化温度仪表的设计 13.2 PID智能控制器的设计 13.3单片机数字万用表的设计 13.4 电子血压计的设计 13.5 步进电机在精确走步中的应用 13.6 单片机在串行通信中的应用 13.7 单片机在气象参数测量中的应用 13.8 单片机在模糊控制中的应用 思考题与习题 第14章 新型单片机介绍 14.1 MSP430系列单片机 14.2 EM78P447S单片机 14.3 PIC系列单片机 14.4 AT89系列单片机 14.5 AVR系列单片机 14.6 其他系列单片机 思考题与习题
❸ MC9S12XS单片机原理及嵌入式系统开发的目录
第1章 嵌入式系统简介 1
1.1 嵌入式系统 1
1.1.1 系统 1
1.1.2 嵌入式系统 1
1.1.3 嵌入式系统的分类 2
1.2 嵌入式系统硬件 3
1.2.1 嵌入式微处理器 3
1.2.2 嵌入式微控制器 3
1.2.3 嵌入式DSP处理器 4
1.2.4 嵌入式片上系统 4
1.3 嵌入式系统软件 4
1.4 嵌入式操作系统 5
1.4.1 嵌入式操作系统的种类 5
1.4.2 嵌入式操作系统的发展 5
1.4.3 使用实时操作系统的必要性 6
1.4.4 实时操作系统的优缺点 6
1.5 嵌入式系统开发方法 6
第2章 Freescale HCS12和HCS12X系列单片机简介 8
2.1 HCS12系列单片机概述 8
2.1.1 HCS12系列单片机的命名规则 8
2.1.2 HCS12系列单片机简介 9
2.2 HCS12X系列单片机概述 10
2.2.1 HCS12X系列单片机主要特点 10
2.2.2 XGATE协处理器与主处理器的关系 11
2.2.3 XGATE的基本特性 12
2.2.4 典型S12X系列单片机简介 14
2.3 MC9S12XS128简介 15
2.3.1 MC9S12XS128性能概述 15
2.3.2 MC9S12XS128内部结构、主要特性及引脚 15
2.3.3 MC9S12XS128引脚功能 24
2.4 CPU12(X)核 27
2.4.1 CPU12(X)核特性 27
2.4.2 编程模型 27
2.5 MC9S12XS128的存储器映射 30
2.6 MC9S12XS128内部锁相环模块PLL 31
2.6.1 CRG时钟合成寄存器(SYNR) 32
2.6.2 CRG时钟参考分频寄存器(REFDV) 32
2.6.3 CRG时钟后分频寄存器(POSTDIV) 33
2.6.4 CRG标志寄存器(CRGFLG) 33
2.6.5 CRG时钟选择寄存器(CLKSEL) 34
2.6.6 CRG IPLL控制寄存器(PLLCTL) 35
2.6.7 CRG中断使能寄存器(CRGINT) 36
2.6.8 CRG IPLL模块应用实例 36
第3章 S12X指令系统 38
3.1 概述 38
3.2 S12X汇编指令的格式和符号说明 38
3.2.1 操作码和操作数 39
3.2.2 数据类型 39
3.2.3 数据表示方法 39
3.2.4 寄存器和存储器表示法 40
3.3 寻址方式(Addressing Mode) 40
3.3.1 隐含/固有寻址(Inherent Addressing,INH) 40
3.3.2 立即寻址(Immediate Addressing,IMM) 41
3.3.3 直接寻址(Direct Addressing,DIR) 42
3.3.4 扩展寻址(Extended Addressing,EXT) 42
3.3.5 相对寻址(Relative Addressing,REL ) 43
3.3.6 变址寻址(Indexed Addressing,IDX) 44
3.3.7 全局寻址(Global Page Index Register) 50
3.4 S12X汇编指令系统 50
3.4.1 数据传送指令 50
3.4.2 算术运算指令 58
3.4.3 逻辑运算指令 66
3.4.4 高级函数指令 71
3.4.5 程序控制指令 74
3.4.6 S12X控制指令 77
3.5 汇编程序伪指令 79
3.5.1 段定义指令 79
3.5.2 常量赋值指令 81
3.5.3 常量存储指令 82
3.5.4 分配变量指令 84
3.5.5 汇编控制指令 85
3.5.6 符号链接指令 85
第4章 C语言的嵌入式编程 87
4.1 编程语言的选择 87
4.2 C语言编程元素 88
4.2.1 全局变量和局部变量 88
4.2.2 头文件 88
4.2.3 编译预处理 89
4.2.4 数据类型 91
4.2.5 运算符 93
4.2.6 指针 95
4.2.7 条件语句、循环语句及无限循环语句 95
4.2.8 函数 98
4.3 C程序编译器与交叉编译器 101
4.4 CodeWarrior软件简介 102
4.4.1 CodeWarrior的安装 102
4.4.2 CodeWarrior使用简介 104
第5章 MC9S12XS输入/输出端口模块及其应用实例 110
5.1 输入/输出端口简介 110
5.2 输入/输出端口寄存器及设置 110
5.2.1 PORTA、PORTB、PORTE和PORTK 112
5.2.2 PORTT、PORTS、PORTM、PORTP、PORTH和PORTJ 114
5.2.3 A/D端口用做数字I/O口 116
5.3 输入/输出端口应用实例 118
5.3.1 控制输出设备LED实例 118
5.3.2 读取输入设备拨码开关状态实例 120
5.4 输入/输出端口在智能车系统中的应用 121
5.4.1 键盘接口设计 121
5.4.2 LED显示接口设计 122
5.4.3 LCD显示接口设计 124
第6章 MC9S12系列中断系统 129
6.1 MC9S12系列中断系统概述 129
6.1.1 复位 130
6.1.2 中断 131
6.2 MC9S12系列中断优先级 132
6.3 MC9S12系列中断程序应用实例 135
第7章 MC9S12XS系列脉宽调制模块及其应用实例 139
7.1 PWM模块概述 139
7.2 PWM模块结构组成和特点 139
7.3 PWM模块寄存器及设置 140
7.3.1 PWM使能寄存器(PWME) 141
7.3.2 PWM极性寄存器(PWMPOL) 142
7.3.3 PWM时钟选择寄存器(PWMCLK) 143
7.3.4 PWM预分频时钟选择寄存器(PWMPRCLK) 144
7.3.5 PWM居中对齐使能寄存器(PWMCAE) 145
7.3.6 PWM控制寄存器(PWMCTL) 146
7.3.7 PWM比例因子A寄存器(PWMSCLA) 148
7.3.8 PWM比例因子B寄存器(PWMSCLB) 148
7.3.9 PWM通道计数器(PWMCNT) 149
7.3.10 PWM通道周期寄存器(PWMPER) 149
7.3.11 PWM通道占空比寄存器(PWMDTY) 150
7.3.12 PWM关闭寄存器(PWMSDN) 152
7.4 PWM模块应用实例 153
7.5 PWM模块在智能车系统中的应用 155
7.5.1 应用PWM模块控制直流电动机 155
7.5.2 应用PWM模块控制伺服电动机 157
第8章 MC9S12XS128模/数转换模块及其应用实例 159
8.1 ATD模块概述 159
8.2 ATD模块结构组成和特点 159
8.3 ATD模块寄存器及设置 161
8.3.1 ATD控制寄存器0(ATDCTL0) 161
8.3.2 ATD控制寄存器1(ATDCTL1) 162
8.3.3 ATD控制寄存器2(ATDCTL2) 164
8.3.4 ATD控制寄存器3(ATDCTL3) 165
8.3.5 ATD控制寄存器4(ATDCTL4) 167
8.3.6 ATD控制寄存器5(ATDCTL5) 167
8.3.7 ATD状态寄存器0(ATDSTAT0) 169
8.3.8 ATD比较使能寄存器(ATDCMPE) 170
8.3.9 ATD状态寄存器2(ATDSTAT2) 170
8.3.10 ATD输入使能寄存器(ATDDIEN) 171
8.3.11 ATD比较大于寄存器(ATDCMPHT) 171
8.3.12 ATD转换结果寄存器(ATDDRn) 172
8.4 ATD模块应用实例 173
8.5 ATD模块在智能车系统中的应用 174
8.5.1 ATD模块在基于光电管路径识别方案中的应用 174
8.5.2 ATD模块在基于摄像头路径识别方案中的应用 176
第9章 MC9S12XS128定时器模块及其应用实例 180
9.1 TIM模块概述 181
9.2 TIM模块结构和工作原理 181
9.2.1 TIM模块结构 181
9.2.2 TIM模块工作原理 181
9.2.3 TIM模块寄存器 184
9.2.4 TIM模块中断系统 186
9.3 TIM模块的自由运行计数器和定时器基本寄存器及设置 187
9.3.1 自由运行主定时器与时钟频率设置 187
9.3.2 TIM模块基本寄存器及设置 188
9.4 TIM模块的输入捕捉功能及寄存器设置 191
9.4.1 TIM模块输入捕捉功能 192
9.4.2 与输入捕捉功能相关的寄存器及设置 192
9.5 TIM模块的输出比较功能及寄存器设置 195
9.5.1 TIM模块输出比较功能 195
9.5.2 与输出比较功能相关的寄存器及设置 196
9.6 TIM模块的脉冲累加器功能及寄存器设置 199
9.6.1 TIM模块脉冲累加器功能 199
9.6.2 与脉冲累加器相关的寄存器及设置 201
9.7 TIM模块应用实例 203
9.7.1 输入捕捉功能应用实例 203
9.7.2 输出比较功能应用实例 205
9.7.3 脉冲累加器功能应用实例 211
9.8 TIM模块在智能车系统中的应用 215
9.8.1 TIM模块输入捕捉功能在智能车系统中的应用 215
9.8.2 TIM模块脉冲累加器功能在智能车系统中的应用 215
第10章 MC9S12XS128周期性中断定时器模块及其应用实例 217
10.1 PIT模块概述 217
10.2 PIT模块结构和工作原理 217
10.2.1 PIT模块结构 217
10.2.2 PIT模块工作原理 218
10.3 PIT模块寄存器及设置 220
10.3.1 PIT控制和强制装载微定时寄存器(PITCFLMT) 221
10.3.2 PIT强制装载定时寄存器(PITFLT) 221
10.3.3 PIT通道使能寄存器(PITCE) 222
10.3.4 PIT复用寄存器(PITMUX) 222
10.3.5 PIT中断使能寄存器(PITINTE) 222
10.3.6 PIT超时标志寄存器(PITTF) 223
10.3.7 PIT微定时装载寄存器0和1(PITMTLD0/1) 223
10.3.8 PIT装载寄存器0~3(PITLD0~3) 223
10.3.9 PIT计数寄存器0~3(PITCNT0~3) 224
10.4 PIT模块应用实例 224
10.5 PIT模块在智能车系统中的应用 226
第11章 MC9S12XS系列串行通信接口模块及其应用实例 234
11.1 SCI模块概述 234
11.2 SCI模块结构组成和特点 234
11.3 SCI模块寄存器 235
11.3.1 SCI波特率寄存器(SCIBDH,SCIBDL) 236
11.3.2 SCI控制寄存器1(SCICR1) 237
11.3.3 SCI可选状态寄存器1(SCIASR1) 238
11.3.4 SCI可选控制寄存器1(SCIACR1) 239
11.3.5 SCI可选控制寄存器2(SCIACR2) 240
11.3.6 SCI控制寄存器2(SCICR2) 240
11.3.7 SCI状态寄存器1(SCISR1) 241
11.3.8 SCI状态寄存器2(SCISR2) 243
11.3.9 SCI数据寄存器(SCIDRH,SCIDRL) 244
11.4 SCI模块应用实例 244
11.5 SCI模块在智能车系统中的应用 248
第12章 MC9S12系列SPI和I2C模块及其应用实例 251
12.1 SPI模块 251
12.2 SPI模块结构组成和特点 252
12.3 SPI模块寄存器及设置 253
12.3.1 SPI控制寄存器1(SPICR1) 253
12.3.2 SPI控制寄存器2(SPICR2) 255
12.3.3 SPI波特率寄存器(SPIBR) 256
12.3.4 SPI状态寄存器(SPISR) 258
12.3.5 SPI数据寄存器(SPIDR:SPIDRH,SPIDRL) 260
12.4 SPI模块应用实例 260
12.5 I2C总线接口 262
12.5.1 I2C总线概述 262
12.5.2 I2C总线工作原理 263
12.6 I2C模块结构组成和特点 265
12.7 I2C模块寄存器及设置 266
12.7.1 I2C总线地址寄存器(IBAD) 267
12.7.2 I2C总线分频寄存器(IBFD) 267
12.7.3 I2C总线控制寄存器(IBCR) 268
12.7.4 I2C总线状态寄存器(IBSR) 269
12.7.5 I2C总线数据输入/输出寄存器(IBDR) 271
12.8 I2C模块在智能车系统中的应用 271
第13章 综合应用实例 275
13.1 概述 275
13.2 综合应用实例1 275
13.2.1 系统组成 275
13.2.2 A/D输入接口 276
13.2.3 显示接口 276
13.2.4 通信接口 277
13.2.5 应用软件设计 277
13.2.6 软件流程图 281
13.3 综合应用实例2 283
13.3.1 系统组成 283
13.3.2 MircoSD卡接口 283
13.3.3 通信接口 284
13.3.4 SD卡工作电源 284
13.3.5 应用软件设计 284
13.3.6 MircoSD卡应用软件设计 286
13.3.7 软件流程图 288
13.4 综合应用实例3 290
13.4.1 系统组成 291
13.4.2 A/D输入接口 291
13.4.3 显示接口 291
13.4.4 直流电动机驱动接口 291
13.4.5 测速输入信号调理电路 293
13.4.6 伺服电动机驱动接口 293
13.4.7 应用软件设计 293
13.4.8 软件流程图 295
13.5 综合应用实例4 297
13.5.1 系统组成 297
13.5.2 起始线信号检测方法 297
13.5.3 应用软件设计 299
13.5.4 软件流程图 300
附录A S12汇编指令系统汇总表 303
附录B S12汇编指令系统汇总表解释说明 317
附录C S12汇编指令机器码汇总表 322
附录D S12X汇编指令机器码汇总表解释说明 326
附录E HS12实验开发平台 327
参考文献 331
❹ 求“ATmega128单片机"学习资料!多谢 必加分 急急急!!!急急急!!!
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=836230&bbs_page_no=6&bbs_id=1000
ATmega128+RTL8019开发板 配套光盘 源程序 图纸等
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3278690&bbs_page_no=1&search_mode=1&search_text=ATmega128&bbs_id=1000
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=828003&bbs_page_no=1&search_mode=1&search_text=ATmega128&bbs_id=1000
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3281668&bbs_page_no=1&search_mode=1&search_text=ATmega128&bbs_id=1000
AVR ATmega128单片机C程序设计与实践 目录
第1章 AVR单片机概述1
1.1 AVR单片机简介1
1.2 哈佛结构与冯•诺伊曼结构1
1.3 RISC与CISC2
1.4 ISP简介2
第2章 ATmega128单片机概要4
2.1 ATmega128单片机结构和主要性能4
2.2 外部引脚7
2.3 AVR单片机CPU 内核8
2.4 ATmega128单片机的存储器11
2.5 同步串行口——SPI16
2.6 两线串行接口——TWI20
第3章 系统时钟和系统控制25
3.1 时钟选择25
3.2 晶体振荡器27
3.3 低频晶体振荡器27
3.4 外部RC振荡器28
3.5 标准的内部RC振荡器28
3.6 外部时钟29
3.7 定时器/计数器振荡器29
3.8 系统控制和复位29
3.9 看门狗定时器31
第4章 ATmega128 KIT 开发环境的设置33
4.1 ATmega128 KIT的组成33
4.2 编译器的下载及安装40
4.3 AVR ISP 软件的下载及安装45
4.4 PonyProg2000的设置48
第5章 I/O端口55
5.1 I/O端口的结构及功能55
5.2 与I/O端口相关的寄存器58
5.3 编译和程序下载59
5.4 硬件电路图60
5.5 实验 1——LED的移位62
5.6 实验 2——逐个熄灭LED63
5.7 实验 3——7段数码管显示数字64
第6章 外部中断65
6.1 中断概述65
6.2 与中断相关的寄存器65
6.3 硬件电路图67
6.4 实验 4——7段数码管显示数字68
6.5 实验5——没有防抖电路的INT069
6.6 实验 6——使用中断标志70
第7章 定时器/计数器72
7.1 定时器/计数器简介72
7.2 定时器/计数器0(8位)72
7.3 定时器/计数器1、3(16位定时器/计数器)77
7.4 定时器/计数器2(8位)86
7.5 输出比较调制器(OCM1C2)87
7.6 实验7——计数(溢出中断)89
7.7 实验8——计数(溢出标志)90
7.8 实验9——定时器(溢出中断)91
7.9 实验10——定时器(溢出标志)92
7.10 实验11——定时器(比较A匹配)93
第8章 7段数码管和按键95
8.1 7段数码管和 82C5595
8.2 硬件电路图98
8.3 实验12——7段数码管循环显示0~999
8.4 实验13——用7段数码管/显示与被按下的按键相对应的数字100
8.5 实验14——7段数码管2显示与被按下的按键相对应的数字104
8.6 实验15——7段数码管1和2分别显示与被按下按键相对应的数字108
第9章 LED 点阵112
9.1 LED点阵简介112
9.2 LED电光板112
9.3 硬件电路图114
9.4 实验 16——显示绿色、红色和橙色115
9.5 实验 17——显示文字116
9.6 实验18——移动文字118
第10章 TEXT LCD122
10.1 Text LCD简介122
10.2 Text LCD的种类123
10.3 LCD的结构和原理123
10.4 Text LCD模块的构成124
10.5 硬件电路图131
10.6 实验19——显示一个个文字131
10.7 实验20——显示一行文字133
10.8 实验21——移动句子135
第11章 步进电动机139
11.1 步进电动机简介139
11.2 步进电动机的分类140
11.3 步进电动机的驱动141
11.4 步进电动机驱动元件148
11.5 步进电动机相关的用语151
11.6 步进电动机的控制153
11.7 硬件电路图153
11.8 实验 22——步进电动机正向旋转154
11.9 实验 23——步进电动机正向,逆向旋转155
11.10 实验 24——步进电动机和中断键157
第12章 RC 伺服电动机159
12.1 RC 伺服电动机简介159
12.2 RC 伺服电动机的内部组成159
12.3 RC 伺服电动机的控制160
12.4 硬件电路图161
12.5 实验25——伺服电动机的正向旋转和逆向旋转162
12.6 实验 26——伺服电动机旋转相应的角度163
12.7 实验 27——伺服电动机速度控制164
第13章 直流电动机167
13.1 直流电动机简介167
13.2 直流电动机的驱动170
13.3 电动机旋转感应装置177
13.4 编译计数器的设计178
13.5 硬件电路图183
13.6 硬件电路图基础控制理论184
13.7 实验28——电动机的正向旋转和逆向旋转187
13.8 实验 29——电动机速度控制188
13.9 实验 30——PWM控制190
第14章 A/D转换器192
14.1 A/D转换器的结构及功能192
14.2 与A/D转换器相关的寄存器192
14.3 模拟比较器196
14.4 硬件电路图198
14.5 实验31——用7段数码管显示温度值199
14.6 实验32——用LCD显示温度和MIC值200
14.7 实验33——10位分辨率测试203
14.8 实验34——ADC开关测试206
第15章 IR 传感器210
15.1 红外线传感器概要210
15.2 硬件电路图212
15.3 实验35——中央测距传感器的测试213
15.4 实验36——通过传感器的输入使步进电动机旋转215
15.5 实验37——3组测距传感器的检测217
15.6 实验38——光电传感器的 OnOff测试220
15.7 实验39——光电传感器的光量测试222
第16章 USART227
16.1 USART的结构及功能227
16.2 与USART相关的寄存器229
16.3 通信与超级终端的使用及USB驱动安装方法232
16.4 实验40——与PC的串行通信1238
16.5 实验41——与PC的串行通信2242
16.6 实验42——与PC的USB通信253
第17章 音频输出265
17.1 音频输出简介265
17.2 硬件电路图267
17.3 实验43——输出声音268
17.4 实验44——利用定时器输出声音269
17.5 建立Voice头文件271
17.6 头文件的使用方法275
www.ouravr.com
有很多可以看看
❺ 单片机原理与应用的目录
第1章 单片微型计算机概述
1.1 单片微型计算机发展概况
1.2 微型计算机系统的概念
1.3 单片机的特点和种类
习题1
第2章 MCS-51单片机硬件结构
2.1 单片机的基本结构
2.2 单片机的引脚及片外总线结构
2.3 单片机的存储器配置
2.4 CPU的时钟及铺助电路
习题2
第3章 MCS-51 单片机指令系统
3.1 概述
3.2 寻址方式
3.3 数据传送类指令
3.4 算术运算类指令
3.5 逻辑运算和移位指令
3.6 控制转移指令
3.7 位操作类指令
习题3
第4章 汇编语言程序设计
4.1 概述
4.2 顺序程序设计
4.3 分支程序设计
4.4 循环程序设计
4.5 子程序设计
4.6 常用程序举例
习题4
第5章 单片机应用小系统
5.1 单片机系统扩展的必要性
5.2 几个基本的概念
5.3 应用小系统介绍
5.4 接口电路综述
习题5
第6章 中断系统与定时/计数器
6.1 中断系统结构及管理
6.2 定时器/计数器结构特点与控制
6.3 定时器/计数器计数器及中断系统的综合应用
习题6
第7章 串行通信及其接口
7.1 串行口基本概念与串行口控制寄存器
7.2 串行通信工作方式
习题7
第8章 单片机的基本扩展
8.1 程序存储器扩展
8.2 数据存储器扩展
8.3 输入/输出口扩展技术
习题8
第9章 单片机的键盘显示接口技术
……
第10章 单片机与A/D和D/A转换器接口
第11章 单片机应用系统设计
参考文
❻ 求单片机原理及接口技术 试题及答案
单片机模拟试卷001
一、选择题(每题1分,共10分)
1.8031单片机的( )口的引脚,还具有外中断、串行通信等第二功能。
a)P0 b)P1 c)P2 d)P3
2.单片机应用程序一般存放在( )
a) RAM b)ROM c)寄存器 d)CPU
3.已知某数的BCD码为0111 0101 0100 0010 则其表示的十进制数值为( )
a) 7542H b) 7542 c) 75.42H d) 75.42
4.下列指令中不影响标志位CY的指令有( )。
a)ADD A,20H b)CLR c)RRC A d)INC A
5.CPU主要的组成部部分为( )
a)运算器、控制器 b)加法器、寄存器
c)运算器、寄存器 d)运算器、指令译码器
6.INTEL 8051 CPU是( )位的单片机
a) 16 b)4 c)8 d)准16
7.8031复位后,PC与SP的值为( )
a )0000H,00H b) 0000H,07H c) 0003H,07H d)0800H,00H
8.当需要从MCS-51单片机程序存储器取数据时,采用的指令为( )。
a)MOV A, @R1 b)MOVC A, @A + DPTR
c)MOVX A, @ R0 d)MOVX A, @ DPTR
9.8031单片机中既可位寻址又可字节寻址的单元是( )
a)20H b)30H c)00H d)70H
10.下列哪条指令是正确的( )
a) PUSH R2 b) ADD R0,A
c) MOVX A @DPTR d) MOV @R0,A
二、填空题(每空1分,共30分)
1.一个完整的微机系统由 和 两大部分组成。
2.8051 的引脚RST是____(IN脚还是OUT脚),当其端出现____电平时,8051进入复位状态。8051一直维持这个值,直到RST脚收到____电平,8051才脱离复位状态,进入程序运行状态,从ROM H单元开始取指令并翻译和执行。
3.半导体存储器分成两大类 和 ,其中 具有易失性,常用于存储 。
4.求十进制数-102的补码(以2位16进制数表示),该补码为 。
5.PC存放_______________,具有___________特性。在8051中决定程序执行顺序的是PC还是DPTR? 它是______位? (是,不是)SFG?
6.123= B= H。
7.8051内部有 并行口,P0口直接作输出口时,必须外接 ;并行口作输入口时,必须先 ,才能读入外设的状态。
8.MCS-51的堆栈只可设置在 ,其最大容量为 ,存取数据的原则是 。堆栈寄存器SP是 位寄存器,存放 。
9.中断处理的全过程分为以下3个段: 、 、 。
10.定时和计数都是对 进行计数,定时与计数的区别是
。
三、判断题(对者打√,错者打×,并改正,每题1分,共10分)
1 中断服务程序的最后一条指令是RET。
2 存储器分成内存和外存两大部分,其中外存可以直接与CPU交换信息。
3 P2口既可以作为I/O使用,又可以作地址/数据复用口使用。
4 在中断响应阶段CPU一定要做如下2件工作:保护断点和给出中断服务程序入口地址。
5 RC A为循环左移指令。
6 MOV A,30H的源操作数为立即寻址方式。
7 MOV A,@A+DPTR是一条查表指令。
8 MUL AB的执行结果是高8位在A中,低8 位在B中。
9 AJMP跳转空间最大可达到64KB 。
10 DPTR是由DPH和DPL两个8位特殊寄存器组成的。
四、简答题(每题5分,共15分)
1.MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少?
2.已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤)
3.MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。
五、作图题(10分)
用6264(8K*8)构成16K的数据存储系统。要求采用线选法产生片选信号,并计算6264的地址范围。
六、设计题(1题13分;2题12分,共25分)
1.某单片机控制系统有8个发光二极管。试画出89C51与外设的连接图并编程使它们由左向右轮流点亮。
2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。试画出8051与外设的连接图并编程实现上述要求。
单片机模拟试卷001答案
一、选择题(每题1分,共10分)
1. D 2. B 3. B 4. D 5. A 6. C 7. B 8. B 9. A 10. D
二、填空题(每空1分,共30分)
1.一个完整的微机系统由硬件和软件两大部分组成。
2.8051 的引脚RST是IN脚(IN脚还是OUT脚),当其端出现高电平时,8051进入复位状态。8051一直维持这个值,直到RST脚收到低电平,8051才脱离复位状态,进入程序运行状态,从ROM 0000 H单元开始取指令并翻译和执行。
3.半导体存储器分成两大类:RAM ROM,其中 RAM 具有易失性,常用于存储 临时性数据 。
4.求十进制数-102的补码(以2位16进制数表示),该补码为¬¬¬¬ 9AH 。
5.PC存放_CPU将要执行的指令所在的ROM单元的地址,具有自动加1特性。在8051中决定程序执行顺序的是PC还是DPTR PC ?它是16位?不是(是,不是)SFG?
6.123= 01010010 B= 52 H。
7.8051内部有 4 个并行口,P0口直接作输出口时,必须外接 上拉电阻 ;并行口作输入口时,必须先 将口锁存器置1 ,才能读入外设的状态。
8.MCS-51的堆栈只可设置在 内RAM低128B区 ,其最大容量为 128B ,存取数据的原则是 先进后出 。堆栈寄存器SP是 8 位寄存器,存放 堆栈栈顶的地址 。9.中断处理的全过程分为以下3个段: 中断请求 、 中断响应 、 中断服务 。
10.定时和计数都是对 脉冲 进行计数,定时与计数的区别是 定时是对周期已知的脉冲计数;计数是对周期未知的脉冲计数 。
三、判断题(对者打√,错者打×,并改正,每题1分,共10分)
1 中断服务程序的最后一条指令是RETRETI。×
2 存储器分成内存和外存两大部分,其中外内存可以直接与CPU交换信息。×
3 P2口既可以作为I/O使用,又可以作地址/数据复用口使用。√
4 在中断响应阶段CPU一定要做如下2件工作:保护断点和给出中断服务程序入口地址。√
5 LCRL A为循环左移指令。×
6 MOV A,30H的源操作数为立即直接寻址方式。
7 MOVMOVC A,@A+DPTR是一条查表指令。×
8 MUL AB的执行结果是高低8位在A中,低高8 位在B中。×
9 AJMP跳转空间最大可达到642KB 。
10 DPTR是由DPH和DPL两个8位特殊寄存器组成的。 √
四、简答题(每题5分,共15分)
1.MCS51的中断系统有几个中断源?几个中断优先级?中断优先级是如何控制的?在出现同级中断申请时,CPU按什么顺序响应(按由高级到低级的顺序写出各个中断源)?各个中断源的入口地址是多少?
答:MCS51单片机有5个中断源,2个中断优先级,中断优先级由特殊功能寄存器IP控制,在出现同级中断申请时,CPU按如下顺序响应各个中断源的请求:INT0、T0、INT1、T1、串口,各个中断源的入口地址分别是0003H、000BH、0013H、001BH、0023H。
2.已知单片机系统晶振频率为6MHz,若要求定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是多少?TMOD的值是多少?TH0=?TL0=?(写出步骤)
答:定时值为10ms时,定时器T0工作在方式1时,定时器T0对应的初值是1388H
TMOD的值是00000001B,TH0=13H;TL0=88H。
3.MCS51系列单片机的内部资源有哪些?说出8031、8051和8751的区别。
答:MCS51系列单片机上有1个8位CPU、128B的RAM、21个SFR、4个并行口、1个串行口、2个定时计数器和中断系统等资源。8031、8051和8751的区别是8031内无ROM;8051内有4KB的掩膜ROM;8751内有4KB的EPROM。
五、作图题(10分)
答:WR接6264的WE
RD接6264的OE
AB0---AB12接6264的A0---A12
DB0—DB7接6264的D0—D7
AB15、AB14分别接Y0和Y1
地址:0000H---1FFFH;2000H---3FFFH
六、设计题
1.某单片机控制系统有8个发光二极管。试画出89C51与外设的连接图并编程使它们由右向左轮流点亮。
答: 图 (5分) 构思 (3分)
MOV A,#80H (1分)
UP:MOV P1,A (1分)
RR A (2分)
SJMP UP (1分)
2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。试画出8051与外设的连接图并编程实现上述要求。
答:图 (5分) 构思 (3分)
程序(4分)
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP AINT0
ORG 0013H
LJMP BINT1
MAIN: MOV IE,#83H
SETB IT0
SETB IT1
MOV R0,#00H
MOV DPTR,#TAB
UP: MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
SJMP UP
AINT0: INC R0
CJNE R0,#10,AINT01
MOV R0,#0
AINT01: RETI
BINT1: DEC R0
CJNE R0,#0FFH,BINT11
MOV R0,#9
BINT11: RETI
❼ 单片机中TCON和TMOD寄存器如何控制
单片机中TCON控制器用于控制定时器的启动、停止和溢出标志以及外部中断触发方式等。TMOD控制器,用于控制定时器T1和T0的操作模式及工作方式。高四位控制定时器1,低四位控制定时器0。
TCON控制器由高到低每个位都有定义:
1、TF1(8FH)、TF0(8DH)位分辨是定时器1和0的溢出标志。定时器产生溢出时,硬件自动置“1”,并可申请中断,进入中断服务程序后,由硬件自动清0。也可以作为程序查询标志位,查询方式下软件清零。
2、TR1(8EH)和TR0(8CH):为定时器1和0的启动控制位。软件清零定时器停止工作,定时器启动时该为置“1”。
3、IE1(8BH)和IE0(89H):外部中断/(INT1)、外部中断/(INT0)的中断请求标志位,外部中断源有请求时置“1”,由触发方式设置复位;
4、IT1和IT0:外部中断1和0,触发方式选择位。为0是电平触发方式,为1是边沿触发方式。
TMOD控制器每个位定义:
其中:GATE(D7,D3)是门控位,用来控制定时器启动操作方式。为0由软件控制位控制,为1外部中断引脚和软件控制位共同控制。
C/(/T)(D6,D2)功能选择位,为0是定时器工作方式,为1是计数器工作方式;
M1(D5、D1)M0(D4、D0)操作模式控制位:00模式0,13位计数器,TLi只用低5位;01 模式1,16位计数器;10 模式2 ,8位自动重装计数器;11模式3 ,T停止计数,T0分成2个独立的8位计数器。
TMOD不可以位寻址,只能用字节指令操作,TCON可以位寻址。
(7)单片机原理第6章扩展阅读
MCS-51单片机存储器结构详解
MCS-51单片机存储器采用哈佛结构(har-vard),在物理结构上分为程序存储器空间和数据存储器空间,细分为:片内、片外程序存储器和片内、片外数据存储器从图中可看出,这4个存储空间存在地址冲突问题:
数据存储器与程序存储器的64KB地址空间重叠;程序存储器中片内与片外的低4KB地址重叠;数据存储器中片内与片外最低的256B(8031仅有低128B)地址重叠。在程序存储器中,片内地址0000日一OOZA日的存储空间,留给系统使用。
片内数据存储器共256B地址空间,分为低128B和高128B。低128B又分为工作寄存器区、位寻址区和用户RAM区;高128B又叫特殊功能寄存器,这些寄存器的功能具有专门的规定,用户不能修改其结构。存储器中共有11个可位寻址的位地址。其中,片内数据存储器中有128个;特殊功能寄存器中有83个。
❽ 急求 单片机原理与技术 周明德 课后习题答案
第1章 作 业 答 案
1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?
解:
把CPU(运算器和控制器)用大规模集成电路技术做在一个芯片上,即为微
处理器。微处理器加上一定数量的存储器和外部设备(或外部设备的接口)构成了
微型计算机。微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形
成了微型计算机系统。
1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?
解:
CPU主要由起运算器作用的算术逻辑单元、起控制器作用的指令寄存器、指
令译码器、可编程逻辑阵列和标志寄存器等一些寄存器组成。其主要功能是进行算
术和逻辑运算以及控制计算机按照程序的规定自动运行。
1.3 微型计算机采用总线结构有什么优点?
解:
采用总线结构,扩大了数据传送的灵活性、减少了连线。而且总线可以标准
化,易于兼容和工业化生产。
1.4 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用
一套总线或者合用部分总线,那么要靠什么来区分地址和数据?
解:
数据总线是双向的(数据既可以读也可以写),而地址总线是单向的。
8086CPU为了减少芯片的引脚数量,采用数据与地址线复用,既作数据总线也作为
地址总线。它们主要靠信号的时序来区分。通常在读写数据时,总是先输出地址
(指定要读或写数据的单元),过一段时间再读或写数据。
1.8在给定的模型中,写出用累加器的办法实现15×15的程序。
解:
LD A, 0
LD H, 15
LOOP:ADD A, 15
DEC H
JP NZ, LOOP
HALT
第 2 章 作 业 答 案
2.1 IA-32结构微处理器直至Pentillm4,有哪几种?
解:
80386、30486、Pentium、Pentium Pro、Peruium II 、PentiumIII、Pentium4。
2.6 IA-32结构微处理器有哪几种操作模式?
解:
IA一32结构支持3种操作模式:保护模式、实地址模式和系统管理模式。操
作模式确定哪些指令和结构特性是可以访问的。
2.8 IA-32结构微处理器的地址空间如何形成?
解:
由段寄存器确定的段基地址与各种寻址方式确定的有效地址相加形成了线性地址。若末启用分页机制,线性地址即为物理地址;若启用分页机制,则它把线性地址转为物理地址。
2.15 8086微处理器的总线接口部件由哪几部分组成?
解:
8086微处理器中的总线接口单元(BIU)负责CPU与存储器之间的信息传
送。具体地说,BIU既负责从内存的指定部分取出指令,送至指令队列中排队
(8086的指令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执
行指令时所需的操作数。执行单元(EU)负责执行指令规定的操作。
2.16 段寄存器CS=120OH,指令指针寄存器IP=FFOOH,此时,指令的物理地址为
多少?
解:
指令的物理地址=12000H+FFOOH=21FOOH
第 3 章 作 业 答 案
3.1分别指出下列指令中的源操作数和目的操作数的寻址方式。
(1)MOV SI, 30O
(2)MOV CX, DATA[DI]
(3)ADD AX, [BX][SI]
(4)AND AX, CX
(5)MOV [BP], AX
(6)PUSHF
解:
(l)源操作数为立即寻址,目的操作数为寄存器寻址。
(2)源操作数为变址寄存器加位移量寻址,目的操作数为寄存器寻址。
(3)源操作数为基址加变址寻址,目的操作数为寄存器寻址。
(4)源操作数和目的操作数都为寄存器寻址。
(5)源操作数为寄存器寻址,目的操作数为寄存器间接寻址。
(6)为堆栈操作。
3.2 试述指令MOV AX,2000H和MOV AX,DSz[2000H]的区别。
解:前一条指令是立即寻址,即把立即数2000H传送至寄存器AX。后一条指令
是直接寻址,是把数据(DS)段中的地址为200OH单元的内容传送至寄存器AX。
3.3 写出以下指令中内存操作数的所在地址。
(1)MOV AL, [BX+10]
(2)MOV [BP+10], AX
(3)INC BYTE PTR[SI十5]
(4)MOV DL, ES:[BX+SI]
(5)MOV BX , [BP+DI+2]
解:
(1)数据段BX+10单元。
(2)堆栈段BP+10单元。
(3)数据段SI+5字节单元。
(4)附加段(ES段)BX+SI单元。
(5)堆栈段BP+DI+2单元。
3.4 判断下列指令书写是否正确。
(1)MOV AL, BX
(2)MOV AL, CL
(3)INC [BX]
(4)MOV 5, AL
(5)MOV [BX], [SI]
(6)M0V BL, OF5H
(7)MOV DX, 2000H
(8)POP CS
(9)PUSH CS
解:
(l)不正确,AL与BX数据宽度不同。
(2)正确。
(3)不正确,因为不明确是增量字节还是字。
(4)不正确,立即数不能作为目的操作数。
(5)不正确,因为不明确要传送的是字节还是字。
(6)正确。
(7)正确。
(8)不正确,CS不能作为:pop指令的操作数。
(9)不正确,CS不能作为PUSH指令的操作数。
3.5 设堆钱指针SP的初值为1000H,AX=2000H, BX=3000H,试问:
(1)执行指令PUSH AX后SP的值是多少?
(2)再执行PUSH BX及POP AX后,SP、AX和BX的值各是多少?
解:
(1) SP=OFFEH。
(2) SP=OFFEH; AX=3000H, BX=3000H。
3.6要想完成把[3000H]送[2000H]中,用指令:
MOM [200OH], [300OH]
是否正确?如果不正确,应该用什么方法实现?
解: 不正确。
正确的方法是:
MOV AL, [300OH]
MOV [2000H], AL
3.7 假如想从200中减去AL中的内容,用SUB 200,AL是否正确?如果不正确,应该
用什么方法?
解:不正确。
正确的方法是:
MOV BL, 200
SUB BL, AL
3.8 试用两种方法写出从8OH端口读入信息的指令。再用两种方法写出从4OH口输
出10OH的指令。
解:
(1)IN AL, 80H
(2)MOV DX, 8OH
IN AL, DX
(3)MOV, AL, lOOH
OUT 40H, AL
4)MOV AL, 10OH
MOV DX,4OH
OUT DX, AL
3.9假如:AL=20H,BL=1OH,当执行CMP AL,BL后,问:
(1)AL、BL中的内容是两个无符号数,比较结果如何?影响哪儿个标志位?
(2)AL、BL中的内容是两个有符号数,结果又如何,影响哪几个标志位?
解:
(l)AL=2OH,BL=1OH,O=0,S=0,Z=0,A=0,P=0,C=0。
(2)因为两个都是符号正数,其结果与(l)相同。
3.10 若要使AL×10,有哪几种方法,试编写出各自的程序段?
解:
(1)使用乘法指令:
MOV BL,10
MUL BI,
(2)使用移位指令:
SHL AL,1
MOV BL,AL
SHL AL, 2
ADD AL,BL
(3)使用加法指令:
ADD AL,AL
MOV BL, AL
ADD AL, AL
ADD AL, AL
ADD AL, BL
3.11 8086汇编语言指令的寻址方式有哪几类?哪种寻址方式的指令执行速度最快?
解:寻址方式分为:立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻
址方式。其中,寄存器操作数寻址方式的指令执行速度最快。
3.12 在直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段寄存器指出段地址,指令中应该如何表示?
解:
默认的数据访问,操作数在DS段;堆栈操作在SS段;串操作源操作数(SI)在DS段,目的操作数(DI)在ES段;用BP作为指针在SS段。如果要显式地指定段地址,则在操作数中规定段寄存器。例如:
MOV AX, ES:(BX+10H)
3.13 在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么如何确定段地址?
解:
在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,段地址是
隐含约定的,也就是隐含地选择段寄存器。如操作类型为指令,则指定代码段寄
存器CS,如操作类型为堆栈操作,则指定堆找段寄存器SS,…,如表3-1中所示。
当需要超越约定时,通常用段替代前缀加冒号":"来表示段超越,它允许程序设计者偏离任何约定的段。
例如:
MOV ES:〔BX],AX
这时数据将从寄存器EAX传送至附加段中由EBX寻址的存储单元,而不是传送
到数据段中。
3.14 采用寄存器间接寻址方式时,BX、BP、SI、DI分别针对什么情况来使用?这4个寄存器组合间接寻址时,地址是怎样计算的?请举例说明。
解: 在寄存器间接寻址方式下,BX和BP作为间址寄存器使用,而SI、DI作为
变址寄存器使用。除BP间址默认的段为堆栈段,其他的都默认为数据段。它们
都可以单独使用,或加上偏移量或组合使用。如:
[BX +n]
LBP +n]
[SI +n]
[DI +n]
[BX +SI +n]
[BX +DI +n]
[BP +SI +n]
[BP +DI +n]
3.15 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行
的具体操作:
MOV BYTE PTR[BP],200
MOV WORD PTR[BX],2000
解:前一条指令是把立即数(应是字节)200,传送至堆栈段(BP的默认段〉偏移
量由BP规定的字节单元,地址为:52000H+620OH=58200H
第二条指令是把立即数.2000,传送至数据段(BX的默认段)偏移量由BX规定的
字单元,地址为:21000H+1400H = 22400H。
3.16 使用堆钱操作指令时要注意什么问题?传送指令和交换指令在涉及内存操作数时应该分别要注意什么问题?
解:使用堆栈指令可以把内存单元作为一个操作数(从内存到内存)。但堆栈固定在堆栈段且只能由SP指向。且堆栈操作要修改堆核指针。MOV指令不能实现内存单元间的数据传送。XCHG指令是交换,有一个操作数必须是寄存器。
3.17下面这些指令中哪些是正确的?哪些是错误的?若是错误的,请说明原因。
(1)XCHG CS, AX
(2)MOV [BX], [1000]
(3)XCHG BX, IP
(4)PUSH CS
(5)POP CS
(6)IN BX, DX
(7)MOV BYTE[BX], 100O
(8)MOV CS, [1000]
解:
(l)错误,CS不能交换。
(2)错误,MOV指令不能在内存间传送。
(3)错误,IP不能交换。
(4)错误,CS可以作为PUSH指令的操作数。
(5)错误,CS可以作为POP指令的操作数。
(6)错误,IN指令的目的操作数是累加器。
(7)错误,目的操作数是字节单元。
(8〉错误,CS不能作为MOV指令的目的操作数。
3.18 以下是格雷码的编码表,
O 0000
1 0001
2 0011
3 0010
4 0110
5 0111
6 0101
7 0100
8 1100
请用换码指令和其他指令设计一个程序段,以实现由格雷码向ASCII码的转换。
解:
MOV BX,TABLE
MOV SI,ASCII_TAB
MOV AL,0
MOV CX,10
TRAN: XLAT TABLE
MOV DL,AL
ADD DL,30H
MOV [SI],DL
INC AL
LOOP TRAN
3.19 使用乘法指令时,特别要注意先判断是用有符号数乘法指令还是用无符号数乘法指令,这是为什么?
解:因为有符号数和无符号数,其数的乘法是一样的。但结果的符号取决于两
个操作数的符号。
3.20 字节扩展指令和字扩展指令一般用在什么场合?举例说明。
解:主要用于字节相除和字相除之前,把被除数扩展为两倍宽度的操作数。
3.21 什么叫BCD码?什么叫组合的BCD码?什么叫非组合的BCD码?8086汇编语言在对BCD码进行加、减、乘、除运算时,采用什么方法?
解:BCD码为十进制编码的二进制数。组合的BCD数是把两位BCD加在一个字节中,高位的在高4位。非组合的BCD码是把一位BCD数放在一个字节的低4位,高4位为0。8086在BCD加、减和乘法运算以后用BCD调整指令把结果调整为正确的BCD数。在BCD除法之前先用BCD调整指令再做除法.
3.22 用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体地讲,在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?
解:因为8086指令把操作数作为二进制数进行二进制运算,要得到正确的BCD结果,需要进行调整。在加、减、乘法指令之后加上BCD调整指令,而在除法指令之前先用BCD调整指令再用除法指令。
第4章 作业答案
4.1 在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:
MOV AL, 1OH
MOV CX, 100OH
MOV BX , 2000H
MOV [CX],AL
XCHG CX, BX
MOV DH, [BX]
MOV DL, 01H
XCHG CX, BX
MOV [BX],DL
HLT
解:寄存器及存储单元的内容如下:
AL = 1OH
BL = OOH
BH = 2OH
CL = OOH
CH = 1OH
DH = 1OH
(10O0H) = lOH
(200OH) = 0lH
2.要求同题4.1,程序如下:
MOV AL, 50H
MOV BP, 100OH
MOV BX, 200OH
MOV [BP], AL
MOV DH, 20H
MOV [BX], DH
MOV DL, OlH
MOV DL, [BX]
MOV CX, 300OH
HLT
解:寄存器及存储单元的内容如下:
AL = 5OH
BL = OOH
BH = 20H
CL = OOH
CH = 30H
DL = 20H
DH = 2OH
BP = 100OH
(10OOH) = 5OH
(20OOH) = 20H
4.3 自1000H单元开始有一个100个数的数据块,若要把它传送到自200OH开始的存
储区中去,可以采用以下3种方法实现,试分别编制程序以实现数据块的传送。
(l)不用数据块传送指令
(2)用单个传送的数据块传送指令
(3)用数据块成组传送指令。
解:
(1) LEA SI, 1OOOH
LEA DI, 200OH
MOV CX, 100
L1: MOV AX, [SI]
MOV [DI], AX
LOOP Ll
HLT
(2) LEA SI, 100OH
LEA DI, 2000H
MOV CX, 100
CLD
L1: MOVSB
LOOP L1
HLT
(3) LEA SI, 100OH
LEA DI, 200OH
MOV CX, 100
CLD
REP MOVSB
HLT
4.4 利用变址寄存器,编写一个程序,把自1000H单元开始的100个数传送到自1070H
开始的存储区中去。
解:
LEA SI, 100OH
LEA DI, 1070H
MOV CX, 100
CLD
REP MOVSB
HLT
4.5 要求同题4.4,源地址为2050H,目的地址为2000H,数据块长度为50.
解:
LEA SI, 205OH
LEA DI, 200OH
MOV CX, 50
CLD
REP MOVSB
HLT
4.6 编写一个程序,把自100OH单元开始的100个数传送'至105OH开始的存储区中
(注意:数据区有重叠)。
解:
LEA SI, 100OH
LEA DI , 1050H
ADD SI, 63H
ADD DI, 63H
MOV CX, 100
STD
REP MOVSB
HLT
4.7 在自0500H单元开始,存有100个数。要求把它传送到1000H开始的存储区中,
但在传送过程中要检查数的值,遇到第一个零就停止传送。
解:
LEA SI, 050OH
LEA DI, 10OOH
MOV CX, 100
N1: MOV AL, [SI]
CMP AL, 0
JZ N2
MOV [DI], AL
INC SI
INC DI
LOOP N1
N2: HLT
4.14若在0500H单元中有一个数
(1)利用加法指令把它乘2,且送回原存储单元(假定X×2后仍为一个字节);
(2)X×4;
(3)X×10(假定X×l0≤255).
解:
(1) LEA BX, 050OH
MOV AL, [BX]
ADD AL, AL
MOV [BX], AL
(2) LEA BX, 0500H
MOV AL, [BX]
ADD AL, AL
ADD AL, AL
MOV [BX], AL
(3) LEA BX, 050OH
MOV AL, [BX]
ADD AL, AL
MOV DL, AL
ADD AL, AL
ADD AL, AL
ADD AL, DL
MOV [BX], AL
第 5 章 作业答案
5.1 总线周期的含义是什么?8086/8088CPU的基本总线周期由几个时钟组成?如果一个CPU的时钟频率为8MHz,那么,它的一个时钟周期是多少?一个基本总线周期是多少?如果主频为5MHz呢?
解: CPLI访问总线(从内存储器或I/0端口读/写字节或字)所需的时间称为总线周期。8086/8088CPU的基本总线周期由4个时钟组成。若CPU的时钟频率为8(5)MHz,时钟周期为1/8MHz=125(1/5MHz=2O)ns,基本总线周期为4×125(200)ns=500(800)ns
5.2 在总线周期的TI、T2、T3、T4状态,CPU分别执行什么动作?什么情况下需要插入
等待状态Tw? Tw在哪儿插入? 怎样插入?
解: 下面以存储器读为例进行说明。
在Tl周期:输出地址信号、地址锁存允许信号、内存或I/O端口访问控制信号;
在T2周期:CPIJ开始执行数据传送操作,此时,8086CPU内部的多路开关进行切换,将地址/数据线AD15~AD0上的地址撤销,切换为数据总线,为读写数据作准备。8288总线控制器发出数据总线允许信号和数据发送/接收控制信号DT/R允许数据收发器工作,使数据总线与8086CPU的数据线接通,并控制数据传送的方向。同样,把地址/状态线A19/S6~A16/S3切换成与总线周期有关的状态信息,指示若干与周期有关的情况。
在T3周期:开始的时钟下降沿上,8086CPU采样READY线。如果READY信号有效(高电平),则在T3状态结束后进人TA状态。在T4状态开始的时钟下降沿,把数据总线上的数据读入CPU或写到地址选中的单元。
在T4状态:结束总线周期。如果访问的是慢速存储器或是外设接口,则应该在Tl状态输出的地址,经过译码选中某个单元或设备后,立即驱动READY信号到低电平。8086CPU在T3状态采样到READY信号无效,就会插入等待周期Tw,在Tw状态CPU继续采样READY信号;直至其变为有效后再进人T4状态,完成数据传送,结束总线周期。在T4状态,8086CPU完成数据传送,状态信号 。变为无操作的过渡状态。在此期间,8086CPU结束总线周期,恢复各信号线的初态,准备执行下一个总线周期。
第 6 章 作 业 答 案
6.1 若有一单板机,具有用8片2114构成的4KBRAM,连线如图创所示。
若以每1KB RAM作为一组,则此4组RAM的基本地址是什么?地址有没有重叠区?每一组的地址范围为多少?
解:RAM的基本地址为:
第一组 OOOOH ~ 03FFH
第二组 4000H ~ 43FFH
第三组 8000H ~ 83FFH
第四组 COOOH ~ C3FFH
地址有重叠区。每一组的地址范围为OOOH ~ 3FFH(1024个字节)。
6.4 若要扩充1KB RAM(用2114片子),规定地址为8000H~83FFH,地址线应该如何
连接?
解: 扩充lKB RAM至规定地址8000H ~ 83FFH,其地址线的低10位接芯片,高6位地址(Al5 ~A10 = 100000)产生组选择信号。
第 7 章 作 业 答 案
7.1 外部设备为什么要通过接口电路和主机系统相连?
解: 因为外部设备种类繁多,输入信息可能是数字量、模拟量或开关量,而且输入速度、电平、功率与CPU差距很大。所以,通常要通过接口电路与主机系统相连。
7.4 CPU和输入输出设备之间传送的信息有哪几类?
解:CPU和输入输出设备之间传送的信息主要有3类。
(l)数据
在微型计算机中,数据通常为8位、16位或32位。
(2)状态信息
在输入时,有输入设备的信息是否准备好;在输出时有输出设备是否有空,若输出设备正在输出信息,则以忙指示等。
(3)控制信息
例如,控制输入输出设备启动或停止等。
7.9 设一个接口的输入端口地址为0100H,状态端口地址为0104H,状态端口中第5位为1表示输入缓冲区中有一个字节准备好,可以输入。设计具体程序以实现查询式
输入。
解: 查询输入的程序段为:
POLl : IN AL, 0104H
AND AL, 20H
JZ POLl
IN AL, 0100H
第 8 章作 业 答 案
8.1 在中断响应过程中,8086CPU向8259A发出的两个RT互信号分别起什么作用?
解: CPU发出的第一个 脉冲告诉外部电路,其提出的中断请求已被响应,
应准备将类型号发给CPU,8259A接到了这个 脉冲时,把中断的最高优先级
请求置入中断状态寄存器(ISR)中,同时把IRR(中断请求寄存器)中的相应位复
位。CPU发出的第二个 脉冲告诉外部电路将中断的类型号放在数据总线上。
8.2 8086CPU最多可以有多少个中断类型?按照产生中断的方法分为哪两大类?
解:8086CPU最多可以有256个中断类型。按照产生中断的方法,可以分为内
部中断(软件中断)和外部(硬件中断)中断两大类。
8.9 在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?
解: 因为在用户程序运行时,会在寄存器中有中间结果,当在中断服务程序中要
使用这些寄存器前要把这些寄存器的内容推至堆栈保存(称为保护现场)。在从中断服务程序返回至用户程序时把这些内容从堆找恢复至寄存器中(称为恢复现场)。
8.12 若在一个系统中有5个中断源,其优先权排列为:1、2、3、4、5,它们的中断服务程序的入口地址分别为:3000H、302OH、3050H、3080H、30AOH。编写一个程序,当有中断请求CPU响应时,能用查询方式转至申请中断的优先权最高的源的中断服
务程序。
解: 若5个中断源的中断请求放在一中断状态寄存器中,按优先权分别放在状态的7位(优先权最高)至位3中。查询方法的程序段为:
IN AL, STATUS
CMP AL, 80H
JNE N1
JMP 3000H
N1: IN AL, STATUS
CMP AL, 40H
JNE N2
JMP 3020H
N2: IN AL, STATUS
CMP AL, 20H
JNE N3
JMP 3050H
N3: IN AL, STATUS
CMP AL, 10H
JNE N4
JMP 3080H
N4: IN AL, STATUS
CMP AL, 08H
JNE N5
JMP 30A0H
N5: RET
第9章 作 业 答 案
9.3 在某一应用系统中,计数器/定时器8253地址为340H~343H,定时用作分频器(N为分频系数),定时器2用作外部事件计数器,如何编制初始化程序?
解:
定时器0用作分频器,工作方式2,其初始化程序为:
MOV AL, 34H
OUT 343H, AL
MOV AL, N1
OUT 342H, AL
MOV AL, N2
OUT 342H, AL
定时器2用作外部事件计数器,工作在方式0,其初始程序:
MOV AL, 0B0H
OUT 343H,AL
MOV AL, N1
OUT 342H,AL
MOV AL, N2
OUT 342H,AL
9.4 若已有一频率发生器,其频率为1MHZ,若要示求通过计数器/定时器8253,着重产生每秒一次的信号,8253应如何连接?编写出初始化程序。
解:
1MHZ的信号要变为每秒一次,则需经过106分频。一个通道的计数为16 位最大为65536。故需要需两个通道级连,则每个通道计数为1000。用通道0和通道1级连,都工作在方式2,初始化程序为:
MOV AL, 34H
OUT 343H, AL
MOV AL, 0E8H
OUT 342H, AL
MOV AL, 03
OUT 342H, AL
MOV AL, 74H
OUT 343H, AL
MOV AL, 0E8H
OUT 342H, AL
MOV AL, 03
OUT 342H, AL
9.9 编程将计数器/定时器8253计数器0设置为模式1,计数初值3000H;计数器1设置为模式2初值为2010H;计数器2设置为模式4初值为4030H;
解: 若端口地址为:0F8H~0FBH,初始化程序为:
MOV AL, 32H
OUT 0FBH, AL
MOV AL, 00H
OUT 0F8H, AL
MOV AL, 30H
OUT 0F8H, AL
MOV AL, 74H
OUT 0FBH, AL
MOV AL, 10H
OUT 0F9H, AL
MOV AL, 20H
OUT 0F9H, AL
MOV AL, 0B8H
OUT 0FBH, AL
MOV AL, 30H
OUT 0FAH, AL
MOV AL, 40H
OUT 0FAH, AL
第 10 章 作 业 答 案
10.4 可编程并行接口芯片8255A的3个端口在使用时有什么差别?
解:通常端口A或B作为输入输出的数据端口(端口A还可以作为双向数据端口),而端口C作为控制或状态信息的端口,它在"方式"字的控制下,可以分成两个4位的端口。每个端口包含一个4位锁存器。它们分别与端口A和B配合使用,可用以作为控制信号输出,或作为状态信号输入。
10.7 8255A有哪几种基本工作方式?对这些工作方式有什么规定?
解:8255A有3种基本的工作方式:
方式0-----基本输入输出:
方式1-----选通输入输出;
方式2-----双向传送。
10.8 设置8255A工作方式,8255A的控制口地址为OOC6H。要求端口A工作在方式1,输
入;端口B工作在方式0,输出;端口C的高4位配合端口A工作;低4位为输入。
解:按要求的方式控制字为:10111001B。编程语句为:
MOV AL, 0B9H
OUT OOC6H, AL ;
10.9 设可编程并行接口芯片8255A的4个端口地址为OOCOH、00C2H、00C4H、OOC6H,要求用置0/置1方式对PC6置1,对PC4置0。
解:对端口C的PC6置1的控制字为: 00001101B,
对PC4置O的控制字为: 0000100OB。
程序段为:
MOV AL, DH
OUT OOC6H, AL
MOV AL, 08H.
OUT 00C6H, AL
❾ 单片机原理及应用技术的内容简介
《单片机原理及应用技术》共包括10章内容,其中第1章为单片机概述部分,介绍了单片机相关的几个基本概念;第2、3、6章是单片机的理论基础,为单片机的原理部分,包括单片机的基本结构、指令系统以及各功能模块的应用,第4章为单片机C程序设计基础部分;第5章介绍了单片机的集成开发环境;第7章介绍了单片机的常用接口电路设计;第8章介绍了常用的串行总线的应用;这两章为单片机的基本应用部分。第9章为单片机仿真部分,