六、单片机指针咋么用? (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);
- }
- }
- }
|