0xC3,0xE7,0x7E,0xBD,0xDB,0xE7,0xBD,0xDB}; //流水灯控制码
unsigned char p; //定义无符号字符型指针 p=Tab; //将数组首地址存入指针p while(1) { }
//实例29:用P0 、P1口显示整型函数返回值
#include
/ 函数功能:计算两个无符号整数的和
/ unsigned int sum(int a,int b) {
unsigned int s; s=a+b; return (s); }
/ 函数功能:主函数
/ void main(void) {
unsigned z; z=sum(2008,2009);
P1=z/256; //取得z的高8位 P0=z%6; //取得z的低8位
for(i=0;i<32;i++) //共32个流水灯控制码 }
{
P0= (p+i); // (p+i)的值等于a[i] }
delay150ms(); //调用150ms延时函数
}
while(1) ;
//实例30:用有参函数控制P0口8位LED流水速度
#include
/ 函数功能:延时一段时间
/ void delay(unsigned char x) {
unsigned char m,n; for(m=0;m / 函数功能:主函数 / void main(void) { unsigned char i; unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; //流水灯控制码 while(1) { //快速流水点亮LED for(i=0;i<8;i++) //共8个流水灯控制码 { P0=Tab[i]; } delay(100); //延时约60ms, (3 100 200=60 000μs) ; //慢速流水点亮LED for(i=0;i<8;i++) //共8个流水灯控制码 } { } P0=Tab[i]; delay(250); //延时约150ms, (3 250 200=150 000μs) } //实例31:用数组作函数参数控制流水花样 #include / 函数功能:延时约150ms / void delay(void) { unsigned char m,n; for(m=0;m<200;m++) for(n=0;n<250;n++) } / 函数功能:流水点亮P0口8位LED / void led_flow(unsigned char a[8]) { unsigned char i; for(i=0;i<8;i++) } / { P0=a[i]; delay(); } ; 函数功能:主函数 / void main(void) { unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F}; } //实例32:用指针作函数参数控制P0口8位LED流水点亮 #include / 函数功能:延时约150ms / void delay(void) { unsigned char m,n; for(m=0;m<200;m++) for(n=0;n<250;n++) } / 函数功能:流水点亮P0口8位LED / void led_flow(unsigned char p) //形参为无符号字符型指针 { unsigned char i; while(1) { i=0; //将i置为0,指向数组第一个元素 while( (p+i)!='\\0') //只要没有指向数组的结束标志 { ; //流水灯控制码 led_flow(Tab); P0= (p+i);// 取的指针所指变量(数组元素)的值,送P0口 } / 函数功能:主函数 / void main(void) { unsigned char code Tab[ ]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F, 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE, 0x18,0x0,0x81,0xC3,0xE7,0xFF,//流水灯控制码 0xFF,0xFE,0xFC,0xFB,0xF0,0xE0,0xC0,0x80, 0x00,0xE7,0xDB,0xBD,0x7E,0xFF,0xFF,0x3C, 0xFF,0x7E}; delay(); //调用延时函数 } i++; //指向下一个数组元素 } unsigned char pointer; pointer=Tab; led_flow(pointer); } //实例33:用函数型指针控制P1口灯花样 #include /