关于C51的入门实例

  我们在编写单片机软件的时候,经常运用的语言就是C。对于汇编来说,虽然其代码效率较高,但是编写大型程序的时候则相对困难,而C则优势明显,现阶段很多商业代码都是由C完成的。所以,对于C51的学习是非常必要的。

  下面是一段简短的单片机C代码:

 

/****************************************************************                                                            
            程序名称:   八位LED单灯左移动流水灯显示                                   
*****************************************************************/

/*头文件*/
#include <reg52.h>      
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

/*端口定义*/
#define led_port P0      /*定义LED显示的数据脚*/

 

/*1MS为单位的延时程序*/
void delay_1ms(uchar x)
{
    uchar j;
    while(x--){
        for(j=0;j<125;j++)
            {;}
        }   
}

 

/*主程序*/
void main()
{
    uchar led_sdata; /*显示寄存器*/
    uchar i;
    
    while(1){
        led_sdata=0xfe; /*初始化显示寄存器为1号灯亮*/
        for(i=0;i<8;i++){
            led_port = led_sdata; /*将显示寄存器输出到LED端口*/
            led_sdata = (led_sdata<<1)+1; /*将显示寄存器数据左移1位,并将第一位置高,即熄灭*/
            delay_1ms(200);
            delay_1ms(200);
            delay_1ms(200);  /*延时*/
      }
     }

}


 

  #include <reg52.h>

  这个伪指令的作用是包含了52系列单片机的寄存器和IO口的申明(注意,51单片机和52单片机是有部分区别的,他们的ROM空间、RAM空间等都有不同)

  #include <intrins.h>

  这个伪指令的作用是定义了一些命令操作的简写形式,比如左移右移的操作。

  其中1ms延时不是精确的延时,如果在实际情况中需要精确的延时,则最好使用定时器,或者用汇编语言来书写。可以看出,这个流水灯的C代码简短易读,容易实现。

posted on 2010-08-18 09:11  枫飒LoVe之舞  阅读(329)  评论(0)    收藏  举报

导航