1、主函数 (C语言规定必须有也只能有1个主函数)*/void main(void) while(1) /无限循环 /P1=1111 1110B, P1.0输出低电平 delay(); /延时一段时间 P1=0xff; /P1=1111 1111B, P1.0输出高电平/实例5:将 P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 while(1) /无限循环 P1=0xff; / P1=1111 1111B,熄灭LED P0=P1; / 将 P1口状态送入P0口 P2=P1; / 将 P1口状态送入P2口 P3=P1; / 将 P1口状态送入P3口/实例6:使用P3口流水点亮8位LE
2、D void delay(void) unsigned char i,j;250;i+) for(j=0;jj+) ;主函数 while(1) P3=0xfe; /第一个灯亮 delay(); /调用延时函数 P3=0xfd; /第二个灯亮 P3=0xfb; /第三个灯亮 P3=0xf7; /第四个灯亮 P3=0xef; /第五个灯亮 delay(); P3=0xdf; /第六个灯亮 P3=0xbf; /第七个灯亮 P3=0x7f; /第八个灯亮 /调用延时函数 /实例7:通过对P3口地址的操作流水点亮8位LEDsfr x=0xb0; /P3口在存储器中的地址是b0H, 通过sfr可定义805
3、1内核单片机 /的所有内部8位特殊功能寄存器,对地址x的操作也就是对P1口的操作 /利用循环等待若干机器周期,从而延时一段时间/*/ x=0xfe; x=0xfd; x=0xfb; x=0xf7; x=0xef; x=0xdf; x=0xbf; x=0x7f;/实例8:用不同数据类型控制灯闪烁时间/*用整形数据延时一段时间*/void int_delay(void) /延时一段较长的时间 unsigned int m; /定义无符号整形变量,双字节数据,值域为065535 for(m=0;m0)&(90xab);/将逻辑运算结果送P0口 /设置无限循环,防止程序“跑飞”/实例14:用P0口显示
4、条件运算结果 P0=(84)?8:4;/将条件运算结果送P0口,P0=8=0000 1000B/实例15:用P0口显示按位异或 P0=0xa20x3c;/实例16:用P0显示左移运算结果 P0=0x3b2;/将左移运算结果送P0口,P0=1110 1100B=0xec /无限循环,防止程序“跑飞”/实例17:万能逻辑电路实验sbit F=P14; /将F位定义为 P1.4sbit X=P15; /将X位定义为 P1.5sbit Y=P16; /将Y位定义为 P1.6sbit Z=P17; /将Z位定义为 P1.7 F=(X)&Y)|Z; /将逻辑运算结果赋给F/实例18:用右移运算流水点亮P1
5、口8位LED/*/ unsigned int n; for(n=0;n1; /每次循环P1的各二进位右移1位,高位补0/实例19:用if语句控制P0口8位LED的流水方向sbit S1=P14; /将S1位定义为P1.4sbit S2=P15; /将S2位定义为P1.5 if(S1=0) /如果按键S1按下 P0=0x0f; /P0口高四位LED点亮 if(S2=0) /如果按键S2按下 P0=0xf0; /P0口低四位LED点亮 /实例20:用swtich语句的控制P0口8位LED的点亮状态10000; i=0; /将i初始化为0 if(S1=0) /如果S1键按下 if(S1=0) /如果
6、再次检测到S1键按下 i+; /i自增1 if(i=9) /如果i=9,重新将其置为1 i=1; switch(i) /使用多分支选择语句 case 1: P0=0xfe; /第一个LED亮 break; case 2: P0=0xfd; /第二个LED亮 break; case 3:P0=0xfb; /第三个LED亮 case 4:P0=0xf7; /第四个LED亮 case 5:P0=0xef; /第五个LED亮 case 6:P0=0xdf; /第六个LED亮 case 7:P0=0xbf; /第七个LED亮 break; case 8:P0=0x7f; /第八个LED亮 default
7、: /缺省值,关闭所有LED P0=0xff; /实例21:用for语句控制蜂鸣器鸣笛次数sbit sound=P37; /将sound位定义为P3.7延时形成1600Hz音频*/void delay1600(void) unsigned char n;100;延时形成800Hz音频void delay800(void)830; sound=0; /P3.7输出低电平 delay1600(); sound=1; /P3.7输出高电平 sound=0; delay800();/实例22:用while语句控制LED延时约60ms (3*100*200=60000s)void delay60ms(void) while(i0xff) /当i小于0xff(255)时执行循环体 P0=i; /将i送P0口显示 delay60ms(); /延时/实例23:用do-while语句控制P0口8位LED流水点亮 do delay60ms(); P0=0xfb; P0=0xf7; P0=0xef; /第
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1