新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机c语言教程:C51变量

单片机c语言教程:C51变量

作者:时间:2012-09-11来源:网络收藏

void main(void)
{
unsigned int a;
unsigned char b;
do{
for (a=0;a50000;a++)
P1_0 = 0; //点亮P1_0
for (a=0;a50000;a++)
P1_7 = 0; //点亮P1_7
for (b=0;b255;b++)
{
for (a=0;a10000;a++)
P1 = b; //用b的值来做跑马灯的花样
}
P1 = 255; //熄灭P1上的LED
for (b=0;b255;b++)
{
for (a=0;a10000;a++) //P1_1闪烁
P1_1 = 0;
for (a=0;a10000;a++)
P1_1 = 1;
}
}while(1);
}

. Keil c51指针

c支持一般指针(Generic Pointer)和存储器指针(Memory_Specific Pointer).

1. 1. 一般指针

一般指针的声明和使用均与标准C相同,不过同时还能说明指针的存储类型,例如:

long * state;为一个指向long型整数的指针,而state本身则依存储模式存放。

char * xdata ptr;ptr为一个指向char数据的指针,而ptr本身放于外部RAM区,以上的long,char等指针指向的数据可存放于任何存储器中。

一般指针本身用3个字节存放,分别为存储器类型,高位偏移,低位偏移量。

2. 2. 存储器指针

基于存储器的指针说明时即指定了存贮类型,例如:

char data * str;str指向data区中char型数据

int xdata * pow; pow指向外部RAM的int型整数。

这种指针存放时,只需一个字节或2个字节就够了,因为只需存放偏移量。

3. 3. 指针转换

即指针在上两种类型之间转化:

l 当基于存储器的指针作为一个实参传递给需要一般指针的函数时,指针自动转化。

l 如果不说明外部函数原形,基于存储器的指针自动转化为一般指针,导致错误,因而请用“#include”说明所有函数原形。

l 能强行改变指针类型。

的存储类别

一、static(静态局部)

1、静态局部变量在程序整个运行期间都不会释放内存。

2、对于静态局部变量,是在编译的时候赋初值的,即只赋值一次。如果在程序运行时已经有初值,则以后每次调用的时候不再重新赋值。

3、如果定义局部变量的时候不赋值,则编译的时候自动赋值为0。而对于自动变量而言,定义的时候不赋值,则是一个不确定的值。

4、虽然静态变量在函数调用结束后仍然存在,但是其他函数不能引用。

二、用extern声明外部变量。

用extern声明外部变量,是为了扩展外部变量的作用范围。比如一个程序能由多个源程序文件组成。如果一个程序中需要引用另外一个文件中已经定义的外部变量,就需要使用extern来声明。

正确的做法是在一个文件中定义外部变量,而在另外一个文件中使用extern对该变量作外部变量声明。

c语言相关文章:c语言教程


单片机相关文章:单片机教程


单片机相关文章:单片机视频教程


单片机相关文章:单片机工作原理


存储器相关文章:存储器原理


尘埃粒子计数器相关文章:尘埃粒子计数器原理
激光器相关文章:激光器原理


评论


相关推荐

技术专区

关闭