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;
熟悉 80C51 内部结构的读者不难看出,这里都是一些符号的定义,即规定符号名与地
址的对应关系。注意其中有
sfr P1 = 0x90;
这样的一行(上文中用黑体表示),即定义 P1 与地址 0x90 对应,P1 口的地址就是 0x90
(0x90 是 C 语言中十六进制数的写法,相当于汇编语言中写 90H)。
从这里还可以看到一个频繁出现的词:sfr
sfr 并标准 C 语言的关键字,而是 Keil 为能直接访问 80C51 中的 SFR 而提供了一个新
的关键词,其用法是:
sfrt 变量名=地址值。
2)符号 P1_0 来表示 P1.0 引脚。
在 C 语言里,如果直接写 P1.0,C 编译器并不能识别,而且 P1.0 也不是一个合法的 C
语言变量名,所以得给它另起一个名字,这里起的名为 P1_0,可是 P1_0 是不是就是 P1.0
呢?你这么认为,C 编译器可不这么认为,所以必须给它们建立联系,这里使用了 Keil C
的关键字 sbit 来定义,sbit 的用法有三种:
第一种方法:sbit 位变量名=地址值
第二种方法:sbit 位变量名=SFR 名称^变量位地址值
第三种方法:sbit 位变量名=SFR 地址值^变量位地址值
如定义 PSW 中的
OV 可以用以下三种方法:
sbit OV=0xd2 (1)说明:0xd2 是 OV 的位地址值
sbit OV=PSW^2 (2)说明:其中 PSW 必须先用 sfr 定义好
sbit OV=0xD0^2 (3)说明:0xD0 就是 PSW 的地址值
因此这里用 sfr P1_0=P1^0;就是定义用符号 P1_0 来表示 P1.0 引脚,如果你愿意也可以
起 P10 一类的名字,只要下面程序中也随之更改就行了。
3)main 称为“主函数”。
每一个 C 语言程序有且只有一个主函数,函数后面一定有一对大括号“{}”,在大括号
里面书写其它程序。
从上面的分析我们了解了部分 C 语言的特性,下面再看一个稍复杂一点的例子。
例 1-2 让接在 P1.0 引脚上的 LED 闪烁发光
/*************************************************
平凡单片机工作室
http://www.mcustudio.com
Copyright 2003 pingfan's mcustudio
All rights Reserved
评论7
最新资源