单片机C语言编程

一、首先我们先了解一下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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值