{
unsigned char p1, p2; //定义无符号字符型指针变量p1,p2 unsigned char i,j; //定义无符号字符型数据 i=25; //给i赋初值25 j=15;
p1=&i; //使指针变量指向i ,对指针初始化 p2=&j; //使指针变量指向j ,对指针初始化
P0= p1+ p2; // p1+ p2相当于i+j,所以P0=25+15=40=0x28
//则P0=0010 1000B,结果P0.3、P0.5引脚LED熄灭,其余点亮 while(1)
; //无限循环,防止程序“跑飞” }
//实例27:用指针数组控制P0口8位LED流水点亮
#include
/ 函数功能:延时约150ms (3 200 250=150 000μs=150ms / void delay150ms(void) {
unsigned char m,n; for(m=0;m<200;m++) for(n=0;n<250;n++) ; }
/ 函数功能:主函数
/ void main(void) {
unsigned char code Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char p[ ]={&Tab[0],&Tab[1],&Tab[2],&Tab[3],&Tab[4],&Tab[5], &Tab[6],&Tab[7]};
unsigned char i; //定义无符号字符型数据 while(1) { for(i=0;i<8;i++) { P0= p[i];
}
delay150ms(); } }
//实例28:用数组的指针控制P0 口8 位LED流水点亮
#include
/ 函数功能:延时约150ms (3 200 250=150 000μs=150ms / void delay150ms(void) {
unsigned char m,n; for(m=0;m<200;m++) for(n=0;n<250;n++) ; }
/ 函数功能:主函数
/ void main(void) {
unsigned char i;
unsigned char Tab[ ]={0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF, 0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE, 0xFE,0xFC,0xFB,0xF0,0xE0,0xC0,0x80,0x00, 0xE7,0xDB,0xBD,0x7E,0x3C,0x18,0x00,0x81, 0xC3,0xE7,0x7E,0xBD,0xDB,0xE7,0xBD,0xDB}; //流水灯控制码 unsigned char p; //定义无符号字符型指针 p=Tab; //将数组首地址存入指针p while(1) { for(i=0;i<32;i++) //共32个流水灯控制码 { P0= (p+i); // (p+i)的值等于a[i] delay150ms(); //调用150ms延时函数 } } }
//实例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位 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}; //流水灯控制码 led_flow(Tab); } //实例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) {