51单片机定时器方式1,晶振33hz,延时1秒,怎么用c语言编程
不管晶振频率是多少,一次就延时一秒是不可能的。
当晶振频率是12 M时,最大的延时是65.536毫秒。通常可以设置定时50毫秒,并设置为中断方式,这样,每次当定时到就中断一次,再对中断计数,中断计数20次就是一秒了。
我这有个函数自己实验出来的,在KEIL里看差不多就是延时1毫秒
void delay1ms(unsigned int t)
{
unsigned x,y;
for(x=t;x>0;x--)
for(y=124;y>0;y--);
}
把t 改为你要延时的数就可以了,1毫秒就把t改为1 500毫秒就把t改为500
#include <reg51.h>
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0CA;
TL0 = 0x4A;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main(void)
{
InitTimer0();
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x0CA;
TL0 = 0x4A;
//add your code here!
}
百度“单片机小精灵”
单片机编程高手请进,用T0的方式1定时,由P1.0引脚输出50Hz方波,晶振频率...
T0的初值为TH0 =0D8H,TL0 = 0F0H。(2)程序 ORG0000H;程序入口 BEGIN:AJMP MAIN ;转主程序 ORG 000BH ;T0中断入口 AJMP IT0P;转T0中断处理程序IT0P ORG 0100H ;主程序入口 MAIN: MOV TMOD,#01H;设置T0为方式1定时 MOV TL0,#0F0H;T0初始化,装初值的低8位...
要求用定时器1的方式1,在P3.0的引脚上产生一个周期为4MS的方波.单片机...
include<reg52.h> \/\/主程序 void main(){ TMOD=0x10;\/\/ 定时器1工作方式一 ET1=1;EA=1;TH1=(65536-2000)\/256;TL1=(65536-2000)%256;TR1=1;while(1);} \/\/中断子程序 void Timer1() interrupt 3 { TH1=(65536-2000)\/256;TL1=(65536-2000)%256;P3^0=~P3^0;} ...
利用单片机的定时器t0工作于方式1,实现从p1.0引脚上输出周期为10ms的...
因为周期为10毫秒,定时器中断方式,所以初值应该为:65536-(10\/2)*1000=65536-5000 TH0=(65536-5000)\/256 TL0=(65536-5000)%256 程序如下:ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#01H MOV TH0,#HIGH(65536-5000)MOV TL0,#LOW(65536-5000)SETB TR0 SETB ...
单片机晶振频率6MHz,使用定时器1以方式0和1,产生周期为1ms的等宽正方波...
\/\/计时器,使用四位一体数码管,前两位显示分钟,后两位显示秒。\/\/晶振频率:12M \/\/单片机型号:STC89C52RC \/\/定时器方式1 \/\/这是我写的,运行过没问题,你自己改吧。include "reg52.h"define uchar unsigned char define uint unsigned int sbit qian =P1^0; \/\/千位 sbit bai =P1^1; \/...
单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMO...
答:单片机定时器0设置为工作方式1为TMOD=0x01;定时器1设置工作方式1时TMOD=0x10.阁下看TMOD里的各个位啥意思就知道了。include<reg52.h> void main(){ while(1){ SBUF=0xfe;while(!TI);if(RI==1)RI=0;REN=1;P0=SBUF;} } 这个程序不对。错误有:1.主程序没设定波特率、串口工作方式、...
有关单片机定时器的使用和定时器的介绍
第一种计数的方式是十三位加一的形式,第二种是十六位加一的计数器,第三种的定数器被分解成两部分,一个是八位的寄存器,另外一个是八位的计数器。第三步就是要为定时器进行赋值,首先定时器的初值是等于计数器模值减去计数器记满的招满值,而定时器的初值是等于模值减去预定时的时间与单片机时钟...
51单片机定时器1方式2怎么设置为什么TMOD=0x20(是怎么换算得) 定时...
1、首先第一步是定时器2是新增资源,也是51单片机定时器里面功能最强大的一个定时器。注意的是掌握好定时器2还是非常有必要的。2、然后就是定时器2是一个16位定时器\/计数器,注意的是通过设置特殊功能寄存器T2CON中的C\/T2位可将其设置为定时器或是计数器。3、接着就是通过设置T2CON中的工作模式...
51单片机定时器什么时候用方式1,什么时候用方式2?
方式2是自动重装模式,少了两条重装计数器初值的语句,在中断频繁的情况下,明显可以提高CPU的工作效率 例如用定时器模拟PWM波,频率要想达到100KHZ,每次中断间隔只有10us,即使主程序什么也不干,中断程序在10us内完成也很困难,这时采用自动重装模式就很有效果 但方式2是8位计数器、定时器,一次定时时...
简述8051单片机的定时\/计数器的四种工作方式的特点。
具体如下所示:1、为13位计数器,由TL(1\/0)的低5位和TH(0\/1)的8位组,此时TL(1\/0)的高3位未用。C\/T:C\/T为0就是用作定时器(开关往上打),如果C\/T为1就是用作计数器(开关往下打)。GATE:GATE后非门后是一或门,GATE=0时只要TR1=0则开关闭合。2、是16位的定时\/计数方式...
单片机的定时器t1用作定时方式时是
单片机的定时器t1用作定时方式时是由内部时钟频率定时,一个机器周期加。定时器则是由单片机自身提供的一个非常稳定的计数器,这个稳定的计数器就是单片机上连接的晶振部件,晶振经过12分频之后提供给单片机的只有1MHZ的稳定脉冲。
尤勇贝诺: 定时160us. 输出一次高电平,四次低电平. 即可. 程序如下:ORG 0000HMOV TMOD, #20HMOV TH1, #(256 - 160)MOV TL1, TH1SETB TR1 LP1:SETB P2.0MOV R2, #5 LP2:JNB TF1, $CLR P2.0CLR TF1DJNZ R2, LP2SJMP LP1 END
石家庄市13721245599: 一个单片机 定时器 计算 问题 - ?
尤勇贝诺: 12M的晶振每秒可产生1M个机器周期,50ms就需要50000个机器周期,定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值15536,即3CB0H,所以TH0=0x3c,TL0=0xb0.11.0592M的晶振每秒可产生0.9216M个机器周期,50ms就需要46080个机器周期,定时器在方式1工作,是16位计数器,最大值为65536,所以需设置初值19456,即4C00H,所以TH0=0x4c,TL0=0x00.
石家庄市13721245599: 单片机晶振频率6MHz,使用定时器1以方式0和1,产生周期为1ms的等宽正方波脉冲,并由P1.0输出 - ?
尤勇贝诺: 给你一个模板吧,,,这里选择定时器1的方式1 采用汇编 中断方式编写T(周)=12/6 =2us, N=65536-(1/2 ms)/(2us)=65286 ORG 0000HLJMP START;ORG 001bHLJMP TT1 START: mov TMOD ,#10Hmov DPTR ,#65286mov TH1,DPHmov TL1,DPLSETB TR1SJMP $TT1:mov TH1,DPHmov TL1,DPLCPL P1.0RETI给你参考一下,,有啥不懂得,,可以随时连线
石家庄市13721245599: 51单片机定时器设置: - ?
尤勇贝诺: TMOD = (TMOD & 0XF0) | 0X01; //定时器0工作在模式1,16Bit定时器模式 上述表达式中0XF0的作用是什么? 1 (TMOD & 0XF0) 其中&为逻辑与指令,按位与操作,定时器的模式寄存器TMOD与上0XF0的作用是高4位不变,低4位被清零.(1与上...
石家庄市13721245599: 51单片机MCS - 51,如果采用的晶振的频率为3MHz,定时器/计数器工作在方式0、1、2下,其最大的定时时间各为多少? - ?
尤勇贝诺:[答案] 方式0 : 2^13 / 3M *12=0.032768s; 方式1 : 2^16 / 3M *12=0.262144s; 方式2 : 2^8 / 3M *12=0.001024s;
石家庄市13721245599: 51单片机中断定时 - ?
尤勇贝诺: 51单片机定时器T1,直接定时30秒是不行的,但是,可以定时50ms,以晶振为12M为例,时间常数是:TH1=(65536-50000)/256; TL1=(65536-50000)%256; 开中断,在中断程序中计数,每中断计一个数,计数600次,就是30秒了,对一个引脚取反,就可以高低变化了,每隔30秒一变.
石家庄市13721245599: 如何用51单片机测量发动机转速 要求只用一个定时器 晶振频率33MHZ?
尤勇贝诺: 如果有个轮子的话,可以配一个红外对管.用对管数轮子转一圈的时间,在知道轮子的周长的情况下,是可以算出来的.
石家庄市13721245599: 用51单片机设置数字钟,用中断定时25ms,晶振23Mhz, 进入40次.但仿真效果秒表显示很快,这是为什么? - ?
尤勇贝诺: 在C语言中23/12的结果为1.所以 TH0=(65536-25000*(23/12))/256; TL0=(65536-25000*(23/12))%256;最终的结果还是 TH0=(65536-25000)/256; TL0=(65536-25000)%256;.因为定时器的初始值不变,而晶振频率提高了将近1倍.所以需要接近一倍的中断次数才能得到同样的定时时间.在12M下,40次中断就是1S,在23M下,同样的初始值,需要接近80次中断才是1S
石家庄市13721245599: 51单片机50ms定时 - ?
尤勇贝诺: 12MHz 的晶振,那么一个周期就是 1 us,所以需要计数 50ms / 1us = 50000,可以选择定时器工作方式 1.由上述计算: TH1 = (65536 - 50000) / 256; TL1 = (65536 - 50000) % 256;方式一,所以: TMOD = 0x10;运行 TR1 = 1,所以: ...
石家庄市13721245599: 51单片机晶振频率为12MHz,定时器1工作方式1中断方式在P2.3输出频率为10Hz的方波 - ?
尤勇贝诺: MOD应该是/除号,因为是12M晶振,所以定时器一个计数值为1US,所以按这个赋值,定时器1将会50ms中断一次,要想产生10Hz的方波,周期得100ms,也就是说可以在中断服务程序中加条语句:cpl p2.3,就可以了,这样两次中断就是一个周期得方波信号,正好50X2=100ms.