单片机的控制方法还是使用C语言来控制所以在C语言这里新开一个系列;和C语言的程序相比,51单片机的执行更加趋向于过程而非结果,也就是说单片机输出结果的方法使用执行程序的过程,也就是说一次一次的执行这个程序,来体现所需要的结果;和只需要执行一次程序就得到结果的C语言程序不同,单片机需要一次一次的循环执行程序,故单片机的程序结构大体是这样的:


#include "reg51.h" 

 

  main() 

 
 

  { 

 

  while(1) 

 

  {/*程序语句*/} 

 
 

  }


单片机需要一次一次的执行程序,然后一次一次的显示结果,所以单片机的主要结构是循环。


除此之外,单片机驱动每个元件的方法是输出电平不同的电信号,所以在主函数的循环之前,还需要对单片机的输出口进行定义,用于给你在程序里使用:例如我点亮一个LED就要写出这样的程序:


#include"reg51.h" 

 

  sbit led=P0^0 

 

  main() 

 
 

  {while (1) 

 
 

  {led =1; 

 

  } 

 
 

  }


这个程序在执行过编译之后生成的.HEX 文件写入单片机之后就可以让单片机的第一个LED一直亮着(你还得把P0^0所对应的输出管脚和第一个LED的输出管脚相连接),如果你想让那个LED闪烁就让单片机对那个LED周期性的输出高低电平,这样就可以看到LED在闪烁,但是程序的执行是一瞬间的,换句话说,执行的速度远快于人眼可以捕捉的速度,所以我们还需要让他延长执行的时间,你可以把“led =1;”这个语句写一万遍,这样就可以进行延时,但是更好的方法是编写一个延时函数,让函数执行相应的时间来达到演示的目的:

int delay(int a) 

 

  {while (a) 

a--; 
 

  }


在单片机的基本编写的程序中加入上述的一些模块就可以实现一些基本的功能:


#include "reg51.h" 

 
 
 
 

  sbit XXX/*管脚名*/=Px^x;//管脚位置 

 
 

  int XXX (int X)//自定义函数 

 
 

  {/*函数语句*/} 

 

  int delay (int a) 

 
 

  {while (a) 

 

  {a--;} 

 

  }//延时函数 

 
 
 
 
 

  main() 

 
 

  {while (1) 

{/*yujuti*/} 
 

  }


这样一个最基本的单片机程序体就完成了,剩下的只是需要自己编写一些程序或者模块加入到程序中就完成了。