C语言基础及流水灯的实现

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

二进制前缀:0b

十六进制前缀:0x

对于二进制来说,8位二进制称之为一个字节,二进制的表达范围值是从0b00000000~0b11111111,而在程序中用十六进制表示的时候就是从0x00到0xFF,这里教大家一个二进制转换十进制和十六进制的方法,二进制4位一组,遵循8/4/2/1的规律,比如0b1010,那么从最高位开始算,数字大小是8*1+4*0+2*1+1*0=10,那么十进制就是10,十六进制就是0xA。

C语言变量类型和范围

字符型unsigned char0~255
signed char-128~127
整型unsigned int0~65535
signed int-32768~32767
长整型unsigned long0~4294967295(0~2^32)
signed long-2147483648~21747483647
浮点型float-3.4×10^-38~3.4×10^38
double

C51里等同于float

C语言基本运算符

+、-、*、/、%、++、--、移位操作,其中<<代表的是左移,>>代表的是右移、取反:~、

++b=b+1;

b++的值是b+1之前的值

Keil调试

进入debug模式,除了可以看程序运行了多长时间外,还可以观察各个寄存器、各个变量的数值变化情况。单击View菜单里的Watch Windows→Watch 1,可以打开变量观察窗口,如图4-11所示。


图4-11 变量观察窗口

在这个窗口内,可以通过双击或按F2键,然后输入想观察的变量或寄存器的名字,后边就会显示出它的数值

 #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 = ~(0x01 << cnt);      //P0等于1左移cnt位,控制8个LED
        for (i=0; i<20000; i++);     //软件延时
        cnt++;              //移位计数变量自加1
        if (cnt >= 8)          //移位计数超过7后,再重新从0开始
        {
          cnt = 0;
        }
      }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
51单片机是一款非常常见的单片机,也是学习嵌入式系统的必备工具之一。流水灯是一个简单的程序案例,是快速入门的好选择。在这个案例中,我们将探讨如何使用C语言编写51单片机的流水灯程序。 流水灯程序的基本原理很简单:多个 LED 灯按照一定的时间顺序依次点亮。程序需要用到GPIO输出口进行逐个点亮或熄灭的操作。为了实现流水灯的效果,我们需要使用一个计数器和一个循环结构。当计数器满足一定条件时,程序将指示 LED 灯逐个点亮并熄灭,从而实现流水灯的效果。 开始编写程序的第一步是定义需要使用的 GPIO 端口和计数器。在本例中,我们将使用P0口来控制 LED 灯的点亮和熄灭,然后使用一个数码管显示当前的计数器值。接下来,我们将编写一个基本的循环结构来控制 LED 灯的点亮和熄灭。 在具体编写流水灯程序前,我们需要将51单片机的开发环境搭建好。这包括安装相应的编程软件和芯片调试器,还需要将程序下载到单片机中进行调试。在编写完成之后,我们需要使用软件调试程序并使用芯片调试器将程序烧录到单片机中。 总之,通过本例的流水灯程序案例,我们可以初步认识到51单片机的编程特点以及如何使用C语言编写简单的程序。如果能够理解并熟练掌握这一案例,相信会对我们学习嵌入式系统的基础知识和技能有很好的启迪作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值