小白51单片机日志(1)

这篇博客记录了作者学习单片机的过程,从基本的头文件理解到项目实践中的按键控制。作者通过分析#include<REGX52.H>头文件的作用,解释了单片机中地址与引脚操作的关系。文中提到了C++风格的函数定义,并指出单片机语言特有的数据类型如u8、u16。主要代码段展示了如何响应独立按键,实现数码管显示的递增和递减功能。整个过程强调了实践和记录对于学习的重要性。
摘要由CSDN通过智能技术生成

因为记性不好学过的东西老是忘记于是决定把过程都记录下来,也方便自己归纳整理和记忆

小白从基本实验和简单比赛入手,采取通过项目的方式来学习

首先是我自己对单片机的理解,不一定正确,但是有利于我理解一些原理

首先引入一段基本程序

#include <REGX52.H>
void delay(unsigned int x)
{
	while(x--)
	{
		unsigned char i,j;
		i=2;
		j=239;
		do
		{
			while(--j);
		}while(--i);
	}
}
	
	void main()
	{
		int num=0;
		P2=0xfe;
		while(1)
		{
			if(P3_1==0)
			{
				delay(20);
				while(P3_1==0);
				delay(20);
				
				num++;
				if(num>=8)
					num=0;
				P2=(0xff<<num);
			}
				
				if(P3_0==0)
				{
					delay(20);
					while(P3_0==0);
					delay(20);
					
					num--;
					if(num<0)
						num=7;
					P2=(0xff<<num);
				}
		}
	}

这一段是简单的独立按键代码,当然我现在是学过一些东西了之后回头来看这段代码的,所以很简单,但是刚开始学的时候觉得很难,什么都不会

好了,首先要讲的是头文件,这里用的头文件是#include <REGX52.H>,也还有其他的很多头文件可以用,这一个头文件的内容是定义了各个引脚,给引脚赋值了地址,而地址就对应着单片机里面的空间,相当于把一个数字和实际存在的物理地址连接起来了,此后的对引脚操作就是对地址操作。

第二点要讲的是函数,这里面的函数和C++没什么区别,需要注意的就是定义的时候括号里面要写变量类型和名字,void 也要写。

第三点就是main函数了,也没什么讲的,基本上所有的main函数都是要成为一个循环的,就是在main函数里面加上(我一般加的是)while(1),然后把主体函数卸载while(1)里面。

第四点是单片机语言和我之前学的C++的数据类型不太一样,它有u8,u16这种数据类型,虽然是需要自己定义的,一般需要加上像
typedef unsigned int u16; typedef unsigned char u8;
u8的数据具体指代就是一个八位的二进制数,比如01111111,10101010这种。在单片机里面应用很广,至少之前我是完全没看懂一些语句的时候很大一部分就是不理解这个八位数据,比如说左移右移,我以前就一直不知道在移动什么,然后这个左移就是(以八位为例)把整体的数字往左移动,缺的部分用0补上,具体来说就是取后七位放到前七位,最后一位变成0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值