单片机at89c51程序

转自:http://www.dwenzhao.cn/profession/mcu/mcu51basic.html
随着微电子技术的快速发展,以ARM为主的32位MCU(微控制器)已普及开来,8位MCU已被很多人认为将被淘汰,更何况其中的老古董MCS-51系列单片机。但从目前的形势来看,8位MCU还牢牢占据着工业控制领域的主导地位,一个原因是8位MCU的开发成本比较低,也有大量的成熟设计方案,还有一个原因是历史的延续,新的产品还处在不断变化中,老产品则是经数十年的淘汰而留存下来的精品。
MCS-51系列单片机正是如此,自1980年由Intel推出后,获得很大成功,并不断改进而形成系列,成为最普遍使用的单片机内核和指令系统。后来,ATMEL、NXP等多家著名半导体公司推出兼容和增强的51系列单片机,应用普遍,因此成为单片机教学的主要示例,熟悉其结构和指令的工程师数量庞大。这几年,随着AVR、PIC等更高性能单片机的推广使用,特别是ARM Cortex-M系列32位MCU价格的持续走低,原来主要以生产51兼容的通用单片机的半导体公司才逐渐淡出市场,但仍有大量以51为内核的计量、无线通信等专用芯片存在。在成本敏感度高的中国市场,以51为内核的STC仍然很受欢迎,看来还要持续一段时间。所以,在今后的一段时间内,51系列单片机还有市场,还有一些人仍要从51开始学习单片机,所以单片机的介绍也要从MSC-51开始。MSC-51系列最典型的型号是ATMEL公司的AT89C51。
一、AT89C51基本描述:1.AT89C51内核的主要组成结构:
AT89C51是以ALU位中心的8位微控制器(MCU),完成运算和控制功能;内部有128B的数据存储器(内部RAM),地址范围00H~7FH;有21个特殊功能寄存器,在内部RAM的SFR块中(又称专用寄存器),离散分布于地址80H~FFH中。计数器PC,是一个独立的16位专用寄存器,其内容为将要执行的指令地址(程序存储器地址)。
51系列单片机在存储器配置上采用&哈佛&结构,即物理上具有独立的程序寄存器和数据寄存器,但逻辑上采用相同的地址空间,利用不同的指令和寻址方式进行访问。AT89C51内部有4kB FLASH,用来存储程序、原始数据、表格等,称为程序存储器(片内ROM);有4个8位可编程I/O口(P0、P1、P2、P3);一个UART串行通信口;2个16位定时/计数器;5个中断源,两个中断优先级的中断控制系统;一个片内振荡器和时钟电路。
2.AT89C51的主要引脚功能:
GND和Vcc:电源引脚,Vcc接直流电源,5.00V&20%。
RST:复位输入端,此引脚上至少要出现2个机器周期的高电平(12个振荡周期)。
ALE/PROG-:地址锁存允许/编程脉冲,对内部FLASH编程时用于输入编程脉冲。
PSEN-:外部ROM读取选通信号,每个机器周期出现2次有效信号,作为外ROM的OE。
EA-/Vpp:内/外ROM选择及内ROM编程电源,低电平时只访问片外ROM。
3.AT89C51的时钟周期:
当外接12MHz晶振时,振荡周期1/12us、状态时钟周期1/6us、机器周期1us。
4.AT89C51对外部储存器的访问:
当访问外部存储器时,用来锁存P0口输出的低8位地址。即使不访问外部存储器,仍以不变的周期输出信号,频率为振荡频率的1/6。但每当访问外部数据寄存器时,将跳过一个ALE脉冲。
5.AT89C51的复位信号及影响的寄存器:
要实现复位操作,必须使RST引脚至少保持两个机器周期的高电平,再从高电平变为低电平。完成复位后,MCU从ROM中的0000H单元开始执行程序。复位电路常用10uF电容与10k电阻组合。
复位后内容
复位后内容
复位后内容
复位后内容
二、存储器组成:
AT89C51由程序存储器ROM和数据存储器RAM组成。ROM分为片内和片外,片内ROM为4KB,地址范围0000H~0FFFH;片外ROM可扩展到64KB。RAM可分为片内和片外,片内RAM由128B(00H~7FH)的片内数据寄存器和21个特殊功能寄存器(在80H~FFH中)组成;片外RAM可扩展到64KB。
1.程序寄存器ROM:
AT89C51有4KB片内ROM,用于存储编好的程序、表格、常数,简称程序内存。当程序内存不够用时,可扩展片外程序存储器。片内与片外的地址空间是统一编址的,地址范围为0000H~FFFFH,总共64KB。
MCU工作时,只能读取ROM,所以称为只读存储器。MCU复位后,程序计数器PC的内容为0000H,所以系统必须从0000H单元开始取指令并执行程序,用户程序的第1条指令应放置在这里。
片外ROM的低4KB地址与片内ROM重叠,选择由EA-引脚来控制。EA-=0,复位后系统从片外ROM的0000H地址单元开始执行,且只能执行片外ROM中的程序;EA-=1,复位后系统从片内ROM的0000H地址单元开始执行程序,当PC值大于0FFFH时自动转到片外ROM执行程序。
ROM内有5个特殊地址,是MCU的5个中断服务子程序的入口地址,相邻中断入口地址间隔为8个单元。
定时/计数器中断0
定时/计数器中断1
当程序中使用中断时,一般在这些入口地址放置一条跳转指令,而相应的中断服务程序放于转移地址中。如果中断服务程序不超过8个单元,则可放入相应的入口地址开始的8个单元中。如果没有用到中断功能,这些单元也可作为一般用途的程序存储器。
2.数据存储器RAM:
AT89C51片内数据存储器RAM的容量为128B,地址范围为00H~7FH。使用时可分为4个区,即工作寄存器区、可位寻址区、数据缓冲区和堆栈区。堆栈区的栈底地址复位后默认为07H,可由程序中的指令改变。
数据缓冲区
3组(R0~R7)工作寄存器组
2组(R0~R7)工作寄存器组
1组(R0~R7)工作寄存器组
0组(R0~R7),默认工作寄存器组
工作寄存器:片内RAM中最低的32个单元(00H~1Fh)是工作寄存器区,按地址由小到大分为4个组,每个组有8个8位寄存器,地址由低到高依次命名为R0~R7。当前工作寄存器只能有一个组,选用哪个组由PSW中的RS0和RS1位确定,可由指令设置。复位初始化后RS0=0、RS1=0,使用0组,为默认工作寄存器组。位寻址区:片内RAM中,20H~2FH地址单元构成固定的可位寻址存储区。每个单元有8位,16个单元共128位,每个位都有一个位地址。它们可以位寻址、位操作,即可对该位进行置1、清0、求反操作等。指令系统中有位操作指令。程序中没有位操作时,该区的地址单元可做他用。
数据缓冲区:片内RAM中,30H~7FH地址单元一般可做数据缓冲区,用于存放各种数据和中间结果。没有使用的工作寄存器单元和没有使用的可位寻址单元都可用做数据缓冲区。堆栈区:是在片内RAM中开辟的一片特殊数据存储器,对堆栈存取数据按&先进后出&原则。用堆栈指针SP指向栈顶地址,堆栈的最低地址叫栈底,对堆栈存取数据时栈顶地址相应变化,即SP的内容相应变化。复位后,栈底地址单元为07H,因为此时堆栈内还未存放数据,堆栈指针SP的内容与栈底值相同,也为07H。可以根据需要设置SP的初值。
3.特殊功能寄存器SFR:
特殊功能寄存器,也称专用寄存器,是MCU各功能部件所对应的寄存器,用来存放相应功能部件的控制命令、状态或数据。AT89C51内的端口锁存器、程序状态字、定时器、累加器、堆栈指针、数据指针,以及其他控制寄存器都是特殊功能寄存器。SFR离散地分布在片内RAM的高128B(80H~FFH)中,共21字节。
SFR符号及名称
位地址、位标志
ACC:累加器
PSW程序状态字
IP:中断优先级寄存器
IE:中断允许寄存器
SBUF:串口数据缓冲寄存器
不可位寻址
SCON:串口控制寄存器
TH1:T1寄存器高8位
不可位寻址
TH0:T0寄存器高8位
不可位寻址
TL1:T1寄存器低8位
不可位寻址
TL0:T0寄存器低8位
不可位寻址
TMOD:定时/计数器方式寄存器
TCON:定时/计数器控制寄存器
PCON:电源控制寄存器
DPH:数据指针高8位
不可位寻址
DPL数据指针低8位
不可位寻址
SP:栈指针寄存器
不可位寻址
其中地址能被8整除(字节末位为0H或8H)的寄存器既可字节寻址又可位寻址,其他只可字节寻址。可位寻址的特殊寄存器的每一位都有位地址,有的还有位名称、位编号。
ACC:累加器,助记符为A,是一个最为常用的特殊功能寄存器。
B:乘除法指令中要用通用的寄存器,也可做一般寄存器用。
PSW:程序状态字,是一个8位寄存器,用来存放指令执行后的有关状态。各位定义为:
C:进位标志,用于表示加减运算过程中累加器最高位有无进位或借位。移位操作也影响。 AC:辅助进位,加减运算时低4位向高4位进位或借位。 F0:用户标志位,是一个供用户定义的标志位。 RS1和RS0:工作寄存器选择位,用于设定当前使用的工作寄存器的组号。 OV:溢出标志,指示运算过程是否发生了溢出。 P:奇偶标志位,表明累加器A中&1&的个数的奇偶性,奇数置1,偶数置0。 SP:堆栈指针。系统复位后初始化为07H,数据从08H开始存放,这里属于工作寄存器组1~3,如果程序设计中要用到,就要把SP设置为1FH或更大。MCU调用子程序或响应中断时,自动发生数据的入栈、出栈操作,还有对堆栈操作的指令。 SBUF:串行数据缓冲器,实际上有发送缓冲器和接收缓冲器两个独立的寄存器。 TH0/TL0和TH1/TL1:分别是定时/计数器的16位计数寄存器,也可单独作4个8位寄存器。
4.片外RAM:
片内RAM不够用时,可扩展片外RAM,最大范围0000H~FFFFH,共64KB。片外RAM与片内RAM有部分地址重叠,但操作片内RAM和片外RAM用不同的指令,片内用MOV,片外用MOVX。
阅读(...) 评论()单片机at89c51的C语言程序_百度知道
单片机at89c51的C语言程序
#define L_W_D XBYTE[0Xf5ff]#define L_W_C XBYTE[0Xf1ff]#define L_R_C XBYTE[0Xf3ff]读别人的程序,不理解0Xf5ff,0Xf1ff,0Xf3ff这三个地址是哪个i/o口?能详细解释下吗?
我有更好的答案
0Xf5ff,0Xf1ff,0Xf3ff
是三个十六位二进制数,是单片机外部RAM的地址,与IO无关。地址码不易记忆,就改名为: L_W_D
89c51还分内外ram?那如果我想把地址改成p1口怎么写?
如果片内RAM不够用,就需要扩展,在外部加装RAM芯片,就叫片外RAMP1不需要改,程序中直接写P1,注意要大写
采纳率:62%
为您推荐:
其他类似问题
您可能关注的内容
c语言程序的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。电子制作实验室欢迎您!AT89S51单片机实验开发板
AT89S51单片机实验开发板
&&&&AT89S51单片机实验开发板是电子制作实验室网站专为单片机初学者设计并开发的一种实验兼开发板,站长开发这个产品的目的就是为了帮助单片机初学者快速学会单片机技术。
&&&&站长本人在自学单片机的过程中,通过做了一系列的实验,从而比较容易地领会了单片机哪些枯燥、难懂的专业术语,而且这款实验开发板弥补了市场上常见的单片机实验板的一些不足,有针对性地面向最终的实用控制功能,增加了实用的继电器接口,可以使实验板能够直接用于控制各种负载,成为一个实用化的嵌入式控制系统。
&&&&目前想要学习单片机技术的网友可以分成两类,一类是业余的电子爱好者,想通过自学单片机来提高自己的电子技术水平,以后能够运用到自己熟悉的领域中有所作为,这类网友的动手能力比较好,但是理论知识一般欠缺一些。另一类是在校的电子专业学生,为了完成一些科技项目或者是把学校学到的知识转化成实际的电子作品,为以后的工作求职创造更好的条件,这类网友需要的就是实践经验了。站长也是从这两方面需求来开发这个产品的。
AT89C51单片机实验开发板产品清单:
1、实验板成品一个
2、AT89C51芯片一片
3、串口通讯电缆一根
4、12V1A开关电源一个
5、红外遥控器一个
6、A4大小的电路原理图一张
&&&&购买我们AT89S51实验开发板的客户我们默认发AT89S51芯片,这个芯片必须借助TOP2005编程器进行编程,我们的实验板不支持在线下载程序,但是只要换成STC89C52RC芯片,我们的实验开发板就具备串口下载编程功能,而且所有功能特性都兼容AT89S51芯片,只要客户在购买时说明购买STC89C52RC实验开发板即可。详细介绍可以点击进入的方法网页!
&&&这是51单片机试验板的电路图,购买网站的单片机试验板开发时,会随产品寄出一张A4大小的黑白激光打印的原理图,供安装或试验时分析硬件结构。
网站教程构思:
&&&&为了配合实验开发板的销售和使用,站长专门编写了一系列的实验教程,所有实验都按照从最简单到复杂原则,通过逐步熟悉。
&&&&网站提供所有实验的详细源程序,所有的程序都有详细的程序注释,而且都经过烧录验证的*.hex烧写文件。本着为初学者考虑的目的,在编写教程的过程中,把初学者容易范的错误一一指出,同时对相关的硬件结构进行说明,对程序的设计思路也进行介绍,相信初学者通过动手实验能更容易地学会单片机技术,祝大家好运!
&&&&AT89S51单片机实验开发板其实可以做很多试验,我们网上列举的只是其中的一部分,只要你有足够的想象力,完全可以再开发出一系列的其他用途,例如:红外线遥控器编码分析仪、通用频率计、温度自控板等等~~~~~
&&&&在学习单片机编程的过程中为了掌握单片机技术需要不断地编程烧写练习,所以就会不断地把单片机芯片从试验板上拔下、插上,试验板上采用优质的40脚零拔插力ZIF插座,非常方便。
实验注意事项:
&&&&AT89S51单片机是一种功能非常强大的芯片,但是如果不按照规则去使用或者粗心马虎大意,单片机的寿命可能非常短,站长曾经连续损坏8片AT89C51芯片,后来痛定思痛,仔细查找才发现是这批试验板上的两个错误造成的:其中一块试验板上的7805损坏,直接输出12伏直流电压!还有这批试验板的继电器驱动三极管应该用ECB排列的8050而使用了EBC排列的8050,导致12伏直流电压直接输入到单片机的P2口。
&&&&需要注意的是AT89S51芯片必须要用TOP2005一类的编程器才能进行程序烧写,如果客户选用功能一样的STC89C52芯片的话直接可以用实验板上的串口进行程序下载非常方便,客户如果需要STC芯片的话可以在下订单时注明:STC89C52单片机实验开发板。
&&&&这是51单片机实验PCB电路板,需要的网友也可以邮购 5元一片,需要注意的是板上晶振回路为了方便11.0592和12M晶振切换,晶振的其中一个脚是独立焊盘,应根据实际需要采用焊锡和相邻焊盘短路,这样晶振回路才能正常工作。
下一篇文章:
&&&&备注:如果不需要AT89C51实验开发板中的12伏电源变压器,价格可以降低10元
邮局汇款地址:邮编226200
江苏省启东市江海中路511号水晶苑 A-1 谢刚 收
电话/传真:<font color="#FF-
小灵通:87 联系人:谢刚
电子信箱:09:38 提问
AT89C51如何下载程序
用什么软件
atmel公司的AT89C51,注意是AT89C51
老版单片机 如何下载程序 串口的还有usbisp的就不用说了
下载不了 请行家指教
按赞数排序
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!
用Keil就可以的,IAR,Studio...
老版的AT89C51,需要用专用烧写器下载。
在烧写之前,当然需要借助软件辅助编译工具(如keil)先生成 .hex 文件用于下载。
AT89S51是可以通过串口下载的,不用那种烧写器了。
AT89C51和AT89C52这两个只能用烧录器。AT89S51和AT89S52可以用ISP下载,STC系列单片机可以串口下载。
老版的51单片机,需要先通过keil等编译软件生成hex文件。然后借助专用烧写器下载,如TOP100等。不同的烧写器的下载软件不同,自带的。
谢谢,各位的指教,明白了,不一一发回复了
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐

我要回帖

更多关于 单片机c语言延时程序 的文章

 

随机推荐