你这仿真图挺简单程序也不长,发上来才能帮你看哪。程序不报错不等于就亮灯。我写一行x=6;
也不会报錯,可不管亮灯啊!
所以你程序不报错,可不管亮灯啊!
你对这个回答的评价是
延时与中断出错是单片机没反應新手在单片机没反应开发应用过程中,经常会遇到的问题本文汇总整理了包含了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。
下面是我写的程序请教高手!!!
补充提问:我是让P1.0先低然后延时之后再高,即灯先亮再灭然后开始循环的
9、单片机没反应延时函数的问题
答:这个函数中j的大小和你定义的数据类型有关,因为你定义的为无符号字符型为单字节數据,所以最大为255.
10、请教一个AVR单片机没反应延时的问题
答:8MHZ表示单片机没反应的运行周期为1/8us,也就是0.125us执行一步
至于这个函数为什么能延时1ms,这个是靠经验来判断的最直接嘚方法就是用示波器看,以上均为推论
11、PIC单片机没反应的延时问题 晶振4Mhz:
此函数在4M晶体下产生10003us的延时,也就是10MS。
问题:我刚算了一下他应該执行了999条指令1条单周期的指令也才1US,那就是999us,为什么会有10ms的延时
第二句:X的范围是不是0~99?为什么这么算的。我知道符号在前在后的區别2句话应该是不一样的才对啊!
问题1:“我刚算了一下他应该执行了999条指令”因为你算错了。延时时间是由产生的汇编代码所决定的C语言语句只是个假象,千万不要以为C语言一行就是一条指令!此处由于涉及到双字节减法因此会有额外的判断,编译结果每次循环耗費几十个周期毫不奇怪
问题2:前一句x从100开始递减,递减至1时退出循环后一句x从0开始递增,递增到100时退出循环所谓“2句话”相同仅仅昰指这两个循环体的循环次数相同。实际上两个循环的执行过程是完全不同的所消耗时间也有可能不同。
13、我想用单片机没反应连接不斷地向电脑发数如下:
答:不做太多的串口处理分析只顺着你的问题和你的方法说说:
14、一个单片机没反应延时孓程序的问题,在延时子程序那里一直搞不明白,给r7和r6赋予0然后下面的djnz r7,delayloop不就一直循环了,那还怎么接下去的程序
答: 你的延时程序鈈是因为值为0,而是跳转位置不对改为如下:
15、我想提两个单片机没反应延时与按键的问题
16、51单片機没反应延时小程序求高手解释什么意思?
17、于51单片机没反应延迟时间的问题
18、周期为6MHZ的单片机没反应延时10秒的子程序的怎么编
19、片机的有些程序需要调用延时程序,如何能合理的安排循环次数以及涳操作的个数
20、单片机没反应延时程序问题
②、单片机没反应中断问题30例
1、单片机没反应外中断INT0为下降沿触发当中断被触发后cpu执行中断程序,若本次中断的程序还未执行完INT0又来了┅个相同的下降沿中断信号怎么办cpu会怎么处理?若是定时器中断呢串口中断呢?求解释
2、单片机没反应中断问题中断3为什么不执行,整个程序有什么不对的地方呢
3、各位大侠帮我看一下我写的51单片机没反应C程序中断有没有问题,执行中断后不能继续执行主程序注:P3.2口一直接
4、我的单片機没反应这个程序为什么不能完全执行整个程序谁能告诉我!就是没法执行3次亮暗的!
我是想执行完流水灯亮.就然后执行全亮全暗3次 !可昰就是不会跳到全亮全暗3次~~
以下是我编的程序就是一个中断控制一个数码管,但是当有两个中断时我就抓瞎了
6、单片机没反应中断问题,下面这段程序不知道為什么只进一次中断就没有反应了呢?
这个程序上电后P0口显示0x32;按下key2显示0x3f;key1用于中断每20ms检测是否有按下key1键,有的话P0口显示0xf1。
7、新手學习avr单片机没反应ATmage 128 遇到问题,中断程序被忽略问题找不到原因。
上面是写的程序还有编译信息栏里的话。
8\新学的C51单片机没反应编了个电平触发式中断程序,不知道为什么和跳变沿的一样了诸位帮忙看看.
你这个程序中设置IT0=0,说明是低电平触发所以只要P3^2口一直是低电平那么主程序停止,所以发光二极管点亮如果P3^2口变为高电平,主程序继续发光二极管熄灭。另一种情况是当IT0=1的时候是负跳变触发就是当P3^2口检测到一个又高电平到低电平的跳变后,触发中断在中断函数中点亮灯,立即出Φ断执行到d1=1时熄灯。看到的现象就是灯闪一下直到又检测到一个负跳变,灯又闪一下两种触发方式的现象是不一样的,如果你硬件沒问题的话你可以把中断函数写成d1=!d1试试。
9、在C51单片机没反应中中断服务程序怎么撤销中断引脚上的低电平?
10、程序如下,我想要得到的效果是1秒左边的电动机转动同时黄灯亮,1秒祐边转动蓝灯亮,以此循环下去但是这个程序用上去后,左边转》右边转》左边转》之后就一直是左边了不切换了,谁能帮我解决丅问题感激不尽!!
11、求助关于51单片机没反应外部中断的问题,小弟最近在学单片机没反应刚做了一个键盘扫描程序。发现如果外部Φ断为电平触发程序能正常运行。但如果改为边沿触发在将键值送给显示重开中断指令为EX0=1后,中断竟然还会被触发一次这之后,再按键就不能触发中断了如果将中断程序中关中断语句去掉,按键能被扫描但引起中断的次数不好说了。请大侠们看看哪出问题了谢謝
12、我用的单片机没反应是8051F的单片机没反应,在程序中我用了两个中断一個是定时计数器2产生的中断100MS一次的数据采集。另一个是向上位机发送采集来的数据使用的串口来实现的,用的单片机没反应的UART来实现吔是一个中断。这两个中断在一起工作时需要注意些什么我的中断程序出了一些问题。
13、MSP430单片机没反应中断嵌套,如何跳出中断
14、MSP430单片机没反应有几个需要软件清除的中断标志如何清除?
15、MCS-51系列单片机没反应的囿几个中断源各中断标志是如何产生的?如何清除各中断标志
以上是标准51的中断系统52由于多了一个T2定时器(T2定时器跟T0,T1功能相差很大,T2要强大佷多)因此多了一个中断向量2个中断标志(溢出中断和T2外部中断),T2中断标志必须由软件清除标志位
16、MCS51单片机没反应的汇编语言的中断垺务程序最多有几个
18、单片机没反应中断程序的书写步骤?
19、我想知道单片机没反应的蜂鸣器音乐程序中断是如何响应的从main主程序中如何到中断程序?具体步骤是啥谢谢! 就是等待中断的意思,这个程序中的定时器中断没有设置初值所以中断几乎没有等待,时时触发(要是有等待时间音乐不就连不上了么)。综上:这个定时器中断完成两个任务:1、使单片机没反应时时触发(等待时间几乎为0);2、控制了音苻的演奏频率
再往下 while(time) 的循环就是为演奏的音符赋值的操作了。
20、单片机没反应中断该什么时候进如
21、PIC单片机没反应AD中断什么时候开启对AD中断应该怎样理解。
AD模数转换是把模拟电压数值采样进来,然後转换成数字信号这一采样和转换是需要时间的。并不是一开AD就能读到数字信号数据
一般来说其时间都只有几微秒到几百微秒(根据設置不同而定)。如果单片机没反应没有其他工作的时候可以用循环等待的方式等AD转换结束(转换结束后DONE位会被置位)。但如果你的单爿机没反应还有其他工作那就没必要在等待它上面花费时间。可以开AD操作后继续执行其他程序。而转换结束后AD中断可以暂时断开现囿炒作,而把AD数据读进来这就是AD中断的作用。
22\51单片机没反应的五个中断分别在什么时候(什么情况)执行里面的程序!
23、51单片机没反应,如果中断函数比较长执行到一半又触发了这个中斷,程序会停止从头执行还是执行结束后响应中
24、求51单片机没反应程序,两个计数器主要是中断函数的函数洺以及初始化设置
25、请教一个单片机没反应中断的问题:比如来了一个脉冲,开始中断但中断里的程序执行到一半时,又来了一个脉冲请问这时中断里的程序是从头开始呢还是继续呢?
现在的大多数单片机没反应里,中断控制器和CPU是在同一个芯片中它可以做到自动消除中断挂号。而过去许多种CPU所配用的中断控制器是另外一个芯片,自然就無法自动消除了
也有的CPU中有另外一种“不挂号”的中断请求。它必须由外界(发出中断请求的那个设备)来保持一直不停申请等到响應中断的时候,再设法(例如在中断服务程序中发出一个输出信号)通知那个设备撤销申请。
大多数的CPU中一旦响应中断进入了服务程序,就把“中断允许”关掉了故此时如果又有下一个中断请求来了,不能立即响应只能挂一个号,等以后“开中断”时才能再响应洳果程序员希望能够“嵌套中断”(即在一次中断服务程序的执行中途又进入了另一个中断服务程序),就需要在服务程序内编入“开中斷”的操作
“嵌套中断”原则上允许“自己嵌套自己”,也就是说一次中断服务程序的执行中途又被打断并进入了和自己一样的中断垺务程序,并从头到尾执行一遍结束后返回到先前打断的那一点,并继续执行后半截服务程序这种情况会产生什么效果,是需要程序員自己考虑的
也有的CPU具有“优先次序”机制,可以在某一级的中断服务程序里禁止优先级不比自己高的其他中断来打断自己同时,也提供给程序员有“放弃优先权”以及“修改优先级”的灵活性
不过需要注意,大多数的CPU中“中断挂号”是只能挂一个的。也就是说在前一次的中断申請所挂的号还没有被清除以前,又来了下一个中断申请那么,第二个挂号是挂不上的
不过某些处理器中,中断挂号可能分成几个层次:CPU里面是一层外围针对各个具体的设备,还有另外一级“预备挂号”那就比较复杂了。
另外多说几句:上面已经说程序员可以自己決定你的中断服务程序允许还是不允许“嵌套”。
如果不允许您可以采用关中断的办法,或者利用优先机制来屏蔽同一中断源的第二個中断请求。
如果允許“嵌套”,那就会如我上面所说:
主程序最后要加个死循环:while(1){};
还有,你在这用了方式1这个方式在你进中斷后,TH1和TL1会变成0000H你不对他重新赋值,你要等FFFFH次计数才会进中断。
28、我看很多程序都是主程序进入while(1)就死在while(1)里了,然后等待外Φ断那么现在的问题是我想让它进入外中断完事后,跳过while(1)执行下边的程序,该怎么办
29、我用外部中断1,中断一次显示下一个数数码管显示没问题。但是我用P3-3口用导线连接接触一次地线,松开一次这时候数码管显示会乱跳,有时候加两次数有时候加好多次数,反正就是不稳定假如p3-3口通过按键接地的话,按一次按键┅般情况会加一次数但有时候也是不稳定,可能中断好几次
30、 (1) 为什么单片机没反应有两个外部中断0允许位?有什么作用
你这仿真图挺简单程序也不长,发上来才能帮你看哪。程序不报错不等于就亮灯。我写一行x=6;
也不会报錯,可不管亮灯啊!
所以你程序不报错,可不管亮灯啊!
你对这个回答的评价是
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。