单片机c语言中常用的头文件有哪些?分别有啥作用啊?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机c语言中常用的头文件有哪些?分别有啥作用啊?相关的知识,希望对你有一定的参考价值。
对于c语言的头文件来说,通常情况下是使用#include+文件名语句进行引用。格式如下:
#include
或
#include
"mylib.h"
使用
#include时,使用引号与尖括号的意思是不一样的。使用引号””时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录。所以对于用户自定义头文件来说,通常使用双引号。
而使用尖括号<>时,刚好是相反的搜索顺序。所以对于编译系统提供的头文件来说,通常使用尖括号。
例:
假设我们有两个文件名一样的头文件
hardware.h
,但内容却是不一样的。一个保存在编译器指定的头文件目录下,我们把它叫做文件i
,另一个则保存在当前工程的目录下,我们把它叫做文件
ii
。
如果我们使用的是#
include
,则我们引用到的是文件
i。如果我们使用的是#include
“hardware.h”,则我们引用的将是文件
ii
。 参考技术A 我觉得都是把数据库调出来
有事你需要某些东西
但是
放在某些库里
用的时候
就
需要调出来
申明 参考技术B reg51.h是专用寄存器文件,8031,8051都为reg它包括8051的SFR及其位定义,一般系统都必须包括这个文件。
absacc.h绝对地址文件。该文件是只定义了几个宏,以确定各存储空间的绝对地址。
stdlib.h,动态内存分配函数。
string.h缓冲区处理函数。
stdio.h输入输出流函数,流函数通过8051的窜口或者用户定义的io口来读取数据,默认为8051窜口.
单片机的中断标志位是有啥作用?
有一个程序是给单片机一个每1毫秒的周期性中断,然后在中断中对中断标志位进行清零。但是我有一个疑问,中断标志位在这里有什么作用?为什么要对中断标志位清零?1毫秒的周期性中断是不是从中断标志位清零开始计时的?要是中断程序没有执行完,下一毫秒中断有来了,程序该怎么执行呢?
四个问号分为四点一一解答:1、一般来说单片机的中断发生有两个条件,一是中断标志位置位,二是中断允许,如果这两个条件都满足则进入中断,因为正常情况下中断一直是允许的,那么只能通过标志位来区分是否有中断挂起,
2、如果进入中断不清除标志位,那么这一中断服务程序结束后由于标志位还是置位的并且中断是允许的,那么还会再次进入该中断,就会发生一直在执行中断程序的情况
3、周期性中断是由定时器辅助完成的,只要定时时间到,硬件就会自动置位标志位,这时中断发生,定时器还在运行,与中断处理是并行的没有冲突,因此周期性的中断不是从中断标志位清零开始的。
4、如果中断程序没有执行完并且一下个中断又来了,那么硬件还是会自动置位标志位的,如果在这之前已经清零标志位那么中断结束后会再进入一次该中断,如果这时还没有清除中断标志位,则第二个1毫秒中断无效。 参考技术A 有一个程序是给单片机一个每1毫秒的周期性中断,
--是定时器,产生的中断吧?
然后在中断中对中断标志位进行清零。
--中断标志,清零,不用你关心。
--通常都是进入中断就自动清零。
要是中断程序没有执行完,下一毫秒中断有来了,程序该怎么执行呢?
--你的中断程序,就不应该编写这么长。追问
是定时器中断。
中断标志清零,我必须要关心,因为我要写程序对他清零,由于不了解这个中断标志位,所以我不懂是在中断程序的一开始就清零还是在中断程序的末尾清零。
至于中断程序,我也知道不应该太长,但是我是想明白太长了,下个中断来了,单片机是怎么执行的。
中断标志清零,我必须要关心,
--你不必关心这个。
--51单片机,进入定时中断程序后,标志就自动清零。
因为我要写程序对他清零,
--画蛇添足。
至于中断程序,我也知道不应该太长,但是我是想明白太长了,
下个中断来了,单片机是怎么执行的。
--将继续执行你的很长的中断程序。
--不理会新产生的中断申请。
的确有些单片机是可以自动清零中断标志位的,但是我这么问,肯定是我用的这款单片机的PIT中断标致位是必须要手动清零的。当然可能我的提问没有说清楚吧。还是谢谢你的回答。
追答51单片机,有五个中断源。
有四个会自动清除。
只有串口中断,不会自动清除标志位。
因为,串口中断有两个入口:接收中断和发送中断。
需要用软件判断是什么中断后,再清除。
另外,52系列的,T2 中断,不自动清除标志。
嗯,是的。谢谢了。51的确如此。我现在用的这个单片机是基于M4内核的K60单片机,他是需要手动清零的。
追答采纳答案说:
《1、一般来说单片机的中断发生有两个条件,
一是中断标志位置位,
二是中断允许,
如果这两个条件都满足则进入中断,...》
----
有不足。
如果当前,正在执行高优先级的、或同优先级的中断程序,
就不会响应新的中断申请。
------------------
采纳答案还说:
《4、如果中断程序没有执行完并且一下个中断又来了,那么硬件还是会自动置位标志位的,》
----
什么是下一个中断又来了呀?
是在中断来了之后,硬件才会自动置位标志位的吗?
概念明显错误。
应该说:
这个中断程序没有执行完时,也可能会有硬件将标志位置位,这仅仅代表来了新的申请。
------------------
采纳答案还说:
《如果在这之前已经清零标志位那么中断结束后会再进入一次该中断》
这是完全错误的说法。
------------------
采纳答案还说:
《如果这时还没有清除中断标志位,则第二个1毫秒中断无效。》
越来越错。
采纳答案,从头到尾,几乎就没有对的地方。
骗子太多了。
以上是关于单片机c语言中常用的头文件有哪些?分别有啥作用啊?的主要内容,如果未能解决你的问题,请参考以下文章