//实例22:用whille 语句控制LED
#include
/**************************************** 函数功能:延时约60ms (3*100*200=60000μs) ****************************************/ voiddelay60ms(void) {
unsignedcharm,n; for(m=0;m<100;m++) for(n=0;n<200;n++)
;
}
/**************************************** 函数功能:主函数
****************************************/ voidmain(void) {
unsignedchari;
while(1) //无限循环 {
i=0; //将i 初始化为0
while(i<0xff) //当i小于0xff(255)时执行循环体 {
P0=i; //将i 送P0口显示 delay60ms();//延时
i++; //i自增1 } } }
//实例23:用do-whiile 语句控制P0 口8位LED流水点亮
#include
116/ 192
unsignedcharm,n; for(m=0;m<100;m++) for(n=0;n<200;n++)
;
}
/**************************************** 函数功能:主函数
****************************************/ voidmain(void) { do {
P0=0xfe; //第一个LED亮 delay60ms();
P0=0xfd; //第二个LED 亮 delay60ms();
P0=0xfb; //第三个LED 亮 delay60ms();
P0=0xf7; //第四个LED亮 delay60ms();
P0=0xef; //第五个LED亮 delay60ms();
P0=0xdf; //第六个LED 亮 delay60ms(); delay60ms();
P0=0xbf; //第七个LED 亮 delay60ms();
P0=0x7f; //第八个LED亮 delay60ms();
}while(1); //无限循环,使8 位LED 循环流水点亮 }
//实例24:用字符型数组控制P0口8 位LED流水点亮
#include
unsignedcharm,n; for(m=0;m<100;m++)
117/ 192
for(n=0;n<200;n++)
;
}
/**************************************** 函数功能:主函数
****************************************/ voidmain(void) {
unsignedchari;
unsignedcharcode Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义无符 号字符型数组 while(1) {
for(i=0;i<8;i++) {
P0=Tab[i];//依次引用数组元素,并将其送P0口显示 delay60ms();//调用延时函数 } } }
// 25 P0
//实例25: 用P0 口显示字符串常量
#include
/************************************************* 函数功能:延时约150ms (3*200*250=150000μs=150ms *************************************************/ voiddelay150ms(void) {
unsignedcharm,n; for(m=0;m<200;m++) for(n=0;n<250;n++) ;
}
/************************************************* 函数功能:主函数
*************************************************/ voidmain(void) {
unsignedcharstr[]={\ is:\ //将字符串赋给字符型全部元素 赋值
unsignedchari;
118/ 192
while(1) {
i=0; //将i 初始化为0,从第一个元素开始显示 while(str[i]!='\\0') //只要没有显示到结束标志'\\0' {
P0=str[i]; //将第i 个字符送到P0口显示 delay150ms(); //调用150ms 延时函数 i++; //指向下一个待显字符 } }
}
//实例26:用P0
口显示指针运算结果
#include
unsignedchar*p1,*p2; //定义无符号字符型指针变量p1,p2 unsignedchari,j; //定义无符号字符型数据 i=25; //给i 赋初值25 j=15; p1=&i//使指针变量指向i ,对指针初始化 ; //使指针变量指向j ,对指针初始化 p2=&j ;
P0=*p1+*p2; //*p1+*p2相当于i+j,所以P0=25+15=40=0x28
//则P0=00101000B,结果P0.3、P0.5引脚LED熄灭,其余点亮
while(1)
; //无限循环,防止程序“跑飞”
}
// 27 P0 8 LED
//实例27:用指针数组控制P0 口8位LED流水点亮
#include
/************************************************* 函数功能:延时约150ms (3*200*250=150000μs=150ms *************************************************/ voiddelay150ms(void) {
unsignedcharm,n; for(m=0;m<200;m++)
119/ 192
for(n=0;n<250;n++) ;
}
/************************************************* 函数功能:主函数
*************************************************/ voidmain(void) {
unsignedcharcode Tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedchar*p[]={&Tab[0],&Tab[1],&Tab[2],&Tab[3],&Tab[4],&Tab[5],
&Tab[6],&Tab[7]};
unsignedchari; //定义无符号字符型数据 while(1) {
for(i=0;i<8;i++) {
P0=*p[i];
delay150ms(); } }
}
// 28 P0 8 LED
//实例28:用数组的指针控制P0 口8 位LED 流水点亮
#include
/************************************************* 函数功能:延时约150ms (3*200*250=150000μs=150ms *************************************************/ voiddelay150ms(void) {
unsignedcharm,n; for(m=0;m<200;m++) for(n=0;n<250;n++) ;
}
/************************************************* 函数功能:主函数
*************************************************/ voidmain(void) {
220/ 192