单片机入门学习笔记----第一课:简单的C语言语法+流水灯实验

时间:2023-01-20 20:00:33

 第一课:流水灯实验11.20

1C51常用数据类型:

无符号整型:unsigned int 16位数 取值0-65535

无符号字符型: unsigned char 8位数 取值0-255

2C51常用头文件:

reg51.h reg52.h math.h ctype.h stdio.h stdlib.h absac.h intrins.h

reg51.hreg52.h用来定义5152单片机的特殊功能寄存器和位寄存器,头部内容大部分一样,52就比51多了几行定义T2寄存器的内容

math.h定义常用数学运算

3C51的运算符:

算术运算符:

% 用来求余数 10%3=1

关系运算符:

!= 测量不等

&&

||

! 

位运算符:

&  按位与

|  按位或

^  异或

~  取反

>> 右移

<< 左移

4、所需器件

①排阻:103=10*10^3欧姆 150=15*10^0欧姆 最后一位表示数量级

②发光二极管::单向导通性,通过5毫安左右电流可发光,电流越大亮度越强,但要控制在3-20毫安之间,需在阳极串联一个电阻保证其通过的电流不要过大,又称“限流电阻”,发光时测得二极管两端电压为1.7V,称之为“导通压降”

74h573锁存器:

OE反:输出使能端,低电平有效

1D-8D:数据输入端

1Q-8Q:数据输出端

LE:锁存允许端

H L:高低电平

X:任意电平

Z:高阻态

 单片机入门学习笔记----第一课:简单的C语言语法+流水灯实验单片机入门学习笔记----第一课:简单的C语言语法+流水灯实验

5、单片机C语言语句:

前置:声明书写

#include<>           //包含头文件

#define A=B          //宏定义

void XX()               //声明子函数

int/char C,D;         //定义常量

void main()           //主函数

{}

while循环语句

格式

while(表达式)

{

内部语句(可为空)

}

原则:若表达式不是0,即为真,那么执行语句,否则跳出执行后面的语句。

使用

While(1)     //死循环,永远跳不出的执行

{

需要循环使用的语句

}

Eg

#include<reg52.h>

void main()

{

P1=0xfe;

While(1);

}

for循环,演示语句

格式

for(表达式1;表达式2;表达式3)

{

语句(可为空)

}

使用for延时:、

③带参数函数的写法和调用

首先要在void main()前声明

然后输入循环语句

void Delayms(unsigned int xms)  此写法方便修改延时时间

{

unsigned int i,j;

for(i=xms;i>0;i--)

   for(j=110;j>0;i--);  //子循环

}

然后再需要延时的语句下一行键入

Delayms(1000)   //延时1000ms=1s

 

从中间到两边流水灯

④不带参数函数的写法及调用

  for(i=1000;i>0;i--)        //延时1s

    for(j=110;j>0;j--);

如果一些语句不止一次用到,而且内容相同,就可以把它写成一个不带参数的语句,档主函数需要时直接调用这个子函数,以下写法与上边的语句效果相同,使用前需在主函数前声明,

不带参数括号内为空 void delay1s()

  void delay1s()              //括号里面无任何数据或符号,即此函数为无参数符号

  {

    for(i=1000;i>0;i--)        //延时1s

      for(j=110;j>0;j--);

  }

6、利用C51库函数实现流水灯

使用C51中自带头文件intrins.h中的_crol_和_cror_函数实现循环左移和循环右移,利用位运算符<<和>>实现左移和右移。

 

综合练习: