单片机为什么要延时问题,当x=2000时,这个延时时间是怎么计算的

asp 延时条件跳转 可以修改其中的变量i的值控制是否跳转

【步运行顺序】 程序步自上往下自左往右运行。 【步运行模型】 输入条件表-->>按《触发方式》触发-->>【触发后延时】-->>输絀-->>【输出后延时】【等待完成】-->>完成【接通步名(1周期)】 步名为必填项填写后步才会生效。 【输入条件表】 提供了8组串联输入; 输入表的烸一“串”竖行的红色标记做为一组串联输入;双击“串”竖行的某一单元格可能切换加入串联状态; 【触发方式】 条件成立时触发:類似于指令中的上升沿触发,触发后在步完成之前与输入条件再无关系; 条件失效时触发:类似于指令中的下降沿触发,触发后在步完荿之前与输入条件再无关系; 实时通断:类似以指令中的OUT输出,输入条件与输出结果实时相通; 【触发后延时】【输出后延时】 “自动汾配”即自动分配定时器自动分配的为100ms定时器,也可以按要求指定定时器; “周期”即该类型定时器的延时周期数可以填写常量或指萣地址,常量直接填写数字; 【输出】 输出条件列:在界面左下表“比较表达式”中选择条件可控制具体行的输出,目前版本中“比较表达式”多条件时为多条件串联; 指令列:为常用指令其它的指令可以通过〖表达式〗的方式实现; 〖接通〗为〖SET〗,〖断开〗为〖RST〗〖输出〗为〖OUT〗,〖反转〗为〖ALTP〗; 〖表达式〗为并联执行界面右下表〖输出表达式〗表里的所有行; 〖顺序延时接通〗〖顺序延时断開〗〖顺序延时表达式〗为同一输出表内类似行会被自上往下执行上一行执行完成,才会执行下一行; 此类型操作延时为必填写否则鈈生效,当延时被触发时执行操作一个周期; 〖顺序跳转〗为配合〖顺序延时接通〗〖顺序延时断开〗可实现条件跳转操作,〖顺序跳轉〗的跳转行数在延时列填写向下填写正数,向上填写负数; 延时列:为执行该行的需要的延时模式为先延时,后执行; 延时列左侧:可以填写指定类型的定时器; 等待列:为标记退出步的条件只有在输出表里出现需要延时的行时,才需要勾选一般勾选最后的延时嘚行; 【关于临时地址分配的范围】 D寄存器 D50-D99(每张用到顺序延时的输出表用到一个D,作为顺序切换) M寄存器 M50-M249(M寄存器范围M50-99用作步状态使用M寄存器范围M100-249用作步过程临时使用,) T寄存器 T50-T199(分配在需要延时的地方:输入后延时输出后延时,输出表中具体行的延时) 【关于指令嘚定义】 软件中指令的添加及删除可以主界面左侧的”定义指令“选项卡中配置,或在配置软件目录下的版源码可采ajax页面 实例运行,即将采集任务规则与采集任务运行进行剥离方便采集任务的配置、跟踪管理; 2)支持GET、POST请求方式,支持cookie可满足需身份认真的数据采集,cookie可预先存储也可实时获取; 3)支持用户自定义的HTTP Header,通过此功能用户可完全模拟浏览器的请求操作可满足所有的网页请求要求,此功能在数据web发布时尤为有用; 4)采集网址支持数字、字母、日期、自定义字典、外部数据等多种参数最大化的简化采集网址的配置,从而達到批量化采集的目的; 5)采集网址支持导航操作(即从入口页面自动跳转到需要采集数据的页面)且导航规则支持复杂规则,导航级別不限可进行多层网址导航; 6)支持采集网址自动翻页、导航层自动翻页,定义翻页规则后系统会自动翻页进行数据采集同时此功能吔可用户分页文章的自动合并操作; 7)网络矿工支持级联采集,即在导航基础上可自动将不同级别的数据采集下来,并自动合并此功能也可称为分页采集; 8)网络矿工支持翻页数据合并,即可将多页数据进行合并典型应用为同一篇文章多页显示,系统翻页采集并合并為一条数据进行输出; 9)数据采集支持文件下载操作可下载文件、图片、flash等内容; 10)可进行ajax技术构成网页数据的采集; 11)采集规则支持特殊符号的定义,譬如:16进制0x01的非法字符; 12)采集规则支持限定符操作可精确匹配需要获取的数据; 13)采集网址支持:UTF-8、GB2312、Base64、Big5等编码,哃时可自动识别&等符号;网页编码支持:UTF-8、GB2312、Big5等编码; 14)无论是采集网址还是采集规则都支持限定范围及自定义正则; 2、数据采集高级功能 1)支持采集延时操作可控制系统采集频率,降低对目标网站的访问压力; 2)断点续采模式及数据实时存储保护用户采集投资,注意:此模式仅限于非大数据量的采集; 3)支持大数据量采集即实时采集实时入库,不会对系统性能造成任何影响; 4)提供强大的数据加工操作并可配置多条规则对所采数据同时进行加工: a)支持字符串截取、替换、附加等操作; b)支持采集数据的输出控制,输出含有指定嘚条件删除含有指定的条件; c)支持正则表达式替换; b)支持U码转汉字; 5)可自动输出所采页面地址及采集时间,提供采集日志; 6)所采数据可自动保存为文本文件、excel文件也可自动存储到数据库,数据库支持Access、MSSqlServer、MySql同时在数据存储过程中还可自动去重重复行,避免数据偅复; 7)所采数据也可自动发布到网站通过配置发布网站参数即可实现数据的在线发布操作(发布配置同采集配置,可定义cookie、HTTP Header等); 8)數据采集支持触发器操作; 9)提供采集规则分析器辅助用户配置采集规则,并分析错误内容; 10)提供Mini浏览器可自动捕获网站cookie; 11)支持采集日志,并提供容错处理; 3、触发器 触发器是一种自动化的操作手段即当满足一定的条件后,系统会自动执行某个操作利用触发器鼡户可实现采集任务的连续执行,外部程序的调用存储过程的调用等。 1)触发器支持两种种触发方式:采集数据完成触发及发布数据完荿触发; 2)触发操作支持:执行网络矿工采集任务、执行外部程序、执行存储过程; 4、任务执行计划 定时计划是一种自动化采集数据的手段用户可根据需要自动控制数据采集的时间、频率; 1)可进行周、日及自定义的时间自动化执行采集任务,并可控制采集任务计划的失效时间; 2)可自动执行的任务有:网络矿工采集任务、外部执行程序及存储过程; 5、网络雷达 网络雷达是一项非常有用的功能网络雷达主要是根据用户预定规则实现对互联网数据的监控,并按照用于预定的规则进行预警此功能可用于对网络热门帖子、感兴趣的关键词、商品价格变动的进行监控,并实现对数据的采集 1)监控源当前仅支持网络矿工定制的采集任务,通过配置网络矿工采集任务及实现了對互联网任意数据的监控; 2)监控规则支持关键词定义、数值范围等监控规则; 3)数据处理方式支持直接入库、保存网页地址及快照、电孓邮件发送等方式; 4)预警规则支持托盘图标闪烁、电子邮件预警; 6)数据加工发布套件 1)支持网络矿工数据、外部数据库、雷达监控数據的加工及发布; 2)数据加工规则支持自定义列、自动编号、字符串编辑、替换、删除重复行、固定值修改等操作; 3)数据发布支持数据庫发布及web发布:

延时与中断出错是单片机为什麼要延时新手在单片机为什么要延时开发应用过程中,经常会遇到的问题本文汇总整理了包含了MCS-51系列单片机为什么要延时、MSP430单片机为什么要延时、C51单片机为什么要延时、8051F的单片机为什么要延时、avr单片机为什么要延时、STC89C52、PIC单片机为什么要延时…..在内的各种单片机为什么要延时常见的延时与中断问题及解决方法,希望对单片机为什么要延时新手们有所帮助!

一、单片机为什么要延时延时问题20问

1、单片机为什么要延时延时程序的延时时间怎么算的?

答:如果用循环语句实现的循环没法计算,但是可以通过软件仿真看到具体时间但是一般精精确延时是没法用循环语句实现的。

如果想精确延时一般需要用到定时器,延时时间与晶振有关系单片机为什么要延时系统一般常选鼡11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易产生各种标准的波特率后两种的一个机器周期分别为1 μs和2 μs,便于精确延时本程序中假设使用频率为12 MHz的晶振。最长的延时时间可达216=65 536 μs若定时器工作在方式2,则可实现极短时间的精确延时;如使用其他定时方式则要考虑重装定时初值的时间(重装定时器初值占用2个机器周期)。

2、求个单片机为什么要延时89S51 12M晶振 用定时器延时10分钟控制1个灯就可以

答:可以设50ms中断一次,定时初徝TH0=0x3c、TL0=0xb0。中断20次为1S10分钟的话,需中断12000次计12000次后,给一IO口一个低电平(如功率不够可再加扩展),就可控制灯了

而且还要看你用什麼语言计算了,汇编延时准确知道单片机为什么要延时工作周期和循环次数即可算出,但不具有可移植性在不同种类单片机为什么要延时中,汇编不通用用c的话,由于各种软件执行效率不一样不会太准,通常用定时器做延时或做一个不准确的延时延时短的话,在cΦ使用汇编的nop做延时

3、51单片机为什么要延时C语言for循环延时程序时间计算 设晶振12MHz,即一个机器周期是1us

不可能的,是不是你的编译有错的啊

我改的晶振12M在KEIL 4.0 里面编译的,为你得出的结果最大也就是40ms这是软件的原因,

不可能出现100ms那么大的差距是你的软件的原因。

不信你实際编写一个秒钟利用原理计算编写一个烧进单片机为什么要延时和利用软件测试的秒程序烧进单片机为什么要延时,你会发现原理计算嘚程序是正确的

4 、51单片机为什么要延时c语言 _nop_()是一个空指令短时间延时的?空几个机器周期

答:这个_nop_()等效与汇编里面的,NOP指令也就是涳一个机器周期,如果是传统51单片机为什么要延时的话等于空12个时钟周期【即一个机器周期】

5、51单片机为什么要延时 延时500ms 用机器周期叠加怎么算?

6、51单片机为什么要延时C语言程序中延时函数delay的原理是什么

(1):延时函数的原理?

(2):两个for循环的作用

(3):i、j的取值囿什么规律和依据?是不是和单片机为什么要延时接的晶振频率有关所能延时的最小单位时间是怎么计算的?

延时时间怎么计算啊!假洳用的是AT89C51RC+11.0592M的晶振呢

1:原理:仅仅执行一些,没有实质性影响的所谓“无意义指令”比如做比大小啊,做某个int的自加运算啊之类的

2:两偅for的作用:简单的说就像高中数学中的“乘法原理”一样,这样可以很轻易的迅速增加上述“无意义指令”的数目

3:关于取值大小:这個如果是在C下变成这个值不仅仅与晶振、单片机为什么要延时本身运算速度有关,而且还与C的编译器有关所以说,这个值虽说是可以精确计算的但大多数情况下,程序员用的都是“经验值”——当然如果用汇编编程,情况就不一样了因为每一条指令所使用的机器周期是一定的,你当然可以根据所有指令使用的总时间精确的算出具体延时的总时间

综合你的的问题,我给你一点建议就是刚学单片機为什么要延时的时候,还是一定要老老实实的从汇编编程学起——这样在你以后接触到C之后,你才能明白这中间实际上经历了一个什么样的过程,只有这样你才能真正理解单片机为什么要延时当然,等最终你完全拿下一种单片机为什么要延时之后尽量使用C编程,無疑是历史所肯定的

7、51单片机为什么要延时,晶振为6M,求一个10ms的延时程序

答:延时有很多种方法有一种是让单片机为什么要延时去做无聊的循环,还有一种是用定时器

单片机为什么要延时花12个T1去执行一个指令,

所以一个机器周期等于12个晶振周期

所以你要得到10ms的延时就偠想办法让机器去做5000条“无聊的指令”

这种方法是用于对时间要求不高的地方,我说的是其思想程序中可能有错的地方

用定时器的方法峩不太会就不误人了 (补充一下就是这个是用汇编写的,你在主程序中用ACALL DEL调用就延时了

8、今天我用单片机为什么要延时做“眨眼的LED”实验時,程序运行每次只令灯亮或灭都没问题,但是一开延时不能出现期盼的灯亮灯灭的现象这是怎么回事?

实验的硬件条件是:STC89C52编译環境:keil 3。

下面是我写的程序请教高手!!!

{;} //可算得本次循环延时约1MS

Delay(1000); //应单片执行程序的时间很快,所以必须延时要不看不到实验现象

补充提问:我是让P1.0先低然后延时之后再高,即灯先亮再灭然后开始循环的

Delay(1000); //应单片执行程序的时间很快,所以必须延时要不看不到实验现潒

补充问题回复:问题恰恰就错在这了,循环完一遍之后灯由灭到亮根本没有时间延时即第一次循环中灯还没来的机灭呢,就进入到第②轮循环中的亮了所以原因就在这,这错误太低级了以后引以为鉴吧

9、单片机为什么要延时延时函数的问题

这个函数中的i,j的大小有**嗎

答:这个函数中j的大小和你定义的数据类型有关,因为你定义的为无符号字符型为单字节数据,所以最大为255.

如果你需要增大,可鉯改变j的数据类型定义如unsigned int (2字节)可以到65535;无符号长整形unsigned long(4字节) 可以到。 而上面所所256是-1,而你定义的是无符号字符型

10、请教一个AVR单片機为什么要延时延时的问题

外部晶振用的是8MHz,延时1微秒的程序如下:

请问,为什么能延时1微秒啊?

答:8MHZ表示单片机为什么要延时的运行周期为1/8us,也僦是0.125us执行一步

那么包括程序的提取执行等都要花费时间

比如,你提取这个函数可能花去一步那现在就使用了0.125us啦

接着你执行这个函数,茬单片机为什么要延时内部运算是通过寄存器的移来移去实现的

这都需要时间,可能你看到的就一句counter--这个指令可能会花费好几个时钟周期来实现

c=a+b,只有一句但实际上花费的时间并不短

add a,b;//寄存器a的值与b相加结果放入a

这样才是单片机为什么要延时内部真正执行的指令,这需要花费至少4个时钟周期而不是1个

至于晶体管级的我就不解释了,你得好好学习汇编才能理解单片机为什么要延时的运作

至于这個函数为什么能延时1ms,这个是靠经验来判断的最直接的方法就是用示波器看,以上均为推论

11、PIC单片机为什么要延时的延时问题 晶振4Mhz:
此函数在4M晶体下产生10003us的延时,也就是10MS。
问题:我刚算了一下他应该执行了999条指令1条单周期的指令也才1US,那就是999us,为什么会有10ms的延时
第一句:X的值范围是不是 1~99?为什么
第二句:X的范围是不是0~99?为什么这么算的。我知道符号在前在后的区别2句话应该是不一样的才对啊!
问題1:“我刚算了一下他应该执行了999条指令”因为你算错了。延时时间是由产生的汇编代码所决定的C语言语句只是个假象,千万不要以为C語言一行就是一条指令!此处由于涉及到双字节减法因此会有额外的判断,编译结果每次循环耗费几十个周期毫不奇怪

问题2:前一句x從100开始递减,递减至1时退出循环后一句x从0开始递增,递增到100时退出循环所谓“2句话”相同仅仅是指这两个循环体的循环次数相同。实際上两个循环的执行过程是完全不同的所消耗时间也有可能不同。

13、我想用单片机为什么要延时连接不断地向电脑发数如下:


如每发送一个数,应延时多少微妙好呢即一般最短能延时多少微米呢?如延时太长的话那发送很多数据不就用很长时间吗?

答:不做太多的串口处理分析只顺着你的问题和你的方法说说:


先考虑下串口的速率 假设9600,那么发送一个字符要多久?
也就是说你如果在1ms内发送超过一个芓符就没意义了硬件速度达不到。
这个循环是执行周期也就十几微秒+delay()的延迟所以任何小于1040微秒的延迟对串口硬件来说没意义,上┅个还没处理完下一个就来了根本执行不了嘛。
如果你send_char()里面有while(!TI);TI = 0;这样的语句或有串口中断TI的处理的话那么实际上你的delay()已经在发送函數里了,while(!TI);这部就是延迟等待吗那根本不需要主函数去延迟了,直接发就行了

14、一个单片机为什么要延时延时子程序的问题,在延时子程序那里一直搞不明白,给r7和r6赋予0然后下面的djnz r7,delayloop不就一直循环了,那还怎么接下去的程序

答: 你的延时程序不是因为值为0,而是跳转位置不对改为如下:

15、我想提两个单片机为什么要延时延时与按键的问题


1:如果一个程序中延时和按键,如果延时子程序比较长(假如2秒),怎样确保按键能够得到及时响应(假如PC正在执行延时子程序正在这时候有按键输入,不是响应不了)——,前提是不能用定时器定时扫描,和中断来做因为定时器和中断我另有其他用途
2:单片机为什么要延时没有串口。怎样才能使得他与24C02进行通信(24C02是具有2K内存嘚EEPROM)
首先明确一点你说单片机为什么要延时没有串口应该是指没有I2C口吧。
1 在延时程序里面加入按键的检测
2 用IO口模拟I2C时序读写

16、51单片机为什么要延时延时小程序求高手解释什么意思?

17、于51单片机为什么要延时延迟时间的问题


这两条语句在12M晶振下运行时间分别是多少?
答:一个时钟周期2us,共4us

18、周期为6MHZ的单片机为什么要延时延时10秒的子程序的怎么编

19、片机的有些程序需要调用延时程序,如何能合理的安排循环次数以及空操作的个数


答:用汇编的话就根据你的当前晶振频率去推算你的指令周期,然后结合你需要延迟的时间编写延迟程序,用C的话还是要看最后生成的汇编码是什么样的了最简单的方法就是写好程序以后再编译器里软仿真看时间。赞同2| 评论(1)

20、单片机为什麼要延时延时程序问题

二、单片机为什么要延时中断问题30例

1、单片机为什么要延时外中断INT0为下降沿触发当中断被触发后cpu执行中断程序,若本次中断的程序还未执行完INT0又来了一个相同的下降沿中断信号怎么办cpu会怎么处理?若是定时器中断呢串口中断呢?求解释


答:再来┅个INT0信号不会执行相同的优先级不会打断正在执行的中断。
一. 如果是高优先级的中断来了会打断低优先级的正在执行的中断而执行高優先级的中断。
51单片机为什么要延时的默认(此时的IP寄存器不做设置)中断优先级为:
当同时有几种中断到达时高优先级中断会先得到垺务。
例如:当计数器0中断和外部中断1(优先级 计数器0中断>外部中断1)同时到达时会进入计时器0的中断服务函数;但是在外部中断1的中斷服务函数正在服务的情况下,这时候任何中断都是打断不了它的包括逻辑优先级比它高的外部中断0计数器0中断。
51单片机为什么要延时嘚中断优先级控制寄存器IP可以把默认的中断优先级设置为高或低级
现在设为定时1 和串行中断为高优先级 其它为低 ,那么中断0执行时会被萣时器1 或串行中断打断如果设定的两个高优先级定时/计数器1 和串行中断同时响应,会再自然排队先执行定时1中断再执行串行中断。

2、單片机为什么要延时中断问题中断3为什么不执行,整个程序有什么不对的地方呢


程序运行一次就跑飞了!!!
//在这里加 死循环,等待Φ断
而且中断响应函数里必须要清中断标志位(你的没有)!

3、各位大侠帮我看一下我写的51单片机为什么要延时C程序中断有没有问题,執行中断后不能继续执行主程序注:P3.2口一直接


IT0=0;//低电平触发,只要单片机为什么要延时监测到是低电平就触发中断
你P3.2一直接地,一直是低电平那中断就不断的执行,当然回不到主程序中了
改成IT0=1;//下降沿触发,单片机为什么要延时监测到高电平到电平跳变就触发中断
就算P3.2一直接地,也只触发一次中断执行完了,就回到主程序中了

4、我的单片机为什么要延时这个程序为什么不能完全执行整个程序谁能告诉我!就是没法执行3次亮暗的!

我是想执行完流水灯亮.就然后执行全亮全暗3次 !可是就是不会跳到全亮全暗3次~~


说明:通过外部中断0【P3.2】,P1.0的数码管亮中断结束后,数码管灭;再由外部中断1【P3.3】P1.1的数码管亮,次中断结束后数码管灭;简言之就是一个中断只控制一个数碼管,中断之间在功能上没有必然的联系编程环境keil C51。P1.0和P1.1口上接的都是普通LED小灯数码管=LED小灯。

以下是我编的程序就是一个中断控制一個数码管,但是当有两个中断时我就抓瞎了

6、单片机为什么要延时中断问题,下面这段程序不知道为什么只进一次中断就没有反应了呢?

这个程序上电后P0口显示0x32;按下key2显示0x3f;key1用于中断每20ms检测是否有按下key1键,有的话P0口显示0xf1。

由于p中1断中1A被设为10所以5中7断返回后对A移位没囿意义,o A一e直为10 并不d是只能中断一1次 .
还有,不清楚key1是什么中断貌似是键盘扫描吧,
都进入死循环了所以跳不出来,就一次中断了

7、噺手学习avr单片机为什么要延时ATmage 128 遇到问题,中断程序被忽略问题,找不到原因


avr studio 4 软件仿真时,编译通过了单在编译信息栏却看到中断程序被忽略。在软件仿真时也发现中断程序没有执行不知道问题出在哪里,我用的是avr studio 4 ATmage 128 单片机为什么要延时.

上面是写的程序。还有编译信息栏里的話


看看,记住这是GCCAVR 编译软件的写法

8\新学的C51单片机为什么要延时,编了个电平触发式中断程序不知道为什么和跳变沿的一样了,诸位幫忙看看.

你这个程序中设置IT0=0说明是低电平触发,所以只要P3^2口一直是低电平那么主程序停止所以发光二极管点亮,如果P3^2口变为高电平主程序继续,发光二极管熄灭另一种情况是当IT0=1的时候是负跳变触发,就是当P3^2口检测到一个又高电平到低电平的跳变后触发中断,在中斷函数中点亮灯立即出中断,执行到d1=1时熄灯看到的现象就是灯闪一下,直到又检测到一个负跳变灯又闪一下。两种触发方式的现象昰不一样的如果你硬件没问题的话。你可以把中断函数写成d1=!d1试试

9、在C51单片机为什么要延时中,中断服务程序怎么撤销中断引脚上的低電平


我用的是,第一个单片机为什么要延时输出低电平到第二个单片机为什么要延时的P3^2第二个单片机为什么要延时是电平触发方式中斷
低电平触发方式:要求低电平保持到CPU实际响应为止,为了避勉CPU再次响应中断在中断服务程序中应该撤除中断引脚上的低电平。请问怎么撤销?在中断服务程序中怎么写 直接写P3^2=1;行吗?
第一个单片机为什么要延时的程序是谁来编写? 如果也是楼主那就好办了。
第②个单片机为什么要延时完成了中断的功能在退出之前,可以向第一个单片机为什么要延时回送一个脉冲;
第一个单片机为什么要延时收到这个脉冲就应该撤消送到第二个单片机为什么要延时的中断申请信号。
另外如果能算出来完成中断的时间,第一个单片机为什么偠延时送来的申请信号就不要超过这个时间,应该及时、自动的撤消申请信号
第一个单片机为什么要延时送来的申请信号,也不可过短应该能让对方检测到。

10、程序如下我想要得到的效果是1秒左边的电动机转动,同时黄灯亮1秒右边转动,蓝灯亮以此循环下去,泹是这个程序用上去后左边转》右边转》左边转》之后就一直是左边了,不切换了谁能帮我解决下问题,感激不尽!!

11、求助关于51单爿机为什么要延时外部中断的问题小弟最近在学单片机为什么要延时,刚做了一个键盘扫描程序发现如果外部中断为电平触发,程序能正常运行但如果改为边沿触发,在将键值送给显示重开中断指令为EX0=1后中断竟然还会被触发一次,这之后再按键就不能触发中断了。如果将中断程序中关中断语句去掉按键能被扫描,但引起中断的次数不好说了请大侠们看看哪出问题了。谢谢


不需要每次在进入中斷程序后开一次中断;EX0=1可以去掉
实际上,外部中断工作在边沿触发方式的时候第一次电平跳变触发后进入中断程序,然后硬件自动清除IE0中断标志位但是在执行中断程序的过程中,如果中断引脚再次检测到电平跳变(负到高)那么IE0会被再次置1 。如果在退出中断程序之湔没及时清0那么就会再次引发一次中断。
而按键的过程不包括按下和松开时的电平抖动,至少会产生两次电平跳转
因此,只需在你Φ断程序里适当加一点延迟再将EX=1, 改成IE0=0 。

12、我用的单片机为什么要延时是8051F的单片机为什么要延时在程序中我用了两个中断。一个是定时計数器2产生的中断100MS一次的数据采集另一个是向上位机发送采集来的数据,使用的串口来实现的用的单片机为什么要延时的UART来实现。也昰一个中断这两个中断在一起工作时需要注意些什么?我的中断程序出了一些问题


(就是默认情况下,UART的中断级别更高但是有的时候UART的中断不能及时响应,这是为甚)
之前和你做的一样就两个中断 UART0加一个定时器 我用的是C
你向上位机发送数据使用UART0时 要确认定时器工作唍毕
T2定时中断后 你加一个完成标志如T2FLAG
你100ms的中断时间 C8051这么快速的单片机为什么要延时怎么都该发送完成了吧。

13、MSP430单片机为什么要延时中断嵌套如何跳出中断?


当进行A中断时来了一个B中断,我想让B中断程序执行完后不继续
执行A中断而跳出整个中断去执行主程序,请问这个怎么设置呢
中断的时候会把SR状态跟中断下来要执行语句的地址放进堆栈中,实现处理完中断以后cpu要执行的语句注意是地址先进,SR后进出栈时SR先出,地址后出当然了在中断里面可以嵌套中断的,对可屏蔽中断来说主要是CPU响应中断以后,GIE会自动复位所以不能对可屏蔽中断进行嵌套,如果在中断中要嵌套可屏蔽中断的话可以开GIE但要注意的是如果此时正在响应的中断标志还是置位的情况下会反复进入此中断,就像死循环一样这时会引起堆栈的溢出,而在响应可屏蔽中断时不可屏蔽中断不受此影响,因为他不受GIE的影响只受自己单獨的使能位影响。在堆栈中的操作原理类似

14、MSP430单片机为什么要延时有几个需要软件清除的中断标志?如何清除


(1)清除各个端口的外Φ断用:PxIFG,相应的位置0即可;
(2)清除Timer中断用:TAIFGTBIFG,相应的位置0即可;
MSP430的16个外中断比如软件清除Flag在进入外中断后,首先要做的就是把相應的PxIFG清0;
而定时器Timer中断是自动清除Flag;
还有在中断嵌套的时候会用到在进入中断后,MCU会自动把全局中断位GIE清零这样在进入本中断后就不會再相应其他中断,若要进行中断嵌套必须在进入中断后把GIE再置1.

15、MCS-51系列单片机为什么要延时的有几个中断源?各中断标志是如何产生嘚如何清除各中断标志?


标准51有5个中断向量(不算复位)分别是外部中断0,定时器0外部中断1,定时器1串行口;总共有6个中断标志,串行口的发送和接受共享一个中断向量
各个终端标志产生情况如下:
外部中断可以设置边沿触发或者电平触发,边沿触发进入中断程序後硬件自动清中断标志电平触发需要软件清标志位;
定时器T0,T1计数溢出产生中断,进入中断程序硬件自动清标志位;
串行口发送完成或者接收到数据就触发中断由于是两个中断标志共享一个中断向量,所以需要在中断程序里由软件判断是发送中断还是接受中断并且只能甴软件清标志位;

以上是标准51的中断系统,52由于多了一个T2定时器(T2定时器跟T0,T1功能相差很大T2要强大很多),因此多了一个中断向量2个中断標志(溢出中断和T2外部中断)T2中断标志必须由软件清除标志位

16、MCS51单片机为什么要延时的汇编语言的中断服务程序最多有几个?


答:一般洏言有5个对:2个外中断 2个定时器中断, 1个串口中断
但是单片机为什么要延时的中断服务资源是根据硬件的结构设计,会有不同的数量囷类型的中断服务,因此中断并不是对语言来讲的,而是对于硬件资源来讲的比如52有6个中断。
基于语言编译器来讲我就举例个人感觉最好的开发51大系列的开发环境Keil,其编译器最多支持32个中断服务,,因此中断对编译来说是一个“模拟”的概念。

18、单片机为什麼要延时中断程序的书写步骤

19、我想知道单片机为什么要延时的蜂鸣器音乐程序中断是如何响应的?从main主程序中如何到中断程序具体步骤是啥?谢谢! 就是等待中断的意思这个程序中的定时器中断没有设置初值,所以中断几乎没有等待时时触发(要是有等待时间,喑乐不就连不上了么)综上:这个定时器中断完成两个任务:1、使单片机为什么要延时时时触发(等待时间几乎为0);2、控制了音符的演奏频率。
再往下 while(time) 的循环就是为演奏的音符赋值的操作了

20、单片机为什么要延时中断该什么时候进如?


中断看是外部中断、定时器还是串行口中断了
如果是外部中断,就是p3.2、p3.3检测到这两个口电平变化时(假设这两个口接上按键那么当按键按下时表明产生中断),然后跳到中断程序执行
如果是定时器中断的话,有个中断标志位TFx(x表示0或者1)比如说你设置一个1S的定时器程序,你以50ms为基准20次产生1s的时間,然后当50ms一过标志位就产生变化,进入定时器中断程序执行!
串行口中断也是一样有一个标志位接受或者发送数据满了以后,标志位就发生变化然后进入中断执行!

21、PIC单片机为什么要延时AD中断什么时候开启,对AD中断应该怎样理解
AD模数转换,是把模拟电压数值采样進来然后转换成数字信号。这一采样和转换是需要时间的并不是一开AD就能读到数字信号数据。
一般来说其时间都只有几微秒到几百微秒(根据设置不同而定)如果单片机为什么要延时没有其他工作的时候,可以用循环等待的方式等AD转换结束(转换结束后DONE位会被置位)但如果你的单片机为什么要延时还有其他工作,那就没必要在等待它上面花费时间可以开AD操作后,继续执行其他程序而转换结束后,AD中断可以暂时断开现有炒作而把AD数据读进来。这就是AD中断的作用

22\51单片机为什么要延时的五个中断分别在什么时候(什么情况)执行裏面的程序!


定时器0中断:当定时器0计数到FFFF溢出时
定时器1中断:当定时器1计数到FFFF溢出时
串口中断:串口接收到一帧。或发送完一帧数据都會产生中断
你网上找一下TCON和SCON。什么条件让中断标志位的值改变 那么就会进入中断服务程序去。

23、51单片机为什么要延时如果中断函数仳较长,执行到一半又触发了这个中断程序会停止从头执行,还是执行结束后响应中


51单片机为什么要延时中中断分高低两个优先级,高优先级的中断能打断低优先级的中断
但同级中断是不能打断同级中断的!无论该中断函数有多长,在执行到一半这个中断又发生了還是要等到该中断函数执行完毕,并再执行了一条主程序指令后才会再次进入该中断
不过,若楼主恰好在这个低优先级中断服务程序中修改了该中断为高优先级那么如果该中断函数比较长,执行到一半又触发了这个中断则该中断函数就会被重新从头开始执行(中断嵌套)。这是因为除串口中断以外的其他中断在 CPU 响应该中断,程序转入该中断函数前就已经将该中断的中断标志清零了
另外,51的串口中斷比较特别因为需要软件清除串口中断标志,所以只要在未清串口中断标志前是不会发生上述这样的中断嵌套的。

24、求51单片机为什么偠延时程序两个计数器,主要是中断函数的函数名以及初始化设置

25、请教一个单片机为什么要延时中断的问题:比如来了一个脉冲开始中断,但中断里的程序执行到一半时又来了一个脉冲,请问这时中断里的程序是从头开始呢还是继续呢


我的意思是程序就一个中断A,来了一个脉冲A执行,A执行到一半时又来了一个脉冲,通知A执行这时A是从头执行还是先不理会呢?
需要具体情况具体分析因为不哃的单片机为什么要延时在中断机制上有细微的差别,需要查他的资料
一般来说,一个中断源请求中断对CPU来说,是一次性的做了一个“中断挂号”假如当时因条件不满足(例如CPU正在“关中断”,即没有打开“中断允许”)而没有响应中断,则挂号信息还在这样,將来一旦打开了中断允许仍然会响应,只是晚了一点而已
而中断响应以后,必须有办法把这个“中断挂号”消除掉有的CPU的功能是:呮要响应了这个中断,挂号就自动消除了也有的CPU不能自动清除挂号,必须在中断服务程序中编入“清除中断挂号”的操作否则,一旦咑开了中断允许它又会重复发生中断。

现在的大多数单片机为什么要延时里中断控制器和CPU是在同一个芯片中,它可以做到自动消除中斷挂号而过去许多种CPU,所配用的中断控制器是另外一个芯片自然就无法自动消除了。

也有的CPU中有另外一种“不挂号”的中断请求它必须由外界(发出中断请求的那个设备)来保持一直不停申请,等到响应中断的时候再设法(例如,在中断服务程序中发出一个输出信號)通知那个设备撤销申请

大多数的CPU中,一旦响应中断进入了服务程序就把“中断允许”关掉了。故此时如果又有下一个中断请求来叻不能立即响应,只能挂一个号等以后“开中断”时才能再响应。如果程序员希望能够“嵌套中断”(即在一次中断服务程序的执行Φ途又进入了另一个中断服务程序)就需要在服务程序内编入“开中断”的操作。

“嵌套中断”原则上允许“自己嵌套自己”也就是說,一次中断服务程序的执行中途又被打断并进入了和自己一样的中断服务程序并从头到尾执行一遍,结束后返回到先前打断的那一点并继续执行后半截服务程序。这种情况会产生什么效果是需要程序员自己考虑的。

也有的CPU具有“优先次序”机制可以在某一级的中斷服务程序里禁止优先级不比自己高的其他中断来打断自己。同时也提供给程序员有“放弃优先权”以及“修改优先级”的灵活性。


而被优先机制暂时“屏蔽”的那些较低优先级的中断申请同样挂号仍在,以后高优先级的中断结束以后还能响应。

不过需要注意大多數的CPU中,“中断挂号”是只能挂一个的也就是说,在前一次的中断申请所挂的号还没有被清除以前又来了下一个中断申请,那么第②个挂号是挂不上的。

不过某些处理器中中断挂号可能分成几个层次:CPU里面是一层,外围针对各个具体的设备还有另外一级“预备挂號”,那就比较复杂了

另外多说几句:上面已经说,程序员可以自己决定你的中断服务程序允许还是不允许“嵌套”

如果不允许,您鈳以采用关中断的办法或者利用优先机制,来屏蔽同一中断源的第二个中断请求


这样,第二个中断就不会被响应但它仍可以挂上一個号(只要它发生在上一个中断挂号已经被清除掉以后的时间)。然后中断服务程序结束时,一般都会开中断并释放优先级屏蔽然后,第二个中断请求就会被响应于是再一次执行中断服务程序。

如果允许“嵌套”那就会如我上面所说:


一次中断服务程序的执行中途叒被打断并进入了和自己一样的中断服务程序,并从头到尾执行一遍结束后返回到先前打断的那一点,并继续执行后半截服务程序

主程序最后,要加个死循环:while(1){};

还有你在这用了方式1,这个方式在你进中断后TH1和TL1会变成0000H。你不对他重新赋值你要等FFFFH次计数,才会进中断


28、我看很多程序都是主程序进入while(1),就死在while(1)里了然后等待外中断。那么现在的问题是我想让它进入外中断完事后跳过while(1),執行下边的程序该怎么办?


while里边用break吗不知道好使不好使,还有标志位我看是硬件自动清零查询标志应该不能用吧,那该怎么办呢
結束while(1)语句最好的方法就是使用break来跳出死循环,关键就是选择合适的flag(标志位)如果说中断标志位是硬件自动清零的话,那么楼主不妨在中断服务子程序中自己加入一个标志位:如果用汇编语言的话PSW中的F0位就可以很好的使用;如果用C的话,就可以随便定义一个位变量如bit a=0;。也就是说楼主需要在程序中定义一个位变量a,在中断服务子程序中将a置1退出中断后查询a是否为1,例如:if(a) {a=0;break;}这样就跳出叻while语句了
比方说,如果楼主想写一个等待按键按下中断的程序就可以用while(!a);而不用while(1)语句了。

29、我用外部中断1中断一次显示丅一个数,数码管显示没问题但是我用P3-3口用导线连接,接触一次地线松开一次,这时候数码管显示会乱跳有时候加两次数,有时候加好多次数反正就是不稳定。假如p3-3口通过按键接地的话按一次按键一般情况会加一次数,但有时候也是不稳定可能中断好几次。


应該采取消抖措施硬件、软件方法皆可。
楼主在中断函数中延时,时间看来很是不短!
但是延时后并没有检测按键是否还在按下,这僦不能算是软件消抖

30、 (1) 为什么单片机为什么要延时有两个外部中断0允许位?有什么作用?


(2)在51内核单片机为什么要延时中当允许響应外部中断0的中断请求时,其特殊功能寄存器ie中的位必须为1 es exo ea et0
(1)两个中断是因为一般的单片机为什么要延时有两个中断源,可以实现兩级中断嵌套在实现复杂功能上两级中断嵌套很有用。
EA--总中断允许位必须为1
ES--串行中断允许位,不必开为0
EX0--外部中断0允许位,应为1
ET0--定时計数溢出中断允许位不必开,为0

我要回帖

更多关于 单片机为什么要延时 的文章

 

随机推荐