目录

P1.0输出低电平时,使D1正向偏置,就会点亮发光二极管LED;P1.0输出高电平时,LED熄灭。如果P1.0输出电平在高低电平之间不停转换,则LED灯会产生闪烁。也就是说,先点亮LED灯一段时间之后,再熄灭LED灯,再延时一段时间后点亮LED灯,如此反复(可用循环语句实现)。
用单片机控制一个灯闪烁,认识单片机的工作频率
- #include
//包含单片机寄存器的头文件 - /****************************************
- 函数功能:延时一段时间
- *****************************************/
- void delay(void) //两个void分别表示无需返回值和没有参数传递
- {
- unsigned int i; //定义无符号整数,最大取值范围为0~65535
- for(i=0;i<20000;i++); //做20000次空循环
- //什么也不做,等待一个机器周期
- }
- /*******************************************************
- 函数功能:主函数 (C语言规定必须有且只能有1个主函数)
- ********************************************************/
- void main(void)
- {
- while(1) //无限循环
- {
- P1=0xfe; //P1=1111 1110B, P1.0输出低电平
- delay(); //延时一段时间
- P1=0xff; //P1=1111 1111B, P1.0输出高电平
- delay(); //延时一段时间
- }
- }
P1=0xfe; //P1=1111 1110B, P1.0输出低电平
delay(); //延时一段时间
P1=0xff; //P1=1111 1111B, P1.0输出高电平
delay(); //延时一段时间
单片机需要一个时钟信号送给内部各电路,才能使它们有节拍地工作。时钟信号的频率由外部振荡电路的晶振频率决定。如果外接晶振的频率是12MHz,则外部振荡电路送给单片机时钟信号的频率也是12MHz。此时,我们说单片机的工作频率就是12MHz。以下是与工作频率相关的几个重要概念。
振荡周期:为单片机提供时钟脉冲信号的振荡源的周期。例如,单片机外接晶振频率是12MHz时,则振荡周期就是(1/12MHz)=(1/12)μs。
机器周期:51系列单片机的一个机器周期由12个振荡周期组成。如果一个单片机的工作频率是12MHz,那么它的工作周期就是(1/12)μs,其机器周期就是12×(1/12)μs= 1μs;如果单片机的外接晶振频率为11.0592MHz,其机器周期就是12×(1/11.0592)μs= 1.085μs。
指令周期:单片机执行一条指令所用的时间。一般来说,单片机执行1个简单指令需要一个机器周期,执行复杂指令需要两个机器周期。因为一个机器周期非常短,一般只有1~2μs,所以单片机工作速度非常快。