注意:调试延时时要将晶振调整为11.0592MHZ(看开发板和单片机),头文件选52。
延时小灯:直接减延时
#include "reg51.h"typedef unsigned char u8;typedef unsigned int u16; //重定义保留字,使之简写sbit led=P2^0; //D1特殊位定义void delay(u16 i)//延时函数,方便调用{while(i--); //i随后赋值,表示延时时长}void main(){while(1) //无限循环{led=0; //将对应串口赋值为低电平,产生电位差以点亮leddelay(50000); //不超过65535,点亮时间 450msled=1;delay(50000); //熄灭时间,大约492ms}}
亮->延时->灭->延时……
for循环延时
#include "reg52.h"typedef unsigned char u16 ;typedef unsigned int u8 ;sbit D1=P2^0;void delay(){u8 x,y;for(x=200; x>0; x--){for(y=300; y>0; y--);//用keil软件调试出500ms}}void main(){while(1){D1=0;delay();D1=1;delay();}}
带参数的子程序
#include "reg52.h"typedef unsigned char u16 ;typedef unsigned int u8 ;sbit D1=P2^0;void delay(u8 z){u8 x,y;for(x=z; x>0; x--){for(y=70; y>0; y--);//用keil软件调试出500ms}}void main(){while(1){D1=0;delay(800);D1=1;delay(800);}}
基本时序
