关于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代码简短易读,容易实现。
浙公网安备 33010602011771号