全国高职高专规划教材·精品与示范系列单片机应用技术(C语言版)王静霞主编本章内容什么是单片机MCS-51内部组成及信号引脚单片机最小系统电路MCS-51存储器结构第1章单片机硬件系统什么是单片机单片微型计算机(SingleChipMicrocomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(CentralProcessingUnit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。单片机内部基本结构如图1.7所示。由于它的结构与指令功能都是按照工业控制要求设计的,故又称为微控制器(Micro-ControllerUnit,简称MCU)。什么是单片机CPU存储器定时器/计数器中断系统P0-P3TxDRxDTINT并行I/O口串行I/O口单片机应用系统单片机应用系统单片机+接口电路及外设等+软件硬件单片机应用系统由硬件和软件组成硬件是应用系统的基础软件是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可单片机种类◆目前8位单片机仍是单片机的主流机型;◆生产厂商:◆单片机的发展经历了由4位机到8位机,再到16位机的发展过程美国微芯片公司:PIC16C××系列、PIC17C××系列、PIC1400系列,美国英特尔公司的MCS-48和MCS-51系列,美国摩托罗拉公司的MC68HC05系列和MC68HC11系列,美国齐洛格公司的Z8系列,日本电气公司的μPD78××系列,美国莫斯特克公司和仙童公司合作生产的F8(3870)系列等。单片机硬件结构时钟电路CPUROMRAMT0T1中断系统串行接口并行接口P0P1P2P3TXDRXDINT0INT1定时计数器•中央处理器CPU:8位,运算和控制功能•内部RAM:共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。•内部ROM:4KB掩膜ROM,用于存放程序、原始数据和表格。•定时/计数器:两个16位的定时/计数器,实现定时或计数功能。•并行I/O口:4个8位的I/O口P0、P1、P2、P3。•串行口:一个全双工串行口。•中断控制系统:5个中断源(外中断2个,定时/计数中断2个,串行中断1个)•时钟电路:可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZ复位电路8051单片机的基本组成中央处理器CPU:8位,运算和控制功能内部RAM:共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器占用。内部ROM:4KB掩膜ROM,用于存放程序、原始数据和表格。定时/计数器:两个16位的定时/计数器,实现定时或计数功能。并行I/O口:4个8位的I/O口P0、P1、P2、P3。串行口:一个全双工串行口。中断控制系统:5个中断源(外中断2个,定时/计数中断2个,串行中断1个)时钟电路:可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZMCS-51单片机信号引脚简介P3口线的第二功能VCCVSSXTAL2XTAL1RSTP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0ALEP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.72、振荡电路:XTAL1、XTAL23、复位引脚:RST4、并行口:P0、P1、P2、P37、ALE:地址锁存控制信号1、电源线:VCC(+5V)、VSS(地)EAPSEN5、EA:访问程序存储控制信号6、PSEN:外部ROM读选通信号RXD/TXD/INT0/INT1/T0/T1/WR/RD/1234567891011121314151617181920403938373635343332313029282726252424222180318051875189C51时钟电路与复位电路(1)时钟振荡电路时序关于MCS-51系列单片机的时序概念有4个,可用定时单位来说明,从小到大依次是:节拍、状态、机器周期和指令周期,下面分别加以说明。1)节拍与状态把振荡脉冲的周期定义为节拍,用P表示,也就是晶振的振荡频率fosc。2)状态振荡脉冲fosc经过二分频后,就是单片机时钟信号的周期,定义为状态,用S表示。一个状态包含两个节拍,其前半周期对应的节拍叫P1,后半周期对应的节拍叫P2。3)机器周期MCS-51系列单片机采用定时控制方式,有固定的机器周期。规定一个机器周期的宽度为6个状态,即12个振荡脉冲周期,因此机器周期就是振荡脉冲的十二分频。小提示当振荡脉冲频率为12MHz时,一个机器周期为1µs;当振荡脉冲频率为6MHz时,一个机器周期为2µs。(2)复位电路单片机复位条件:必须使RST引脚持续2微秒高电平(外部时钟12MHz)12345678910111213142827262524232221201918171615EPROM276412345678910111213142827262524232221201918171615EPROM27641234567891011121314151617181920403938373635343332313029282726252424222112345678910111213142827262524232221201918171615RAM626412345678910111213142827262524232221201918171615RAM6264存储器80318751805189C51片内RAM片内ROM256B(字节)4K(1)程序存储器程序存储器内部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序执行的起始单元,在这三个单元存放一条无条件转移指令中断5中断4中断3中断2中断10003H000BH0013H001BH0023H002BH外部中断0定时器0中断外部中断1定时器1中断串行口中断8位...0FFFH0FFEHEA=1EA=0程序存储器资源分布中断入口地址在单片机C语言程序设计中,用户无需考虑程序的存放地址,编译程序会在编译过程中按照上述规定,自动安排程序的存放地址。例如:C语言是从main()函数开始执行的,编译程序会在程序存储器的0000H处自动存放一条转移指令,跳转到main()函数存放的地址;中断函数也会按照中断类型号,自动由编译程序安排存放在程序存储器相应的地址中。因此,读者只需了解程序存储器的结构就可以了。0000HFFFFH(64K)内部外部(2)数据存储器数据存储器00HFFH7FH80H(高128B)(低128B)RAM专用寄存器00H07H08H0FH10H17H18H1FH0区R0R7R0R7R0R7R0R71区2区3区工作寄存器区可位寻址区20H2FH7F78070030H7FH数据缓冲区/堆栈区内部RAM存储器11第3区18H~1FH01第1区08H~0FHRS1RS0寄存器区片内RAM地址00第0区00H~07H10第2区10H~17H工作寄存器区选择位RS0、RS1注意:一个单元地址对应有8个位地址MSB——MostSignificantBit(最高有效位)LSB——LeastSignificantBit(最低有效位)单元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07MSB位地址LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800RAM位寻址区位地址表高128个单元☆离散分布有21个特殊功能寄存器SFR。☆11个可以进行位寻址。☆特别提示:对SFR只能使用直接寻址方式,书写时可使用寄存器符号,也可用寄存器单元地址。在单片机的C语言程序设计中,可以通过关键字sfr来定义所有特殊功能寄存器,从而在程序中直接访问它们,例如:sfrP1=0x90;//特殊功能寄存器P1的地址是90H,对应P1口的8个I/O引脚在程序中就可以直接使用P1这个特殊功能寄存器了,下面语句是合法的:P1=0x00;//将P1口的8位I/O口全部清0C语言中,还可以通过关键字sbit来定义特殊功能寄存器中的可寻址位,在程序ex1_1.c中,采用了下面语句定义P1口的第0位:sbitP1_0=P1^0;通常情况下,这些特殊功能寄存器已经在头文件reg51.h中定义了,只要在程序中包含了该头文件,就可以直接使用已定义的特殊功能寄存器。如果没有头文件reg51.h,或者该文件中只定义了部分特殊功能寄存器和位,用户也可以在程序中自行定义。AVR,单片机,C语言,C51,编程基础,实例,好资料AVR,单片机,C语言,C51,编程基础,实例,好资料本章内容单片机开发系统及功能KeilC51软件的使用第2章单片机开发系统单片机开发系统及功能单片机开发系统是单片机应用系统设计的必需工具,包括计算机、单片机在线仿真器、工具软件、编程器等。在线仿真功能调试功能1)运行控制功能2)目标系统状态的读出修改功能辅助设计功能1)程序设计语言2)程序编译程序固化功能KeilC51软件的使用KeilC51启动窗口KeilC51软件的使用建立工程文件KeilC51软件的使用选择目标CPUKeilC51软件的使用图2.17文本编缉窗口KeilC51软件的使用增加文件到组中KeilC51软件的使用选择文件类型KeilC51软件的使用目标属性KeilC51软件的使用产生执行文件KeilC51软件的使用选择仿真方式KeilC51软件的使用KeilC51内建了一个仿真CPU来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真器的情况下进行程序的调试。不过,软件模拟与真实的硬件执行程序还是有区别的,其中最明显的就是时序,具体表现在程序执行的速度和用户使用的计算机有关,计算机性能越好,运行速度越快。本章内容单片机开发系统及功能KeilC51软件的使用第2章单片机开发系统单片机开发系统及功能单片机开发系统是单片机应用系统设计的必需工具,包括计算机、单片机在线仿真器、工具软件、编程器等。在线仿真功能调试功能1)运行控制功能2)目标系统状态的读出修改功能辅助设计功能1)程序设计语言2)程序编译程序固化功能KeilC51软件的使用KeilC51启动窗口KeilC51软件的使用建立工程文件KeilC51软件的使用选择目标CPUKeilC51软件的使用图2.17文本编缉窗口KeilC51软件的使用增加文件到组中KeilC51软件的使用选择文件类型KeilC51软件的使用目标属性KeilC51软件的使用产生执行文件KeilC51软件的使用选择仿真方式KeilC51软件的使用KeilC51内建了一个仿真CPU来模拟执行程序,该仿真CPU功能强大,可以在没有硬件和仿真器的情况下进行程序的调试。不过,软件模拟与真实的硬件执行程序还是有区别的,其中最明显的就是时序,具体表现在程序执行的速度和用户使用的计算机有关,计算机性能越好,运行速度越快。本章内容并行I/O口电路结构认识C语言C语言的基本语句C语言数据与运算数组的概念第3章单片机并行I/O口应用并行I/O口电路结构MCS-51系列单