版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、要求1. 安装Keil C2. 建立工程文件,实现多个LED灯以不同频率闪光。可以用不同键控制。3.阅读51相关书籍,搞清定时器作用,了解中断概念。4. 什么是ROM、RAM、寄存器、特殊功能寄存器,R0-R7(分区)6/24/2022机器人控制技术基础2对实验理解ORG 0000H ;CPU 上电复位后,从此执行LJMP MAIN ;跳转到 MAIN 主程序ORG 0100H ;主程序开始,避开中断入口区地址MAIN: CLR P1.7 ; 数码管控制三极管导通 CLR P1.6 ;蜂鸣器电源供应三极管 MOV P2,#0FFH ;把 P2 口置一,熄灭 8 个发光二极管6/24/2022机
2、器人控制技术基础2C语言如何写sbit SMG = P17; SMG=P12;(老板) sbit FMQ = P16; FMQ = P13 ;(老板) SMG = 0; /数码管控制三极管导通 FMQ = 0; /蜂鸣器电源供应三极管 P2 = 0 xFF ;/把 P2 口置一,熄灭 8 个发光二极管P1_0,P1_7,P2_0等等6/24/2022机器人控制技术基础2;延时子程序,改变 i, j的值,可以改变延时的时间,从而改变 LED 的闪烁速度速度void dey(unsigned char j) unsigned char i; for(;j0;j-) for(i = 124; i0;
3、 i-) ; 延时时间C语言如何写6/24/2022机器人控制技术基础2指令寄存器译码地址译码程序计数器地址寄存器累加器A运算器存储器内部数据总线外部地址总线AB数据缓冲器外部数据总线DB寄存器区外部控制总线CB内部控制信号时钟及清零单片机的工作过程取指过程例: MOV A,#09H 74H 09H ;把09H送到累加器A中执行过程PC=0000H0001H0000H0002H0 1 1 1 0 1 0 00 0 0 0 1 0 0 1(PC)(PC)0001H0002H0000H外部控制总线CB取指过程(PC)执行过程你知道PC的作用吗?6/24/2022机器人控制技术基础2指令机器码 00
4、11010,0011111指令助记符 MOV A,R0汇编语言、宏汇编(伪指令)6/24/2022机器人控制技术基础2#include void delay();main() P0 = 0 xFF; P3_7 = 0; P2_7 =0; while(1) P0_0 =0; delay(); P0_0 = 1; delay(); void delay() unsigned char i = 0,j = 0; do dowhile(-j); while(-i);我就喜欢用C,汇编多不好理解呀6/24/2022机器人控制技术基础2看原理图 知道有多少东西可用,关联因素目标设计 要做什么,如何做,就不
5、用提Why?选择编程环境,编程 如果是项目明确目标选择CPU芯片及相关芯片。预判够用否开发资料要读一手资料!6/24/2022机器人控制技术基础2 计算机是如何存放数值 电平高(1)和低,开关的通与关,灯的亮与灭 电流的有与无,电机的转与静止 寄存器存放RAM、ROM、EEPROM、硬盘寄存器6 8051单片机的存储空间6/24/2022机器人控制技术基础2先复习一下51单片机信号引脚简介 P3口线的第二功能VCCVSSXTAL2XTAL1RSTP0. 0P0.1P0.2 P0.3 P0.4 P0.5 P0.6 P0.7P1. 0P1.1P1.2 P1.3 P1.4 P1.5 P1.6 P1.
6、7P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0ALEP3. 0P3.1P3.2 P3.3 P3.4 P3.5 P3.6 P3.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/123456789101112131415161718192040393837363534333231302928272625242
7、4222180318051 875189C516/24/2022机器人控制技术基础26.1 51单片机的存储空间(家底)中央处理器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个)
8、时钟电路:可产生时钟脉冲序列,允许晶振频率最高24MHZ6/24/2022机器人控制技术基础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=1 EA=0程序存储器资源分布中断入口地址定时器2中断6/24/2022机器
9、人控制技术基础20000HFFFFH(64K)内部外部(2)数据存储器数据存储器00HFFH7FH80H(高128B)(低128B)RAM专用寄存器00H07H08H0FH10H17H18H1FH0区R0R7R0R7R0R7R0R71区2区3区工作寄存器区可位寻址区20H2FH7F 7807 0030H7FH数据缓冲区/堆栈区内部RAM存储器 1 1第 3 区18H1FH 0 1第 1 区08H0FHRS1 RS0寄存器区片内RAM地址 0 0第 0 区00H07H 1 0第 2 区10H17H工作寄存器区选择位RS0、RS1PSW位地址 CY ACF0RS1RS0OVF1P6/24/2022
10、机器人控制技术基础2高128个单元离散分布有21个特殊功能寄存器SFR。 11个可以进行位寻址。特别提示:对SFR只能使用直接寻址方式,书写时可使用寄存器符号,也可用寄存器单元地址。6/24/2022机器人控制技术基础26.2、8051存储单元6.2.1 C51存储类型与MCS-51存储空间的对应带存储类型的变量的定义的一般格式为 存储种类数据类型存储器类型变量名表带存储类型的变量定义举例:char data var1;bit bdata flags;float idata x,y,z;unsigned int pdata var2;unsigned char xdata vector34;6
11、/24/2022机器人控制技术基础26.2、8051存储单元6.2.1 C51存储类型与MCS-51存储空间的对应存储类型与存储空间的对应关系 data 直接寻址片内数据存储区,访问速度快(128字节) bdata 可位寻址片内数据存储区,允许位与字节混合访问(16字节) idata 间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节) pdata 分页寻址片外数据存储区(256字节)由MOV Ri访问(i=0,1) xdata 片外数据存储区(64 KB)由MOVX DPTR访问 code 程序存储器64 KB空间,由MOVC DPTR访问6/24/2022机器人控制技术基础2
12、6.2、8051存储单元6.2.1 C51存储类型与MCS-51存储空间的对应1.CODE区:代码段,用来存放可执行代码。16位寻址空间可以达到64KB。2.DATA区:数据段,低128内部RAM。区指令用一个或两个指令周期来访问数据段。3.BDATA区:存储类型标识符指内部可位寻址的16字节存储区20H到2FH 可以在本区域定义可位寻址的数据类型6/24/2022机器人控制技术基础26.2、8051存储单元6.2.1 C51存储类型与MCS-51存储空间的对应4.IDATA区:8052单片机内部高128byte内容RAM.5.XDATA区:外部数据区,和code区相同采用16位地址寻址64K
13、B。6.PDATA区:PDATA是指外部RAM在0-255的变量类型,和xdata有点类似,但又比xdata有优势:操作时只使用一个字节来保存指针位置,比xdata代码少,RAM的占用也少一个。6/24/2022机器人控制技术基础26.2、8051存储单元6.2.1 C51存储类型与MCS-51存储空间的对应存储类型长度(bit)长度(byte)值域范围data810255idata810255pdata810255xdata162065 535code162065 5356/24/2022机器人控制技术基础26.3、存储模式说明存储模式说 明SMALL默认的存储类型是data,参数及局部变量
14、放入可直接寻址片内RAM的用户区中(最大128字节)。另外所有对象(包括堆栈),都必须嵌入片内RAM。栈长很关键,因为实际栈长依赖于函数嵌套调用层数COMPACT默认的存储类型是pdata,参数及局部变量放入分页的外部数据存储区,通过R0或R1间接访问,栈空间位于片内数据存储区中LARGE默认的存储类型是xdata,参数及局部变量直接放入片外数据存储区,使用数据指针DPTR来进行寻址。用此数据指针进行访问效率较低,尤其对两个或多个字节的变量,这种数据类型的访问机制直接影响代码的长度6/24/2022机器人控制技术基础26.4、特殊功能寄存器(SFR) MCS-51单片机中特殊功能寄存器(SFR
15、) 分散在片内RAM区的高128字节中,地址范围为80H0FFH。SFR中有11个寄存器具有位寻址能力,它们的字节地址都能被8整除,即字节地址是以8或0为尾数的。 为了能直接访问这些SFR,Keil C51提供了一种自主形式的定义方法,这种定义方法与标准C语言不兼容,只适用于对MCS-51系列单片机进行C语言编程。特殊功能寄存器C51定义的一般语法格式如下:sfr sfr_name = int constant;或 sfr (sfr_name, constant)6/24/2022机器人控制技术基础26.4、特殊功能寄存器(SFR) sfr是定义语句的关键字,其后必须跟一个MSC-51单片机真
16、实存在的特殊功能寄存器名,=后面必须是一个整型常数,不允许带有运算符的表达式,是特殊功能寄存器sfr-name的字节地址,这个常数值的范围必须在SFR地址范围内,位于0 x800 xFF。例如:sfr SCON=0 x98; /* 串口控制寄存器地址98H */sfr TMOD=0 x89;/* 定时器/计数器方式控制寄存器地址89H */6/24/2022机器人控制技术基础26.4、特殊功能寄存器(SFR) MCS-51系列单片机的特殊功能寄存器的数量与类型不尽相同,因此建议将所有特殊的sfr定义放入一个头文件中,该文件应包括MCS-51单片机系列机型中的SFR定义。C51编译器的reg51
17、.h头文件就是这样一个文件。 在新的MCS-51系列产品中,SFR在功能上经常组合为16位值,当SFR的高字节地址直接位于低字节之后时,对16位SFR的值可以直接进行访问。例如52子系列的定时器/计数器2就是这种情况。为了有效地访问这类SFR,可使用关键字sfr16来定义,其定义语句的语法格式与8位SFR相同,只是=后面的地址必须用16位SFR的低字节地址,即低字节地址作为sfr16的定义地址。6/24/2022机器人控制技术基础26.4、特殊功能寄存器(SFR)例如: sfr16 T2 = 0 xCC /*定时器/计数器2:T2低8位地址为0CCH,T2高8位地址为0CDH*/ 这种定义适用
18、于所有新的16位SFR,但不能用于定时器/计数器0和1。 对于位寻址的SFR中的位,C51的扩充功能支持特殊位的定义,像SFR一样不与标准C兼容,使用sbit来定义位寻址单元。6/24/2022机器人控制技术基础26.5、可位寻址目标 第一种格式: sbit bit-name = sfr-nameint constant; sbit是定义语句的关键字,后跟一个寻址位符号名(该位符号名必须是MCS-51单片机中规定的位名称),=后的sfr-name必须是已定义过的SFR的名字,后的整常数是寻址位在特殊功能寄存器sfr-name中的位号,必须是07范围中的数。例如: sfr PSW=0 xD0 ;
19、 /* 定义PSW寄存器地址为D0H */ sbit OV=PSW2 ; /* 定义OV位为PSW.2,地址为D2H */ sbit CY=PSW7 ; /* 定义CY位为PSW.7,地址为D7H */6/24/2022机器人控制技术基础26.2.2可位寻址目标6.5、可位寻址目标 第二种格式:sbit bit-name = int constantint constant; =后的int constant为寻址地址位所在的特殊功能寄存器的字节地址,符号后的int constant为寻址位在特殊功能寄存器中的位号。例如: sbit OV=0XD02 ;/* 定义OV位地址是D0H字节中的第2位
20、 */ sbit CY=0XD07 ;/* 定义CY位地址是D0H字节中的第7位 */6/24/2022机器人控制技术基础21.累加器ACC通常用A 表示,它是一个什么东西呢?我们知道单片机在做运算时它的中间结果需要放在某个地方,这个地方就是累加器,它的名字很特殊,功能也很特殊,几乎所有的运算类指令都离不开它。2.寄存器B(辅助) B 寄存器在做乘法时用来存放一个乘数,在做除法时用来存放一个除数,不做乘除法时随你怎么用。6.6几个常用的特殊功能寄存器6/24/2022机器人控制技术基础23.程序状态字PSW它是一个很重要的东西,里面放了CPU 工作时的很多状态,知道它就可以了解CPU 当前的工
21、作状态,它有点象平时看书用的目录,我们浏览它就可以了解一本书的内容。它是一个8 位的寄存器,用到了其中的7 位。其格式如下:D7 D6 D5 D4 D3 D2 D1 D0CY AC F0 RS1 RS0 OV P6.6几个常用的特殊功能寄存器6/24/2022机器人控制技术基础2(1)CY:进位标志位MCS-51 是一种8 位的单片机,它的运算结果只能表示到28(即0-255),但我们有时候的运算结果要超过255,怎么办呢?就要用CY 位。例如:79H+87H(01111001+01010111)=1 00000000,这里的“1”就进到了CY 中去了。(2)AC:半进位标志位当D3 位向D4
22、 位进位/借位时,AC=1,通常用于十进制调整运算中。(3)F0:用户自定义标志位由编程人员自行决定,什么时候用,什么时候不用。6/24/2022机器人控制技术基础2(4) RS1、RS0:工作寄存器组选择位RS1 RS0 工作寄存器组 0 0 0 组(00H-07H) 0 1 1 组(08H-0FH) 1 0 2 组(10H-17H) 1 1 3 组(18H-1FH)前面讲到单片机共有四个工作寄存器组(0 组-3 组),它们就是由RS1,RS0 来控制,这两位就在这里,它共有四种组合状态。每个工作寄存器组有8 个字节,分别记为R0-R7,当然在某一时刻,CPU 只使用其中的一组。6/24/2
23、022机器人控制技术基础2(5) OV:溢出标志位(6) P:奇偶检验位每次运算结束后若A 中二进制数“1”的个数为奇数,则P=1,否则P=0。例:某运算结果是58H(01011000),显然“1”的个数为奇数,所以P=1。4DPTR(DPH,DPL):数据指针数据指针是一个16 位的寄存器,我们可以用它来访问外部RAM,也可以访问外部ROM 中的表格,具体应用以后再讲。5SP堆栈指针6. PC程序计数器6/24/2022机器人控制技术基础27 MCS-51的定时器/计数器 两个可编程的定时器/计数器T1、T0。2种工作模式:(1)计数器工作模式(2)定时器工作模式4种工作方式(方式0-方式3
24、)。7.1 定时器/计数器的结构TMOD:选择定时器/计数器T0、T1的工作模式和工作 方式。 TCON:控制T0、T1的启动和停止计数,同时包含了 T0、T1的状态。 6/24/2022机器人控制技术基础2单片机复位时,两个寄存器的所有位都被清0。7.1.1 工作方式控制寄存器TMOD 6/24/2022机器人控制技术基础28位分为两组,高4位控制T1,低4位控制T0。(1)GATE门控位 0:以TRX(X=0,1)来启动定时器/计数器运行。1:用外中断引脚(INT0*或INT1*)上的高电平和TRX来启动定时器/计数器运行。(2)M1、M0工作方式选择位 M1 M0 工 作 方 式 0 0
25、 方式0,13位定时器/计数器。 0 1方式1,16位定时器/计数器。 1 0 方式2,8位常数自动重新装载 1 1 方式3,仅适用于T0,T0分成两个8 位计数器,T1停止计数。 (3) C/T*计数器模式和定时器模式选择位6/24/2022机器人控制技术基础20:定时器模式。 1:计数器模式。7.1.2 定时器/计数器控制寄存器TCON 低4位与外部中断有关,已介绍。高4位的功能如下: (1) TF1、TF0计数溢出标志位 (2) TR1、TR0计数运行控制位 1:启动定时器/计数器工作 0:停止定时器/计数器工作 6/24/2022机器人控制技术基础27.2 定时器/计数器的4种工作方式
26、 7.2.1 方式0 M1、M0为00 ,定时器/计数器的框图: 6/24/2022机器人控制技术基础2为13位的计数器 ,C/T* 位决定工作模式: 0:开关打在上面,为定时器工作模式; 1:开关打在下面,为计数器工作模式,计数脉冲为P3.4、P3.5引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。GATE位:决定定时器/计数器的运行取决于TRx一个条件还是TRx和INTx*引脚两个条件。 (1)0:A点(见图7-2)是否计数,仅取决于TRx的状态。(2)1:B点电位由INTX*的输入电平和TRX的状态这两个条件来确定。是否计数是由TRx和INTx*二个条件来控制的。 6/24/20
27、22机器人控制技术基础27.2.2 方式1 M1、M0=01,16位的计数器。 7.2.3 方式2 计数满后自动装入计数初值。 M1、M0=10 ,等效框图如下: 6/24/2022机器人控制技术基础2TLX作为常数缓冲器,当TLX计数溢出时,在置“1”溢出标志TFX的同时,还自动的将THX中的初值送至TLX,使TLX从初值开始重新计数。定时器/计数器的方式2工作过程如图7-5(X=0,1)。6/24/2022机器人控制技术基础2省去用户软件中重装初值的程序,精确的定时。7.2.4 方式3 增加一个附加的8位定时器/计数器,从而具有3个定时器/计数器。6/24/2022机器人控制技术基础2只适
28、用于定时器/计数器T0。T1不能工作在方式3,T1方式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率产生器)。1工作方式3下的T0T0分为两个独立的8位计数器:TL0和TH0 。TL0使用T0的状态控制位C/T*、GATE、TR0、,而TH0被固定为一个8位定时器(不能作外部计数模式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。 各引脚与T0的逻辑关系如图所示: 6/24/2022机器人控制技术基础26/24/2022机器人控制技术基础22T0工作在方式3下T1的各种工作方式 当T1用作串行口的波特率发生器时, T0才工作在方式3。T0处于
29、方式3时, T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。(1)T1工作在方式0 6/24/2022机器人控制技术基础2(2) T1工作在方式1 (3) T1工作在方式2 6/24/2022机器人控制技术基础27.3 定时器/计数器对输入信号的要求 外部计数脉冲的最高频率为系统振荡器频率的1/24,例如选用12MHz频率的晶体,则可输入500KHz的外部脉冲。输入信号的高、低电平至少要保持一个机器周期。如图7-10所示,图中Tcy为机器周期。6/24/2022机器人控制技术基础27.4 定时器/计数器的编程和应用 4种工作方式中,方式0与方式1基本相同,由
30、于方式0是为兼容MCS-48而设,初值计算复杂,在实际应用中,一般不用方式0,而采用方式1。7.4.1 方式1应用 例7-1 假设系统时钟频率采用12MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。 6/24/2022机器人控制技术基础2方波的周期用T0来确定,让T0每隔1ms计数溢出1次(每1ms产生一次中断),CPU响应中断后,在中断服务程序中对P1.0取反。 (1)计算初值X 设初值为X,则有:(216-X)(12/12)10-6=110-3 216-X = 1000 X=64536 = 0 xFC18 X化为16进制,即X=0 xFC18=1111110000011000B
31、。 所以,T0的初值为: TH0=0 xFC TL0=0 x18 (2)初始化程序设计 6/24/2022机器人控制技术基础2对寄存器IP、IE、TCON、TMOD的相应位进行正确设置,将计数初值送入定时器中。 (3)程序设计 中断服务程序除产生方波外,还要注意将计数初值重新装入定时器中,为下一次中断作准备。 参考程序: TMOD = 0 x01;/设置T0为方式1 TH0 = 0 xFC; TH0 = 0 x18; ET0 = 0; EA = 1; TR0 = 1; 6/24/2022机器人控制技术基础2 /* Time0中断服务程序,使用寄存器组2 */voidmTime0Interrup
32、t( ) interrupt 1 /using 2TH0 = 0 xFC;TL0 = 0 x18; P1_0 = !P1_0;例7-2 假设系统时钟为12MHz,编写定时器T0产生1秒定时的程序。(1)T0工作方式的确定(坚决不要用,除非新型CPU)定时时间较长,采用哪一种工作方式? 由各种工作方式的特性,可计算出: 方式0最长可定时8.192ms; 6/24/2022机器人控制技术基础2 方式1最长可定时65.536ms; 方式2最长可定时256s。选方式1,每隔50ms中断一次,中断20次为1s。 (2)计算计数初值 因为:(216-X)(12/12)10-6 = 5x10-2 所以:X=
33、15536=3CB0H 因此:TH0=0 x3C; TL0=0 xB0; (3)20次计数的实现 采用循环程序法。(4)程序设计 参考程序 : 6/24/2022机器人控制技术基础2voidmTime0Interrupt( ) interrupt 1 static unsigned char t_1000ms = 10;static unsigned char t_100ms = 2;TH0 = 0 x3C; TL0 = 0 xB0;if(!(-t_100ms) t_100ms = 2; if(!(-t_1000ms) time_tick = 1; t_1000ms = 10; /End of if(!(-t_set) /End of if(!(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能穿戴设备健康管理工程师岗位招聘考试试卷及答案
- 超声波无损检测工程师岗位招聘考试试卷及答案
- 区域医疗设备资源共享平台
- 区块链在中医名老中医经验决策的传承应用
- 年后销售活动方案策划(3篇)
- 楼顶菜园施工方案(3篇)
- 墓地防水施工方案(3篇)
- 卫生壁龛施工方案(3篇)
- 前沿技术在罕见病表型基因型可视化中的应用
- 危重患者家属沟通护理评估
- 江苏省无锡市2025-2026学年高三上学期期末考试英语试题(含答案)
- 山林共协议书范本
- 小学教师语言文字培训
- 高考全国乙卷物理考试卷含解析及答案
- 【人卫课件耳鼻喉9版】鼻科学第八章 慢性鼻炎
- (2025年)全员安全教育培训试题题库带答案
- 企业消防工作交流
- 哈尔滨工业大学概况
- 2025新疆公务员申论真题及答案
- 双汇授权合同
- 中国能源争议解决年度观察2025
评论
0/150
提交评论