收藏 分享(赏)

单片机中用c编程时头文件解析.ppt

上传人:kpmy5893 文档编号:7326778 上传时间:2019-05-14 格式:PPT 页数:10 大小:36KB
下载 相关 举报
单片机中用c编程时头文件解析.ppt_第1页
第1页 / 共10页
单片机中用c编程时头文件解析.ppt_第2页
第2页 / 共10页
单片机中用c编程时头文件解析.ppt_第3页
第3页 / 共10页
单片机中用c编程时头文件解析.ppt_第4页
第4页 / 共10页
单片机中用c编程时头文件解析.ppt_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、单片机中用c编程时头文件解析,#include /*包含库函数 */,单片机中用c编程时头文件reg51.h及reg52.h解析,我们在用c语言编程是往往第一行就是reg52.h或者其他的自定义头文件,我们怎么样来理解呢?,1)“文件包含”处理。程序的第一行是一个“文件包含”处理。所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来。程序中包含at89x52.h,文件的目的是为了要使用P1 (还有其他更多的符号)这个符号,即通知C 编译器,程序中所写的P1 是指80C51 单片机的P1 端口而不是其它变量。这是如何做到的呢?,打开reg51.h 可以看到这样的一些内容:(此文件一般在C

2、:/KEIL/C51/INC下 ,INC文件夹根目录里有不少头文件,并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。),#ifndef _AT89X52_H_ #define _AT89X52_H_ sfr P0= 0x80; sfr SP= 0x81; sfr DPL= 0x82; sfr DPH= 0x83; sfr PCON= 0x87; sfr TCON= 0x88; sfr TMOD= 0x89; sfr TL0= 0x8A; sfr TL1 = 0x8B; sfr TH0 = 0x

3、8C; sfr TH1= 0x8D; sfr P1= 0x90; sfr SCON= 0x98;,sfr SBUF= 0x99; sfr P2 = 0xA0; sfr IE= 0xA8; sfr P3 = 0xB0; sfr IP = 0xB8; sfr T2CON= 0xC8; sfr T2MOD= 0xC9; sfr RCAP2L= 0xCA; sfr RCAP2H= 0xCB; sfr TL2= 0xCC; sfr TH2= 0xCD; sfr PSW= 0xD0; sfr ACC= 0xE0; sfr B = 0xF0;,2)特殊功能寄存器定义(sfr): sfrt 变量名=地址值,这

4、里都是一些符号的定义,即规定符号名与地址的对应关系。 这样定义后,在C程序中可直接用变量名来代替寄存器地址进行各种操作和赋值。如:P0=numi | 0x80; IE=0x8a;,sfr P0 = 0x90;这样的一行,即定义P0 与地址0x80 对应,P0 口的地址就是0x80,(0x80 是C 语言中十六进制数的写法,相当于汇编语言中写80H)。sfr 并非标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新的关键词,其用法是: sfrt 变量名=地址值。,sbit P0_0 = 0x80; sbit P0_1 = 0x81; sbit P0_2 = 0x

5、82; sbit P0_3 = 0x83;,2)位或引脚的定义,sbit P0_0 = P00; sbit P0_1 = P01; sbit P0_0 = 0x800; sbit P0_1 = 0x801;,在C 语言里,如果直接写P1.0,C 编译器并不能识别,而且P1.0 也不是一个合法的C语言变量名,所以得给它另起一个名字,这里起的名为P1_0,可是P1_0 是不是就是P1.0呢?你这么认为,C 编译器可不这么认为,所以必须给它们建立联系,这里使用了Keil C的关键字sbit 来定义, sbit 的用法有三种: 第一种方法:sbit 位变量名地址值 第二种方法:sbit 位变量名SFR

6、 名称变量位地址值 第三种方法:sbit 位变量名SFR 地址值变量位地址值,或,sbit P0_0 = 0x80; sbit P0_1 = 0x81; sbit P0_2 = 0x82; sbit P0_3 = 0x83; sbit P0_4 = 0x84; sbit P0_5 = 0x85; sbit P0_6 = 0x86; sbit P0_7 = 0x87;,sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92; sbit P1_3 = 0x93; sbit P1_4 = 0x94; sbit P1_5 = 0x95; sbit P1

7、_6 = 0x96; sbit P1_7 = 0x97;,sbit P3_0 = 0xB0; sbit P3_1 = 0xB1; sbit P3_2 = 0xB2; sbit P3_3 = 0xB3; sbit P3_4 = 0xB4; sbit P3_5 = 0xB5; sbit P3_6 = 0xB6; sbit P3_7 = 0xB7; sbit RXD = 0xB0; sbit TXD = 0xB1; sbit INT0 = 0xB2; sbit INT1 = 0xB3; sbit T0 = 0xB4; sbit T1 = 0xB5; sbit WR = 0xB6; sbit RD =

8、 0xB7;,2)位或引脚的定义,/* BIT Register */ /* PSW */ sbit CY = 0xD7; sbit AC = 0xD6; sbit F0 = 0xD5; sbit RS1 = 0xD4; sbit RS0 = 0xD3; sbit OV = 0xD2; sbit P = 0xD0;,/* TCON */ sbit TF1 = 0x8F; sbit TR1 = 0x8E; sbit TF0 = 0x8D; sbit TR0 = 0x8C; sbit IE1 = 0x8B; sbit IT1 = 0x8A; sbit IE0 = 0x89; sbit IT0 =

9、0x88;,如定义PSW 中的OV 可以用以下三种方法:sbit OV=0xd2 (1)说明:0xd2 是OV 的位地址值sbit OV=PSW2 (2)说明:其中PSW 必须先用sfr 定义好sbit OV=0xD02 (3)说明:0xD0 就是PSW 的地址值因此这里用sfr P1_0=P10;就是定义用符号P1_0 来表示P1.0 引脚,如果你愿意也可以起P10 一类的名字,只要下面程序中也随之更改就行了。这样对寄存器位进行定义后,在C语言中就可对寄存器位的名称进行直接引用,如:if(P3_1=0);P1_7=1;TR0=1;,/* IE */ sbit EA = 0xAF; sbit

10、ES = 0xAC; sbit ET1 = 0xAB; sbit EX1 = 0xAA; sbit ET0 = 0xA9; sbit EX0 = 0xA8; /* IP */ sbit PS = 0xBC; sbit PT1 = 0xBB; sbit PX1 = 0xBA; sbit PT0 = 0xB9; sbit PX0 = 0xB8; /* P3 */ sbit RD = 0xB7; sbit WR = 0xB6;,sbit T1 = 0xB5; sbit T0 = 0xB4; sbit INT1 = 0xB3; sbit INT0 = 0xB2; sbit TXD = 0xB1; sbit RXD = 0xB0; /* SCON */ sbit SM0 = 0x9F; sbit SM1 = 0x9E; sbit SM2 = 0x9D; sbit REN = 0x9C; sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; #endif,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报