手把手教你学51单片机-C语言基础

文章介绍了二进制、十进制和十六进制在C语言编程中的应用,强调了for和while循环语句的使用,以及函数的形式参数列表和返回值类型。文中还通过流水灯程序展示了如何利用移位操作实现LED灯的左右移动,涉及到了软件延时和条件判断。
摘要由CSDN通过智能技术生成

二进制、十进制和十六进制

对于二进制来说,8 位二进制我们称之为一个字节。

我们在进行 C 语言编程的时候,我们只写十进制和十六进制,那么不带 0x 的就 是十进制,带了 0x 符号的就是十六进制。

C 语言变量类型和范围

C 语言的数据基本类型分为字符型、整型、长整型以及浮点型。

for 循环语句

while 循环语句

函数

形式参数列表,也叫做形参列表,这个是函数调用的时候,相互传递数据用的

 

函数值类型,就是函数返回值的类型。

一个工程文件必须有且仅有一个 main 函数,程序执行的时候,都是从 main 函数开 始的。

Keil 软件延时

 精确延时有两个方法,一个方法是用定时器来延时,另外一个就是用库函数_nop_();,一个 NOP 的时间是一个机器 周期的时间。

调试看一下延时的时间:

 

 流水灯程序

从左移到右,然后右边左移 

#include <reg52.h>

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()
{
    unsigned int i = 0;   //定义循环变量i,用于软件延时
    unsigned char dir = 0;   //定义移位方向变量dir,用于控制移位的方向
    unsigned char shift = 0x01;  //定义循环移位变量shift,并赋初值0x01

    ENLED = 0;
    ADDR3 = 1;
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;
    while (1)  //主循环,程序无限循环执行该循环体语句
    {
        P0 = ~shift;              //P0等于循环移位变量取反,控制8个LED
        for (i=0; i<20000; i++);  //软件延时
        if (dir == 0)             //移位方向变量为0时,左移
        {
            shift = shift << 1;   //循环移位变量左移1位
            if (shift == 0x80)    //左移到最左端后,改变移位方向
            {
                dir = 1;
            }
        }
        else                      //移位方向变量不为0时,右移
        {
            shift = shift >> 1;   //循环移位变量右移1位
            if (shift == 0x01)    //右移到最右端后,改变移位方向
            {
                dir = 0;
            }
        }
    }
}
#include <reg52.h>

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()
{
    unsigned int i = 0;     //定义循环变量i,用于软件延时
    unsigned char cnt = 0;  //定义计数变量cnt,用于移位控制

    ENLED = 0;
    ADDR3 = 1;
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;
    while (1)  //主循环,程序无限循环执行该循环体语句
    {
        P0 = ~(0x80 >> cnt);      //P0等于0x80右移cnt位,控制8个LED
        for (i=0; i<20000; i++);  //软件延时
        cnt++;                    //移位计数变量自加1
        if (cnt >= 8)             //移位计数超过7后,再重新从0开始
        {
            cnt = 0;
        }
    }
}

 移位操作,其中>代表的是右移。比如 a = 0x01<<1;就是 a 的结果等于 0x01 左移一位。移位完之后,低位补0。

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
51单片机是一种较为常见的单片机型号,采用C语言进行编程。以下是关于51单片机C语言编程的一些相关内容。 首先,51单片机C语言编程需要具备一定的C语言基础知识。因为C语言是一种较为通用的编程语言,掌握好基本的数据类型、语法、流程控制等知识对于编写51单片机的程序非常重要。 其次,编写51单片机的程序需要用到C语言的标准库函数以及51单片机特定的功能库函数。标准库函数可以帮助我们实现一些基本的功能,如输入输出、字符串处理等。而51单片机特定的功能库函数则包括了与51单片机硬件相关的操作,比如计时器、中断等。 另外,编程过程中还需要了解51单片机的内部结构和寄存器的使用方法。了解51单片机的内部结构和寄存器的功能可以帮助我们更好地控制硬件,编写出更为高效的程序。 最后,对于51单片机C语言编程来说,还需要有一定的电路基础知识。因为51单片机是一种嵌入式系统,需要和外部电路进行配合使用。了解一些电路知识可以帮助我们更好地理解51单片机的工作原理,并且在实际应用中进行硬件设计和调试。 总之,51单片机C语言编程是一门综合性比较强的技术,除了掌握C语言基础知识外,还需要了解51单片机的内部结构和硬件特性,并且具备一定的电路基础知识。只有综合运用这些知识,我们才能够编写出高效、可靠的51单片机程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一壶浊酒..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值