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

2010-9-6 09:15 4826 16 18 分类: 消费电子

               很多初学单片机者往往对C51的头文件感到很神秘,而为什么要那样写,甚至有的初学者喜欢问,P1口的P为什么要大写,不大写行不行呢?其实这样的问题,看过本文后,就会明白。其实这个是在头文件中用sfr定义的,现在定义好了的是这样的sfr P1           = 0x90;,也就是说,到底大写,还是小写,就是在这里面决定的。这就说明,如果你要用小写,就得在头文件中改为小写。其实它都是为了编程序方便才这样写的,在程序编译时,就会变成相应的地址(如P1就变成了0x90)。

                还有一点就是,现在有很多改进型的单片机,它们有很多新增的特殊功能寄存器在标准的reg51.h或reg52.h中没有定义,这就需要自己加进头文件(相关厂家已经把它们定义好了),当然也可以直接在程序中定义。下面是一个标准的C51头文件:
/*         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          = PSW^3;
sbit OV           = PSW^2;
sbit P            = PSW^0; //8052 only

/*         TCON         */
sbit TF1          = TCON^7;
sbit TR1          = TCON^6;
sbit TF0          = TCON^5;
sbit TR0          = TCON^4;
sbit IE1          = TCON^3;
sbit IT1          = TCON^2;
sbit IE0          = TCON^1;
sbit IT0          = TCON^0;

/*         IE         */
sbit EA           = IE^7;
sbit ET2          = IE^5; //8052 only
sbit ES           = IE^4;
sbit ET1          = IE^3;
sbit EX1          = IE^2;
sbit ET0          = IE^1;
sbit EX0          = IE^0;

/*         IP         */
sbit PT2          = IP^5;
sbit PS           = IP^4;
sbit PT1          = IP^3;
sbit PX1          = IP^2;
sbit PT0          = IP^1;
sbit PX0          = IP^0;

/*         P3         */
sbit RD           = P3^7;
sbit WR           = P3^6;
sbit T1           = P3^5;
sbit T0           = P3^4;
sbit INT1         = P3^3;
sbit INT0         = P3^2;
sbit TXD          = P3^1;
sbit RXD          = P3^0;

/*         SCON         */
sbit SM0          = SCON^7;
sbit SM1          = SCON^6;
sbit SM2          = SCON^5;
sbit REN          = SCON^4;
sbit TB8          = SCON^3;
sbit RB8          = SCON^2;
sbit TI           = SCON^1;
sbit RI           = SCON^0;

/*         P1         */
sbit T2EX         = P1^1; // 8052 only
sbit T2           = P1^0; // 8052 only
             
/*         T2CON         */
sbit TF2           = T2CON^7;
sbit EXF2          = T2CON^6;
sbit RCLK          = T2CON^5;
sbit TCLK          = T2CON^4;
sbit EXEN2         = T2CON^3;
sbit TR2           = T2CON^2;
sbit C_T2          = T2CON^1;
sbit CP_RL2 = T2CON^0;

文章评论2条评论)

登录后参与讨论

用户1406868 2016-5-2 12:24

赞!!!

cnlgy1_545366445 2011-9-24 08:51

明白

用户1375439 2011-1-28 19:59

好文章!

wen715591069_844196294 2010-11-25 21:54

常常听人说,但是自己还没机会吃那亏~~

用户1571015 2010-11-21 00:27

恩 有道理 很有道理 借鉴了O(∩_∩)O谢谢

用户1172595 2010-10-27 18:05

很好!非常值得学习!

用户1464946 2010-10-26 22:59

这个确实要顶

opto_chang_309335259 2010-10-25 22:03

该顶,实际工作,读起来平易亲和

用户1576080 2010-10-25 19:21

博主,我加了你的msn,希望有机会交流一下。

用户1558640 2010-10-25 19:21

spartan-6的fpga有些型号没有禁运 比如当时我们就买过S6 LX45,就没事
相关推荐阅读
用户1092547 2010-09-14 15:28
51单片机与PC机的串行通信到底有多难?
本人从事单片机相关工作多年,刚开始学习串行通信时,没有老师指导,自己看完了好几本单片机教材,又上网查了很多关于单片机与计算机串行通信的文章,足足花了三个月时间才能够较自由的控制单片机的串口,当然包括做...
用户1092547 2010-09-14 15:26
学习51系列单片机个人经验
本人从事单片机相关工作多年,首先是从51系列单片机开始学习的。自己想把学习经验写下来,与大家共同探讨学习单片机的捷径。 具体如下: 1、学习电子技术基础知识,如电路、模拟电路和数字电路。这是学习电类相...
用户1092547 2010-09-06 09:32
现在学会单片机到底要投资多少钱(学习单片机最廉价的方案)
               很多朋友问我,学习单片机到底要花多少钱,我的回答是肯定的:只要花很少的钱。                他们总是说:要买仿真器,编程器,还要买实验箱或开发板,还要买大量...
用户1092547 2010-09-06 09:18
51单片机C语言编程中对单片机绝对地址访问的两种方法
                  在进行8051单片机应用系统程序设计时,编程都往往少不了要直接操作系统的各个存储器地址空间。C51程序经过编译之后产生的目标代码具有浮动地址,其绝对地址必须经过BL...
用户1092547 2010-09-06 09:17
硬件仿真器会不会被淘汰
             谈起单片机的硬件仿真器,给我的第一印象便是非常的昂贵。像我这样想在不到十年就想学习用会市面上大部分流行的单片机的单片机爱好者来说,根本就不可能去花钱买那么昂贵的单片机硬件仿真...
我要评论
2
16
关闭 站长推荐上一条 /2 下一条