请教51单片机定时器程序的问题。

作者&投稿:浦俗 (若有异议请与网页底部的电邮联系)
51单片机 定时器程序 是怎么走的~

你说的没错,那句主循环上面的代码只会执行一次,执行后下面就进入了while(1)无限循环中,执行循环的指令,在循环过程中,定时器也在运行,当定时器溢出引起中断时,程序就跳转到中断服务函数继续执行,中断服务结束后继续在主循环中循环,并不是从主函数的最上面开始运行。

if(flag1||flag2||flag3==0)错了
任意一个为0应该是这样
if((flag1==0)&&(flag2==0)&&(flag3==0))

我觉得应该在中断中定时到一秒后,给一个变量增加1,然后把这个变量送显示!


时钟频率为12MHZ, 如何利用51单片机定时\/计数器定时500ms
我说一下原理 12MHZ的51单片机,定时器最大只能定时65.535ms,所以要定时500ms的时间,需要产生10次50ms的定时。步骤如下:1、每隔50ms定时器中断溢出,计数+1。2、当计数达到10次时,便产生了500ms的定时啦,然后,你自己根据你的设计,需要让单片机做什么就自己写些什么(比如让某个io口取反)3...

51单片机中用定时器怎么样控制频率
include<intrins.h> define uint unsigned int \/\/宏定义 define uchar unsigned char \/\/宏定义 sbit beep=P2^3;uchar num=0,times=0;uint flag,tt;uint freq[]={4000,400,80,40,20,10,5,4}; \/\/1Hz~1KHz void main() \/\/主函数 { beep=0;TMOD=0x12;\/\/设置定时器0,定时器...

51单片机实验(关于定时器计数器)
51单片机实验(关于定时器计数器) 用P1.7驱动发光二极管亮一秒灭一秒地闪烁。时钟频率为6MHz。提示:长时间定时采用定时器和计数器结合。计数器设定用硬件方式,提议T0定时,T1计数T0的定时跳变信号P1.0的跳变次数,计... 用P1.7驱动发光二极管亮一秒灭一秒地闪烁。时钟频率为6MHz。提示:长时间定时采用定时器和计数...

51单片机的定时器有几种工作模式?
51单片机定时器T1有3种工作模式:方式0,方式1,方式2。当INT0引脚为高电平时且TR0置位,TR0=1;启动定时器T0;当INT1引脚为高电平时且TR1置位,TR1=1;启动定时器T1。MCS-51的定时器T0有4种工作方式:方式0,方式1,方式2,方式3。MCS-51的定时器T1有3种工作方式:方式0,方式1,方式2。

51单片机用定时器计时应该如何计算?求大神支招
这个其实很简单的,你只需要知道一个条件即可:晶振频率。因为51单片机的机器周期计算公式是12\/晶振频率MHz,若晶振为12MHz,则机器周期就是12\/(12×10^6)=1us,也就是说计数器没1us计数一次。那么有了这个条件就好办多了,一般来说,12MHz晶振下,16位定时器满计数是65536次,每次1us,最大就能...

51单片机如何用一个定时器当多个延时电路用, 就是按下开关一 ,亮三秒...
unsigned int YSJS1=0;unsigned int YSJS2=0;unsigned int YSJS3=0;sbit KEY1=P1^0;按键 sbit KEY2=P1^1;按键 sbit KEY3=P1^2;按键 sbit LED1=P2^0;灯 sbit LED2=P2^1;灯 sbit LED3=P2^2;灯 void Timer1Init(void)\/\/500微秒@12.000MHz { AUXR &= 0xBF;\/\/定时器时钟12T模式...

前辈,教我写一个51单片机题吧。使用定时器实现0-255的加1显示。_百度...
t++);}\/\/主程序void main(){ P0=0xff; Count=0; Number=0; TMOD=0x01; \/\/12MHZ晶振 C51单片机对其12分频 \/\/实际定时器“加1”频率为1MHZ 也就是1us \/\/用定时器中断时间间隔 是从“开启定时器加1”到“溢出”的时间 \/\/对于工作在模式1的定时器0来说 也就是从“开启定时器加1”到...

请问51单片机怎么用定时器延时?
51单片机的几种精确延时实现延时通常有两种方法:一种是硬件延时,要用到定时器\/计数器,这种方法可以提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用循环体进行。 1 使用定时器\/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz、12 MHz或6 MHz晶振。第一种更容易...

51单片机如何同时使用定时器和计数器采集数据?
uint bb,cc,dd;\/\/保存计数器的值 void Delay1ms(unsigned int i) \/\/1ms延时程序 { unsigned int j;for(;i>0;i--){ for(j=0;j<125;j++){;} } } void init()\/\/初始化设置 { TMOD=0x51;\/\/定时器1作为计数器,定时器0作为定时器用 TH1=0;\/\/计数器清0 TL1=0;EA=1;\/\/开总...

怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的
简单啊。大致说来就是 你先开启个定时器,根据你选用的 晶振 ,计算出你要用定时器定时的基准时间,就假设是10毫秒吧。然后给定时器的THx,TLx写入初值,开启中断,进行定时。然后就等待中断。在你响应中断的程序中,再次给单片机送入初值,由于是10毫秒中断一次,因此我们设置几个“软件计数器”比如每...

灞桥区15358669086: 怎样使用51单片机的定时器? -
洪印黄藤: 1. 设定工作方式TMOD=..... 2. 装入初值 TH0=...TL0=....TH1=....TL1=..... 3.开启定时器中断和总中断ET0=1或ET1=1 EA=1 4.启动时器 TR0=1 TR1=1 5.写中断服务程序 其中 3和5可以没有

灞桥区15358669086: stc51 单片机使用定时器问题
洪印黄藤: #include<reg51.h> sbit P1^2 = led;//就当是它. unsigned char time;//全局变量 main(){ led = 0; IE = 0X82;//开T0中断、总中断 TMOD = 0X01;//方式1 TH0 = 0x3c;//高8初值 TL0 = 0xb0;//低8初值 TR0 = 1;//启动T0 //50ms周期 while(1){ if(...

灞桥区15358669086: 谁帮我解释下51单片机定时器的问题,谢谢 -
洪印黄藤: 具体代码我没有,不过可以给你提醒一下.用12M晶体,采用定时方式0(十六位),最大定时时间大概10ms左右,(具体我没算),你可以设置一个变量用来计算定时中断的次数,如果次数不够就重装并重启定时器,直到2m时间到.流程:1.初始化定时器,开中断2.启动定时器3.中断处理,中断次数到则翻转与LED相连的IO口,如果次数不到则转到1处. 如果还没解决你的问题,可以加我百度HI账号.

灞桥区15358669086: 51单片机的定时程序 -
洪印黄藤: 给你个提示吧,在主程序里面设置好中断,然后开中断,定时够6秒,这个定时不能直接顶出来的,你可以间接得到,你可以定时0.1秒,然后用一个变量装起来,没定时一次,在中断服务程序里面对这个变量加一,然后在主程序里面不断判断这个变量是否够6000,够的话就对你要的那个变量加一,然后对这个6000的变量清零,就可以了.这个单片机的程序一定要自己多写才行的,这样才可以学到东西.

灞桥区15358669086: 悬赏:关于51单片机定时器的一个小问题
洪印黄藤: 1 ] 定时器开始计时但未发生中断的时候主程序仍然在运行,不占用主系统资源. 2 ] 当中断开始后,运行中断程序,运行结束后RETI返回到停等待的那段程序,jmp $ .

灞桥区15358669086: 51单片机定时器和中断问题 -
洪印黄藤: 你对定时器1没有设置初值.中断有优先顺序的:先定时器中断0,然后是定时器中断1.

灞桥区15358669086: 51单片机定时器设置: -
洪印黄藤: TMOD = (TMOD & 0XF0) | 0X01; //定时器0工作在模式1,16Bit定时器模式 上述表达式中0XF0的作用是什么? 1 (TMOD & 0XF0) 其中&为逻辑与指令,按位与操作,定时器的模式寄存器TMOD与上0XF0的作用是高4位不变,低4位被清零.(1与上...

灞桥区15358669086: 51单片机的计时器问题 -
洪印黄藤: 0x是16进制数的前缀.0x01的意思是后面的01是一个16进制数字,换算成二进制就是00000001.意思就对TMOD寄存器依次赋值为00000001.因为TMOD的每一位都是针对于定时器的设置,所以这句话的意思就是设置定时器1工作在方式0,而定时器0工作在方式1.

灞桥区15358669086: 51单片机定时器问题 -
洪印黄藤: 定时器中断服务程序执行时,计数是不会自行中断的,所以编写中断服务程序一般要求是:1、要尽可能的短小2、不要在里面延时如果以上两点无法避免,那么可以采用暂停计数的处理来避免出现你想象中的问题举例如下:void t0isr() interrupt 1{ TR0=0; TH0=(65536-10000)/256; TL0=(65536-10000)%256; TR0=1; PULSE=~PULSE;}

灞桥区15358669086: 51的单片机的定时器程序,大神看看哪里错了.蜂鸣器不响,LED正常 -
洪印黄藤: unsigned char i,j; for(j=700;j>0;j--) j定义错误,应该是int型,unsigned char的值是1~255.中断函数入口也错了void timerr() interrupt 0

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网