单片机学习(二)

原视频3.1单片机C51编程环境的建立_哔哩哔哩_bilibili

学习建议:有数电、模电、C语言基础

---------------------------------------------------------------------------------------------------------------------------------

软件:keil与Proteus联合仿真

keil与Proteus下载安装及使用建议本站搜索

联合仿真教程:Protues+keil的联合仿真(以51单片机为例)_哔哩哔哩_bilibili

---------------------------------------------------------------------------------------------------------------------------------

一、注意事项

    1.程序中必须包含

while(1){}

    作为循环主体,防止sp指针失控导致死机

二、定义变量

    1.在51单片机程序编写中,大部分采用标准C语言完成,有部分特殊定义规定

    1.1 sfr特殊功能寄存器定义

    sfr特殊功能寄存器+ = +地址

    例如:

sfr PSW = 0x60;
sfr P1 = 0x90;
sfr16 DPRT = 0x82 //16位独有

1.2 头文件   <reg51.h>

1.3 中断

 编码实例:跑马灯,八只led循环亮起

#include<reg51.h>
delay()
{
  unsigned char i ;
  for(i = 0;i<500;i++)
  {;}
}//延时
void main()
{
  unsigned char i,k;
  while(1)
  {
    k = 0xFE;//11111110
    for(i = 0;i<7;i++)
    {
      P1 = k;
      delay();
      k = k<<1;//移位
      k = k|0x01;//将最后一位置1
    }
  }
}

解释:

  1.移位

  k=11111110

  k = k<<1 

→k = 11111100      

或的作用

移位结束k=11111100

这时P1的8位中六位为1,两位为0,代表两只led亮起,这显然不符合我们的既定目标

而移位“<<”正是将所有数位左移,空位补0

所以最后一位必为0

我们将移位结果或0x01,将最低为置1即可

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值