六、单片机指针咋么用? (1)、用单片机指针编程点亮LED灯的单片机C语言程序 #include<reg51.h>
#define uchar unsigned char
sbit LED = P1^0;
uchar table[] = {0,1};//定义数组
uchar *pi;//声明指针变量
void main()
{
while(1)
{
pi = table;//把数组变量table里的第一个元素0所在内存地址(由内存器分配)赋给指针变量pi,也可这样表示:pi = &table[0],其表达意义一样。
LED = *pi;//*pi表示取指针变量pi所指内存地址(由内存器分配)对应的值(即数组table[]中的第一个元素0)赋给led,如果是要数组里面第二个元素1这一步就该写成*(pi+1)。
}
}
(2)、用单片机指针编程循环点亮8 位LED流水灯的单片机C语言程序 #include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar *pi;//声明指针变量
uchar code table[]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//定义数组
void delay(uint t)
{
uchar m,n;
for(m=0;m<t;m++)
for(n=0;n<110;n++);
}
void main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
pi = table;//把数组变量table里的第一个元素所在内存地址(由内存器分配)赋给指针变量pi,也可这样表示:pi = &table[0],其表达意义一样。
P1 = *(pi+i);//*(p+i)表示取指针变量pi所指向数组变量table内元素所在内存地址对应的值赋给P1端口,比如:把数组变量table内的第一个元素(即0xFE)所在内存地址(由内存器分配)对应的值(即table内的第一个元素0xFE)赋给P1端口。
delay(220);
}
}
}
|