51单片机定时器模式1定时1us为什么用了好几秒啊
你的程序只有这几行吗?那没有ET1=1,开定时器中断没有啊。
定时到了,是不能中断的。
其实,这么设置没有什么意义的,因为,执行完TR1=1,这条指令,就开始计时了,只要1个机器周期就定时到。执行完TR1=1,定时就到了。但是还没有执行EA=1;就不能中断,还得等到ET1=1以后,才能中断。其实,早就定时到了,但没有执行ET1=1是不能中断。
单片机响应中断后,转去执行中断服务子程序,这需要更多的机器周期,远远超过1个机器周期,因此,你的设置是无理的。
而你的程序就没有ET1=1,所以,不可能中断的。
等了好几秒.........为什么啊?就应该等啊。
你用的是几个灯啊?比如说8个灯吧,用P0口, 就是直接讲P0口与LED直接相连就行了啊,注意Led的另一端要接在一起,共地或者高电平都可以,但是为了保护LED,最好在每个小灯上串上一个电阻(若单片机采用的是5V电压,电阻可选用500欧左右的就可以了),以减小通过led的电流。剩余的就是单片机的最小系统了,没什么好说的吧,就是晶振,复位而已。
程序嘛,也很简单啊,你说用定时器,每个两秒如果单纯用一个定时器的话肯定不够用的,要结合循环判断语句,比如你采用12M的晶振,并且将定时中断时间定为50ms,那么设置一个变量,每20次就是一秒了,所以40次就是两秒。这样的话,每个40次就让led的状态(用0和1表示亮与灭)改变就可以了。main函数中应该设置一个死循环函数,可用while(1),让单片机不断的循环工作。
定时到了,是不能中断的。
其实,这么设置没有什么意义的,因为,执行完TR1=1,这条指令,就开始计时了,只要1个机器周期就定时到。执行完TR1=1,定时就到了。但是还没有执行EA=1;就不能中断,还得等到ET1=1以后,才能中断。其实,早就定时到了,但没有执行ET1=1是不能中断。
单片机响应中断后,转去执行中断服务子程序,这需要更多的机器周期,远远超过1个机器周期,因此,你的设置是无理的。
而你的程序就没有ET1=1,所以,不可能中断的。
等了好几秒.........为什么啊看就应该等啊。
单片机编程题
定时器在12MHz的时钟时,每个机器周期(1us)+1,工作模式1时(16位模式)最大计数值为65536,所以定时时间最大在65.536ms,达不到500ms的要求!你可以设置50ms定时中断一次,在中断程序中计数够10次,让灯循环一次即可。1、计算计数初值X:由于晶振为12 MHz,所以机器周期Tcy为50 ms。所以:X=...
MCS-51采用12MHz的晶振,定时1ms,如用定时器方式1时的初值(16进制数)应...
对于12MHz的时钟,51单片机的机器周期就为 1\/(12000000\/12)=1us 那么对于定时1ms,需要定时器计数的个数就为 1ms\/1us=1000 那么,对于方式1,需要装入的时间常数就为 2^16-1000=64536——0xfc18 建议随便参考一本51单片机的教材,都会有相关介绍。
单片机问题,谢谢
1.51单片机按一个机器周期需要12个时钟周期来算,定时器计数一下是1us,TMOD = 0x01是定时器0工作在16位计数器;TMOD = 0x10是定时器1工作在16位计数器;设定时周期为x(0~65535);TH1 = (65535 - x)>>8;TL1 = (65535 - x)&0x00FF;定时时间为1us~65ms 2.12位AD那个最小分辨率...
...振荡器的频率是12MHz,利用定时器1采用方式1定时20ms,
12MHz晶振,单片机机械周期 T=12\/Fosc=12\/12MHz=1us;T1定时器工作模式1 为 16位定时器,定时计算公式为:t= (2^16-<TH1:TL1>)×机械周期 T,将T=1us,t=20ms 代入公式得:(65536-<TH1:TL1>)×1us=20ms,得:TH1:TL1=65536-20ms×1000us\/ms÷1us=45536=0xB1E0,得:TH1=0xB1...
单片机定时器初值怎么算?
1、系统晶振频率是12M,则机器周期=12/12=1us;2、定时1ms=1*1000=1000us;3、工作在方式0下:最大计数值是2^13=8192;4、定时初值=8192-(1*1000)=7192;5、换算成十六进制数为:定时初值=1C18H。定时器中断是由单片机中的定时器溢出引起的中断,51单片机中有两个定时器t0和t1。
输出周期为10ms方波,定时时间等于什么?
你的是51单片机?晶振多少?如是51单片机,晶振为12MHZ。如果选择定时工作方式1.则定时器每加1的时间为1us.工作于方式1的最大定时时间为65536*1us=65ms 10ms则计数个数为10000 所以有:TH0=(65536-1000)\/256;TL0=(65536-1000)%256;
单片机:定时器工作方式0、1、2下的计时时间计算方法?
首先明确三种方式的计数范围:方式0是13位的定时\/计数器,记满值为2^13=8192;方式1是16位的定时\/计数器,计满为2^16=65536;方式2是8位的定时\/计数器,计满为2^8=256。我以方式1来举例说明(12M晶振):如果我想计数1S,但是计数方式1的计数最大计数65536us即65ms,为了方便计数,选取50ms,...
若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则...
题目没有说明是什么类型的单片机。假定是标准51单片机,则应为2的16次方减去500。答案为c。
51单片机中,定时器怎么做延时函数用,比如说,要精确延时1s,该怎么写...
\/\/当计数器未溢出只须用 计数器实时变化的值-其初始值 \/\/当计数器溢出则须用 计时器上限值+计数器实时变化的值-其初始值 } void Timer1Configuration(){ TMOD=0X10;\/\/选择为定时器模式,工作方式1。TH1=0Xfc;\/\/给定时器赋初值,定时1000us TL1=0X18;ET1=1;\/\/打开定时器1中断允许 EA=1;\/...
51单片机各种位数定时器初值计算方法?
对12MHz ,1个机器周期 1us ,12\/fosc = 1us 。方式0是13位定时器,最大时间间隔 = 2^13 = 8.192ms 方式1是16位定时器,最大时间间隔 = 2^16 = 65.536ms 方式2是8位定时器,最大时间间隔 = 2^8 = 0.256ms =256 us 方式3 仅适用于T0,此时T0分成两个8位计数器,T1...