关于C语言变量如何和单片机中具体硬件对应

2019-07-15 10:32发布

各位大神, 本人刚学习单片机。有一个问题想咨询一下大家。
就是我写的C语言变量,是如何和实际单片机中的某个单位元器件对应上的呢?
比如,我要控制一个LED灯点亮,那我写了一堆代码,设备是怎么知道我这堆代码是控制这个LED灯的?
是靠C语言中变量来控制吗?怎么让这个变量对应的是这个LED灯呢?
问题可能有些显得白痴,麻烦大神别笑。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
晓晓江南
1楼-- · 2019-07-16 00:12
最近我也在接触单片机,对于你的问题,涉及到编译器原理了,你只要了解单片机端口特性,特别是P1~P3。
xiaoxiaodys
2楼-- · 2019-07-16 04:23
人中狼 发表于 2017-6-7 11:28
C语言的单片机编程会有对应芯片的头文件,里面定义了单片机寄存器的名称和其地址对应关系,比如51单片机的P0口的寄存器地址是0X80,所有对P0口的操作都是对这个地址进行的,不如读或写。
在头文件里的定义是sfr P0   = 0x80;,定义了P0在程序里代表的地址是0X80,当然你自己也可以重新定义,比如#define LED_PORT P0,这就 ...

谢谢解答啦!这么说我就理解了。
rifengquan
3楼-- · 2019-07-16 08:35
我没有怎么接触过51单片机,直接看的ST的STM32系列的单片机。

看STM32的芯片手册,可以看到寄存器的基址还有偏移量什么的。

然后再去看一下,ST提供的头文件,就可以看到他们用C语言的指针把这些变量
直接定义在了相应的地址上。这样我们改变这些变量值时,就直接把值赋值在相应的地址。
青山绿水行
4楼-- · 2019-07-16 09:35
你先要看一下相关的单片机资料,搞清楚模块部分所对应的寄存器地址,如果不是很清楚可以看一下头文件里面给寄存器分配的地址,然后再对应原理图,找到你需要控制的IO口,判断你的硬件电路在什么条件可以控制IO的状态,比如按键是给IO口高电平或者低电平,高低电平哪一种可以得到你需要的结果菜鸟意见
lee_st
5楼-- · 2019-07-16 11:37
 精彩回答 2  元偷偷看……
童言无忌。
6楼-- · 2019-07-16 15:51
不知道你仔细翻看了单片机DATASHEET没有,是不是有很多寄存器?
不知道你仔细翻看单片机的“REG52.h”没有,是不是有很多端口地址定义?
不知道你看到过C语言里面的SFR寄存器映射没有,是不是对应了相应的单片机地址?
上面有人说了,“SFR”是对应单片机特殊寄存器的申明。
实际上,我们要写的地址寄存器很多,但是,为了方便,把寄存器定义在头文件里面是一种很省事的做法,程序里面直接用就ok,其实,直接写"P0=xxxxx;"就已经是往寄存器里面给值了,然后每个寄存器地址控制着某位端口,是不是很方便?

一周热门 更多>