最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

51单片机C语言头文件及其使用

IT圈 admin 35浏览 0评论

2024年4月10日发(作者:沙文君)

51单片机C语言头文件及其使用

2007-05-29 16:33

很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚

至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这样的问

题,看过本文后,就会明白。其实这个是在头文件中用sfr定义的,现在定义好了

的是这样的sfr P1 = 0x90;,也就是说,到底大写,还是小写,就是在这里面

决定的。这就说明,如果你要用小写,就得在头文件中改为小写。其实它都是为

了编程序方便才这样写的,在程序编译时,就会变成相应的地址(如P1就变成

了0x90)。

还有一点就是,现在有很多改进型的单片机,它们有很多新增的特殊功能寄

存器在标准的reg51.h或reg52.h中没有定义,这就需要自己加进头文件(相关

厂家已经把它们定义好了),当然也可以直接在程序中定义。下面是一个标准的

C51头文件:

(此文件一般在C:KEILC51INC下 ,INC文件夹根目录里有不少头文件,

并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自

己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。)

/* BYTE Registers */

sfr P0 = 0x80;

sfr P1 = 0x90;

sfr P2 = 0xA0;

sfr P3 = 0xB0;

sfr PSW = 0xD0;

sfr ACC = 0xE0;

sfr B = 0xF0;

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 = 0x8C;

sfr TH1 = 0x8D;

sfr IE = 0xA8;

sfr IP = 0xB8;

sfr SCON = 0x98;

sfr SBUF = 0x99;

/* 8052 Extensions */

sfr T2CON = 0xC8;

sfr RCAP2L = 0xCA;

sfr RCAP2H = 0xCB;

sfr TL2 = 0xCC;

sfr TH2 = 0xCD;

/* BIT Registers */

/* PSW */

sbit CY = PSW^7;

sbit AC = PSW^6;

sbit F0 = PSW^5;

sbit RS1 = PSW^4;

sbit RS0

sbit OV

sbit P

/*

sbit TF1

sbit TR1

sbit TF0

sbit TR0

sbit IE1

sbit IT1

sbit IE0

sbit IT0

/*

sbit EA

sbit ET2

sbit ES

sbit ET1

sbit EX1

sbit ET0

sbit EX0

/*

sbit PT2

sbit PS

sbit PT1

sbit PX1

sbit PT0

sbit PX0

/*

sbit RD

sbit WR

sbit T1

= PSW^3;

= PSW^2;

= PSW^0; //8052 only

*/

= TCON^7;

= TCON^6;

= TCON^5;

= TCON^4;

= TCON^3;

= TCON^2;

= TCON^1;

= TCON^0;

*/

= IE^7;

= IE^5; //8052 only

= IE^4;

= IE^3;

= IE^2;

= IE^1;

= IE^0;

*/

= IP^5;

= IP^4;

= IP^3;

= IP^2;

= IP^1;

= IP^0;

*/

= P3^7;

= P3^6;

= P3^5;

TCON

IE

IP

P3

2024年4月10日发(作者:沙文君)

51单片机C语言头文件及其使用

2007-05-29 16:33

很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚

至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这样的问

题,看过本文后,就会明白。其实这个是在头文件中用sfr定义的,现在定义好了

的是这样的sfr P1 = 0x90;,也就是说,到底大写,还是小写,就是在这里面

决定的。这就说明,如果你要用小写,就得在头文件中改为小写。其实它都是为

了编程序方便才这样写的,在程序编译时,就会变成相应的地址(如P1就变成

了0x90)。

还有一点就是,现在有很多改进型的单片机,它们有很多新增的特殊功能寄

存器在标准的reg51.h或reg52.h中没有定义,这就需要自己加进头文件(相关

厂家已经把它们定义好了),当然也可以直接在程序中定义。下面是一个标准的

C51头文件:

(此文件一般在C:KEILC51INC下 ,INC文件夹根目录里有不少头文件,

并且里面还有很多以公司分类的文件夹,里面也都是相关产品的头文件。如果我们要使用自

己写的头文件,使用的时候只需把对应头文件拷贝到INC文件夹里就可以了。)

/* BYTE Registers */

sfr P0 = 0x80;

sfr P1 = 0x90;

sfr P2 = 0xA0;

sfr P3 = 0xB0;

sfr PSW = 0xD0;

sfr ACC = 0xE0;

sfr B = 0xF0;

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 = 0x8C;

sfr TH1 = 0x8D;

sfr IE = 0xA8;

sfr IP = 0xB8;

sfr SCON = 0x98;

sfr SBUF = 0x99;

/* 8052 Extensions */

sfr T2CON = 0xC8;

sfr RCAP2L = 0xCA;

sfr RCAP2H = 0xCB;

sfr TL2 = 0xCC;

sfr TH2 = 0xCD;

/* BIT Registers */

/* PSW */

sbit CY = PSW^7;

sbit AC = PSW^6;

sbit F0 = PSW^5;

sbit RS1 = PSW^4;

sbit RS0

sbit OV

sbit P

/*

sbit TF1

sbit TR1

sbit TF0

sbit TR0

sbit IE1

sbit IT1

sbit IE0

sbit IT0

/*

sbit EA

sbit ET2

sbit ES

sbit ET1

sbit EX1

sbit ET0

sbit EX0

/*

sbit PT2

sbit PS

sbit PT1

sbit PX1

sbit PT0

sbit PX0

/*

sbit RD

sbit WR

sbit T1

= PSW^3;

= PSW^2;

= PSW^0; //8052 only

*/

= TCON^7;

= TCON^6;

= TCON^5;

= TCON^4;

= TCON^3;

= TCON^2;

= TCON^1;

= TCON^0;

*/

= IE^7;

= IE^5; //8052 only

= IE^4;

= IE^3;

= IE^2;

= IE^1;

= IE^0;

*/

= IP^5;

= IP^4;

= IP^3;

= IP^2;

= IP^1;

= IP^0;

*/

= P3^7;

= P3^6;

= P3^5;

TCON

IE

IP

P3

发布评论

评论列表 (0)

  1. 暂无评论