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;
        }
      }
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值