最新《C51单片机技术教程》.doc
《最新《C51单片机技术教程》.doc》由会员分享,可在线阅读,更多相关《最新《C51单片机技术教程》.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品资料C51单片机技术教程.2008年12月16日C51单片机技术教程 田希晖 薛亮儒 人民邮电出版社第1 章 C51单片机的组成及结构第2 章 C51单片机指令系统第3 章 单片机的C程序设计第4 章 C51单片机内部资源第5 章 单片机的系统扩展第6 章 单片机的机间通信第7 章 单片机人机交互的C编程第8 章 Keil C51上机指南第9 章 单片机系统综合实例笔记 不是把所有知识点都记下。 而是 记那些需要学习的,或者总结得很好的东西。/指令系统的寻址方式和寻址空间序号寻址方式使用符号和变量寻址空间1立即数#data, #data16程序存储器(片内片外)64KB2直接direct或
2、data, #data16内部RAM 128B 数据存储器(片外RAM)64KB访问SFR 的唯一方法3寄存器R0R7, A, B, Cy, DPTR片内RAM 128B4寄存器间接R0, R1, SP片内RAM 128BR0, R1, DPTR数据存储器(片外RAM)64KB5相对PC+rel(偏移量)程序存储器(片内片外)64KB6变址A+DPTR, A+PC同上7位bit内部RAM(20H2FH),SFR内部RAM数据传送指令示意图C51的数据类型1、基本类型、构造类型、指针类型、空类型2、基本类型:位型(bit)、字符型(char)、整型(int)、长整型(long)、浮点型(floa
3、t)、双精度浮点型(double)3、构造类型:数组类型、结构体、共用体、枚举C51系列单片机将int型变量的 高 位字节数存放在 低 地址字节中。浮点数存储格式 IEEE754标准。24位精度,尾数的最高位始终为“1”,因而不保存,内存中字节存储顺序 如下:1位符号位、8位指数位、23位尾数地址+0+1+2+3内容MMMMEMMSEE其中, S符号位,E阶码,M尾数C51的变量的存储类型存储类型与存储空间的对应关系data直接寻址片内数据存储区,访问速度快(128B)bdata可位寻址片内,允许位与字节混合访问(16B)idata间接寻址片内,可访问片内全部RAM地址空间(256B)pdat
4、a分页寻址片外(256B)xdata片外(64KB)code程序存储器(64KB)变量说明举例:data char var; / 字符变量var 定位在片内数据存储区char code MSG=PARAMETER; / 字符数组MSG 定位在程序存储区unsigned long xdata array100; / 无符号长整型数组 定位在片外RAM区bit lock;unint xdata vector1044;sfr P0=0x80;char bdata flags;sbit flag0=flags0;指针变量说明举例:long xdata *px; / 指针px指向long型 xdata区
5、,指针本身位于在默认存储区,指针长度为2Bchar xdata *data pd; / 指针pd指向字符型 xdata区, 自身在data区, 长度为2Bdata char xdata *pd; / 同上(等效)data int *pn; / 和int *data pn及intr *pn等效,定义一个类型为int型的通用型指针,指针本身在data区,长度为3B。说明:指针指向的存储类型,即 指向哪个存储区。 存储类型的声明位置在数据类型和指针名(如*px)之间,如无此项声明,则此指针型变量为通用型。 指针变量自身的存储类型,即指针处于什么区与自身的长度无关,该声明可位于声明语句的开关,也可在*
6、和变量名之间。#include 特殊功能寄存器定义#include 绝对地址定义位变量及其定义1、 位变量C51定义 一般语法格式:bit 位变量名; 如:bit lock_bit;2、 采用字节寻址变量.位 的方法。 如:bdata int ibase; sbit mybit=ibase15;3、 函数可包含类型为bit的参数,也可将其作为返回值。 但注意,使用(#pragma disable)或包含明确的寄存器组切换(using n)的函数不能返回位值。4、 对特殊功能寄存器的位的定义。例:#include sbit P1_1=P11; / 无名位sbit ac=ACC7; / 无名位RS
7、1=1; RS0=0; / 有名位 sbit OV=0xD02;sbit CY=PSW7; 5、 对位变量定义的限制。位变量不能定义为指针、数组。 逻辑右移 或 算术右移, 取决于计算机系统。/ 看懂下面的就很容易理解 头文件中的绝对地址访问了。一般指针包括3字节:2字节偏移和1字节存储器类型:即地址+0+1+2内容存储器类型偏移量高位偏移量低位其中, 存储器类型编码如下:存储器类型idataxdatapdatadatacode编码值12345例,以xdata类型的0x1234地址作为指针可以表示如下:地址+0+1+2内容0x020x120x34常数作指针时,必须注意正确定义存储类型和偏移。
8、例:把常数0x40写入地址为0x8000的外部数据存储器。#define XBYTE ( (char *) 0x20000L )XBYTE0x8000=0x40;其中, XBYTE被定义为(char *)0x20000L, 0x20000L为一般指针,其存储类型为2,偏移量为0x0000, 这样XBYTE成为指向xdata零地址的指针,而XBYTE0x8000则是外部数据存储器的0x80000绝对地址。/ 后面还有头文件中其化存储区的绝对地址访问定义共用体变量可在不同时间内保存不同类型和长度的数据,从而提供了在同一存储单元中可以分时操作不同类型数据的功能。union Uuint word;st
9、ruct uchar hi; uchar lo; bytes;union U newcount;unit oldcount;newcount.bytes.hi=TH1;newcount.bytes.lo=TL1;oldcount=newcount.word;这样,定时器的计数值即可以按字节使用,也可以按字使用。函数“声明”和“定义”:“定义”是指对函数功能的确定,包括指定函数名、函数值类型,形参及其类型、函数体等,它是一个完整的、独立的函数单位;而“声明”的作用则是把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以使在调用该函数时系统按此对照检查。函数指针 即函数入口地址。对用函
10、数的指针变量调用函数可归纳为如下几点:(1) 指向函数的指针变量的一般定义形式为:函数值返回类型 (*指针变量名)(函数形参表);(2) 在给函数指针变量赋值时,只需给出函数名。(3) 对指向函数的指针变量进行诸如p+n, p+, p-的运算是没有意义的。C51的库函数1 字符函数库 CTYPE.H extern bit F(char);其中,F可以为 isalpha/ isalnum/ iscntrl/ islower/ isupper/ isdigital extern char F(char);其中,F可以为 toint/ toupper/ tolower2 标准函数库 STDLIB.H
11、 extern T atoX(char *S); 其中,T可以是float/long/int,X与T对应分别为f/l/i void *malloc(unsigned int size); / 申请内存 void free(void *p); / 释放内存 void init mempool(void *p, unsigned int size); / 清零内存区3 数学函数库 MATH.H extern T abs(T val); 其中,T可以是float/long/int/char extern float exp(float x); / e的指数 extern float log/log1
12、0(float x); / e或10的对数 extern float sqrt(float x); / 平方根 extern float sin/cos/tan(float x);/ 三角函数 extern float pow(float x, float y); / x的y次方4 绝对地址访问头文件 ABSACC.H#define XBYTE( (unsigned char *) 0x20000L; PBYTE 3 DBYTE 4 CBYTE 5以上定义用来对C51系列单片机的存储空间进行地址访问,以字节为单位寻址。只需将BYTE换成WORD,就可以实现以字为单位寻址。5 内部函数库 INT
13、RINS.H/ 将变量循环左/右移n位unsigned char _crol_(unsigned char val, unsigned char n); int _irol_ int long _lrol_ longunsigned char _cror_(unsigned char val, unsigned char n); int _iror_ int long _lror_ long/ 对应汇编的NOP指令,延时一个机器周期void _nop_(void); / 测试给定的位参数x是否为1。若为1,返回1,同时将该位复位为0;否则返回0。bit _testbit_(bit x);6 访
14、问SFR和SFR_bit地址头文件REGxxx.H头文件reg51.h、reg52.h等文件中定义了C51单片机中的SFR寄存器名和相关的位变量名。编程举例循环队列是一种FIFO存储结构,在单片机应用程序中经常使用。队列需要队头指针 listhead、队尾指针listtail、队列长度listlen、队列空标志listempty和队列满标志listfull。初始时,listhead=listtail=0, listempty=listfull=0。需要定义两个函数,操作队列 listwrite()、listread()。iswrite()函数的操作思路:if(队列满) / 退出;else/ 将
15、数据写入listtail指向的数组单元listtail+;if(listtail=listlen)listtail=0;listempty=0;if(listhead=listtail) listfull=1;listread() / 函数的操作思路:if(队列空) / 退出else/ 将listtail指向的数组单元的内容读出;listhead+;if(listhead=listlen)listhead=0;listfull=0;if(listtail=listhead)listempty=1;函数的实现:#define listlen=10;unsigned char listlistle
16、n;char listwrite(char x)if(listfull)return 0;else/ 将数据写入listtail指向的数组单元listtail+;if(listtail=listlen)listtail=0;listempty=0;if(listhead=listtail) listfull=1;return 1;char listread(char *x)if(listempty)return 0;else/ 将listtail指向的数组单元的内容读出;listhead+;if(listhead=listlen)listhead=0;listfull=0;if(listtai
17、l=listhead)listempty=1;return 1;习题与思考:(挑了几个问答)1. C语言中的类型是怎么分配的? 什么是赋值操作?2. C语言的函数有什么特性?函数的存储类型和数据类型的意义是什么?3. 当一个函数需要返回多个值时,可以怎么做?4. 编写把字符串s逆转的函数reverse()5. 把上面的函数写成递归函数。第4章 C51单片机的内部资源重点及难点单片机中断和定时与单片机通信的基本概念、单片机的中断系统、单片机的定时/计数器、单片机外部中断源的扩展、数据传递的方式、串行通信控制寄存器、MCS51串行通信工作方式及其应用。基本要求1. 掌握单片机中断和定时与单片机通信
18、的基本概念2. 掌握单片机的中断源、中断控制、中断响应过程的基本概念及单片机系统的功能和使用方法3. 掌握单片机的定时/计数器的初值计算、工作方式控制寄存器的初始化、程序的设计方法和步骤4. 串行通信的基本方式、数据传送的次序、串行通信控制器的每一位的定义、串行通信的四种工作方式5. 了解单片机外部中断源扩展的常用方法和步骤教学内容1、 中断系统2、 定时/计数器3、 串行通信接口无条件传送方式、程序查询方式、中断传送方式中断系统:中断的基本概念、中断源、外部中断、内部中断、中断入口地址中断控制:TCON、IE、IP,SCON中断控制寄存器汇总寄存器名称D7D6D5D4D3D2D1D0定时/计
19、数器TCON(88H)TF1TR1TF0TR0IE1IT1IE0IT0位地址略串行口控制寄存器SCON(98H)SM0SM1SM2RENTB8RB8TIRI位地址略中断允许寄存器IE(A8H)EA/ESET1TX1ET0EX0位地址略中断优先级寄存器IP(B8H)/PSPT1PX1PT0PX0位地址略中断响应:中断响应的条件、中断响应的过程、中断响应时间、中断请求的撤销、寄存器组切换/ 下面的话让人晕 是他没讲清,还是我没搞清呢 不要紧 看懂后面的就可以了。寄存器组切换,在汇编语言中由编程者选择。但对混合语言编程的连接器,汇编程序使用的组可被选定,因而连接器不能像普通存储器那样分配寄存器组。在
20、C51中,寄存器组选择取决于特定的编译器指令。高优先组中断可以中断正在处理的低优先级程序,因而必须注意寄存器组。除非可以确定未使用R0R7(用汇编程序),最好给每种优先级程序分配不同的寄存器组。中断不允许用于外部函数,它对函数目标代码影响有收下几点:(1) 当调用函数时,SFR的ACC、B、DPH、DPL、PSW(当需要时)入栈。(2) 如果不使用寄存器组切换,甚至中断函数所需的所有工作寄存器都入栈。(3) 函数退出前,所有的寄存器内容出栈。(4) 函数由8051的指令RETI终止。中断服务程序使用的任何程序也使用一寄存器组。 递归程序可以使用,它们自己调用自己是因为它们依赖堆栈。在中断程序的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C51单片机技术教程 最新 C51 单片机 技术 教程
限制150内