12019/8/2机器人控制技术基础要求1.安装KeilC2.建立工程文件,实现多个LED灯以不同频率闪光。可以用不同键控制。3.阅读51相关书籍,搞清定时器作用,了解中断概念。4.什么是ROM、RAM、寄存器、特殊功能寄存器,R0-R7(分区)22019/8/2机器人控制技术基础对实验理解ORG0000H;CPU上电复位后,从此执行LJMPMAIN;跳转到MAIN主程序ORG0100H;主程序开始,避开中断入口区地址MAIN:CLRP1.7;数码管控制三极管导通CLRP1.6;蜂鸣器电源供应三极管MOVP2,#0FFH;把P2口置一,熄灭8个发光二极管32019/8/2机器人控制技术基础C语言如何写sbitSMG=P1^7;SMG=P1^2;(老板)sbitFMQ=P1^6;FMQ=P1^3;(老板)SMG=0;//数码管控制三极管导通FMQ=0;//蜂鸣器电源供应三极管P2=0xFF;//把P2口置一,熄灭8个发光二极管P1_0,P1_7,P2_0等等42019/8/2机器人控制技术基础;延时子程序,改变i,j的值,可以改变延时的时间,从而改变LED的闪烁速度速度voiddey(unsignedcharj){unsignedchari;for(;j0;j--){for(i=124;i0;i--){;}}}延时时间C语言如何写52019/8/2机器人控制技术基础指令寄存器译码地址译码程序计数器地址寄存器累加器A运算器①②存储器内部数据总线外部地址总线AB数据缓冲器外部数据总线DB寄存器区外部控制总线CB内部控制信号时钟及清零单片机的工作过程取指过程例:MOVA,#09H74H09H;把09H送到累加器A中执行过程PC=0000H0001H0000H0002H0111010000001001(PC)(PC)0001H0002H0000H外部控制总线CB取指过程(PC)执行过程你知道PC的作用吗?62019/8/2机器人控制技术基础指令机器码0011010,0011111指令助记符MOVA,R0汇编语言、宏汇编(伪指令)72019/8/2机器人控制技术基础#includeregx52.hvoiddelay();main(){P0=0xFF;P3_7=0;P2_7=0;while(1){P0_0=0;delay();P0_0=1;delay();}}voiddelay(){unsignedchari=0,j=0;do{do{}while(--j);}while(--i);}我就喜欢用C,汇编多不好理解呀82019/8/2机器人控制技术基础1.看原理图知道有多少东西可用,关联因素2.目标设计要做什么,如何做,就不用提Why?3.选择编程环境,编程如果是项目1.明确目标2.选择CPU芯片及相关芯片。预判够用否3.开发资料4.要读一手资料!92019/8/2机器人控制技术基础计算机是如何存放数值电平高(1)和低,开关的通与关,灯的亮与灭电流的有与无,电机的转与静止寄存器存放RAM、ROM、EEPROM、硬盘…寄存器68051单片机的存储空间102019/8/2机器人控制技术基础先复习一下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/1234567891011121314151617181920403938373635343332313029282726252424222180318051875189C51112019/8/2机器人控制技术基础6.151单片机的存储空间(家底)中央处理器CPU:8位,运算和控制功能内部RAM:共256个RAM单元,用户使用前128个单元,用于存放可读写数据,后128个单元被专用寄存器(SFR)。52系列还多128,共256字节RAM内部ROM:4KB/8K,用于存放程序、原始数据和表格。定时/计数器:两/三个16位的定时/计数器,实现定时或计数功能。并行I/O口:4个8位的I/O口P0、P1、P2、P3。串行口:一/二个全双工串行口。中断控制系统:5/6个中断源(外中断2个,定时/计数中断2/3个,串行中断1个)时钟电路:可产生时钟脉冲序列,允许晶振频率最高24MHZ122019/8/2机器人控制技术基础(1)程序存储器程序存储器内部外部0000H0FFFH/1FFFH(4/8K)0000HFFFFH(64K)0000H0FFFH/1FFFH(4/8K)0000H0001H0002H(PC)0000H是程序执行的起始单元,在这三个单元存放一条无条件转移指令中断5中断4中断3中断2中断10003H000BH0013H001BH0023H002BH外部中断0定时器0中断外部中断1定时器1中断串行口中断8位...0FFFH0FFEHEA=1EA=0程序存储器资源分布中断入口地址定时器2中断132019/8/2机器人控制技术基础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、RS1PSW位地址CYACF0RS1RS0OVF1P142019/8/2机器人控制技术基础高128个单元☆离散分布有21个特殊功能寄存器SFR。☆11个可以进行位寻址。☆特别提示:对SFR只能使用直接寻址方式,书写时可使用寄存器符号,也可用寄存器单元地址。152019/8/2机器人控制技术基础6.2、8051存储单元6.2.1C51存储类型与MCS-51存储空间的对应带存储类型的变量的定义的一般格式为[存储种类]数据类型[存储器类型]变量名表带存储类型的变量定义举例:chardatavar1;bitbdataflags;floatidatax,y,z;unsignedintpdatavar2;unsignedcharxdatavector[3][4];162019/8/2机器人控制技术基础6.2、8051存储单元6.2.1C51存储类型与MCS-51存储空间的对应存储类型与存储空间的对应关系data直接寻址片内数据存储区,访问速度快(128字节)bdata可位寻址片内数据存储区,允许位与字节混合访问(16字节)idata间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)pdata分页寻址片外数据存储区(256字节)由MOV@Ri访问(i=0,1)xdata片外数据存储区(64KB)由MOVX@DPTR访问code程序存储器64KB空间,由MOVC@DPTR访问172019/8/2机器人控制技术基础6.2、8051存储单元6.2.1C51存储类型与MCS-51存储空间的对应1.CODE区:代码段,用来存放可执行代码。16位寻址空间可以达到64KB。2.DATA区:数据段,低128内部RAM。区指令用一个或两个指令周期来访问数据段。3.BDATA区:存储类型标识符指内部可位寻址的16字节存储区20H到2FH可以在本区域定义可位寻址的数据类型182019/8/2机器人控制技术基础6.2、8051存储单元6.2.1C51存储类型与MCS-51存储空间的对应4.IDATA区:8052单片机内部高128byte内容RAM.5.XDATA区:外部数据区,和code区相同采用16位地址寻址64KB。6.PDATA区:PDATA是指外部RAM在0-255的变量类型,和xdata有点类似,但又比xdata有优势:操作时只使用一个字节来保存指针位置,比xdata代码少,RAM的占用也少一个。192019/8/2机器人控制技术基础6.2、8051存储单元6.2.1C51存储类型与MCS-51存储空间的对应存储类型长度(bit)长度(byte)值域范围data810~255idata810~255pdata810~255xdata1620~65535code1620~65535202019/8/2机器人控制技术基础6.3、存储模式说明存储模式说明SMALL默认的存储类型是data,参数及局部变量放入可直接寻址片内RAM的用户区中(最大128字节)。另外所有对象(包括堆栈),都必须嵌入片内RAM。栈长很关键,因为实际栈长依赖于函数嵌套调用层数COMPACT默认的存储类型是pdata,参数及局部变量放入分页的外部数据存储区,通过@R0或@R1间接访问,栈空间位于片内数据存储区中LARGE默认的存储类型是xdata,参数及局部变量直接放入片外数据存储区,使用数据指针DPTR来进行寻址。用此数据指针进行访问效率较低,尤其对两个或多个字节的变量,这种数据类型的访问机制直接影响代码的长度212019/8/2机器人控制技术基础6.4、特殊功能寄存器(SFR)MCS-51单片机中特殊功能寄存器(SFR)分散在片内RAM区的高128字节中,地址范围为80H~0FFH。SFR中有11个寄存器具有位寻址能力,它们的字节地址都能被8整除,即字节地址是以8或0为尾数的。为了能直接访问这些SFR,KeilC51提供了一种自主形式的定义方法,这种定义方法与标准C语言不兼容,只适用于对MCS-51系列单片机进行C语言编程。特殊功能寄存器C51定义的一般语法格式如下:sfrsfr_name=intconstant;或sfr(sfr_name,constant)222019/8/2机器人控制技术基础6.4、特殊功能寄存器(SFR)sfr是定义语句的关键字,其后必须跟一个MSC-51单片机真实存在的特殊功能寄存器名,=后面必须是一个整型常数,不允许带有运算符的表达式,是特殊功能寄存器sfr-name的字节地址,这个常数值的范围必须在SFR地址范围内,位于0x80~0xFF。例如:sfrSCON=0x98;/*串口控制寄存器地址98H*/sfrTMOD=0x89;/*定时器/计数器方式控制寄存器地址89H*/232019/8/2机器人控制技术基础6.4、特殊功能寄存器(SFR)MCS-51系列单片机的特殊功能寄存器的数量与类型不尽相同,因此建议将所有特殊的sfr定义放入一个头文件中,该文件应包括MCS-51单片机系列机型中的SFR定义。C51编译器的reg51.h头文件就是这样一个文件。在新的MCS-51系列产品中,SFR在功能上经常组合为16位值,当SFR的高字节地址直接位于低字节之后时,对16位SFR的值可以直接进行访问。例如52子系列的定时器/计数器2就是这种情况。为了有效地访问这类SFR,可使用关键字sfr16来定义,其定义语句的语法格式与8位SFR相同,只是=后面的地址必须用16位SFR的低字节地址,即低字节地址作为sfr16的定义地址。242019/8/2机器人控制技术基础6.4、特殊功能寄存器(SFR)例如:sfr16T2=0xCC/*定时器/计数器2:T2低8位地址为0CCH,T2高8位地址为0CDH*/这种定义适用于所有新的16位SFR,但不能用于定时器/计数器0和1。对于位寻址的SFR中的位,C51的扩充功能支持特殊位的定义,