单片机C语言编程

来源:互联网 发布:南阳企业网站seo 编辑:程序博客网 时间:2024/05/04 05:08

一、首先我们先了解一下51单片机的头文件#include <REG51.H>

为了能看懂REG51.H头文件,下面需了解Keil C51编译器扩展的关键字:

关键字用途说明bit位标量声明声明一个位标量或位类型sbit位变量声明声明一个可位寻址变量sfr特殊功能寄存器声明声明一个特殊功能寄存器(8位)sfr16特殊功能寄存器声明声明一个特殊功能寄存器(16位)data存储器类型说明直接寻址的8051内部数据存储器bdata存储器类型说明
可位寻址的8051内部数据存储器idata存储器类型说明
间接寻址的8051内部数据存储器pdata存储器类型说明
分页寻址的8051外部数据存储器xdata存储器类型说明
8051外部数据存储器code存储器类型说明
8051程序存储器interrupt中断函数声明定义一个中断函数reetrant再入函数声明定义一个再入函数using寄存器组定义定义8051工作寄存器组



















REG51.H文件主要定义了特殊功能寄存器和可位寻址变量:

如sfr    P3     = 0XB0;

    sbit  RXD  = 0XB0;

等.

二、多个工程文件连接的基本方法

多个函数在多个C源文件中,可使用文件包含其它C源文件或在本文件中使用extern关键字。

三、数据类型的隐式转换:

bit -> char -> int -> long -> float

signed -> unsigned

四、变量的定义

在C51中对变量定义的格式:[存储种类] 数据类型 [存储器类型] 变量名表;

存储种类包括auto、extern、static和register,其中auto为默认值。其作用:http://zhidao.baidu.com/

data访问速度最快直接访问内部数据存储器(128B)bdata允许位与字节混合访问
可位访问内部数据存储器(16B)idata允许访问全部内部地址
间接访问内部数据存储器(256B)pdataMOVX @Ri指令访问分页访问外部数据存储器(256B)xdataMOVX @DPTR指令访问
外部数据存储器(64K)codeMOVC @DPTR指令访问
程序存储器(64K)














若忽略存储器类型,则按编译模式SMALL、COMPACT或LARGE所规定的默认存储器类型确定变量的存储器类型。

1.SMALL时,变量被定义在80C51单片机的内部数据存储器(data区)中。

2.COMPACT时,变量被定义在分页外部数据存储器(pdata区)中。

3.LARGE时,变量被定义在外部数据存储器(xdata区)中。

五、可位寻址对象定义

1.sbit 位变量 = 位地址;

sbit  RXD  = 0XB0;

2.sbit 位变量 = 特殊功能寄存器名^位位置;

sbit RXD = P3^0;

3.sbit 位变量 = 字节地址^位位置;

sbit RXD = 0XB0^0;

同理,当对象为C51内部数据存储器的可寻址区(bdata)时:

int bdata num = 1234;

sbit num_bit15 = num^15;

位位置取决于数据类型在内存中占用的位数。


0 0