1. 单片机定时器初始化代码
51单片机中的定时器控制字中有两个控制位TR0、TR1,分别用于启动、停止定时器的计数。 任何时刻,当TR0/TR1为1时,T0/T1定时器计数;当TR0/TR1为0时,T0/T1定时器停止计数。
置TR0/TR1为1的指令一般应该在初始化程序或主程序或其他程序中,不能在其自己的中断服务程序中。
因为CPU能够进入运行该定时器的中断服务程序,肯定是该定时器已经启动并且计时已到。
2. 单片机定时器初始化代码是什么
TMOD可以同时设置定时器1和定时器0的工作方式即计数方式。由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始化的步骤一般如下: 1、确定工作方式(即对TMOD赋值); 2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); 3、根据需要开放定时器/计数器的中断(直接对IE位赋值); 4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。
3. 单片机定时器初始化代码是多少
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率 TH1=TL1=0xE8; // 波特率1200 SCON = 0x50; // 设定串行口工作方式1 允许接收,相当于下面三句 //SM0=0; //SM1=1; //REN=1; PCON =0x00; // 波特率不倍增 SMOD = 0 TR1 = 1;
4. 51单片机定时计数器初始化
51单片机中的定时器控制字中有两个控制位TR0、TR1,分别用于启动、停止定时器的计数。任何时刻,当TR0/TR1为1时,T0/T1定时器计数;当TR0/TR1为0时,T0/T1定时器停止计数。
置TR0/TR1为1的指令一般应该在初始化程序或主程序或其他程序中,不能在其自己的中断服务程序中。
因为CPU能够进入运行该定时器的中断服务程序,肯定是该定时器已经启动并且计时已到。
5. 单片机定时器程序编写
因为周期为10毫秒,定时器中断方式,所以初值应该为:65536-(10/2)*1000=65536-5000TH0=(65536-5000)/256TL0=(65536-5000)%256程序如下:ORG0000HLJMPMAINORG000BHLJMPT0ISRORG0030HMAIN:MOVTMOD,#01HMOVTH0,#HIGH(65536-5000)MOVTL0,#LOW(65536-5000)SETBTR0SETBET0SETBEASJMP$T0ISR:CLRTR0MOVTH0,#HIGH(65536-5000)MOVTL0,#LOW(65536-5000)SETBTR0CPLP1.0RETIEND
6. 定时器的初始化编程
还可以使用现成的TPC4-4TD型定时程序控制器,可以控制4路负载,还有4路输入开关的控制,输出定时0——200小时,一共60行设置程序,每行程序有一个延时定时器和一个输出定时器。采用表格设置,无需编程。不仅可以实现定时控制,还可以实现程序控制。不过这个控制器一般都是用于工业设备控制使用,价格380元。还有控制更多输出电器负载的型号。 下面补充回答你对单片机编程的问题: 用单片机编制简易家电控制器并不复杂,只要你学过汇编语言或者单片机C语言也是比较简单的入门程序。程序基本涉及到三个部分,一是按键扫描程序,二是显示程序,这两个程序配合实现对家电控制器操作和设置;三是定时部分,定时部分使用单片机内部的定时器,需要编写定时器的初始化和定时器的中断程序。最好亲自尝试程序的编写,有个这样的课题也是使自己提升的最佳机会。 有个捷径就是参考别人的示例程序,拿来理解修改,这也是学习过程,可以快速掌握。下的功夫越多,自己获得的就更多。
7. 单片机定时器初始化程序代码
TR1=1;是启动计数的标志位,那TR1=0;就是停止计数了。 C语言程序就这么写。 汇编写法: SETB TR1;启动 CLR TR1;停止
8. 51单片机定时器初始化编程的具体过程
51单片机的pwm调速频率主要通过一个定时器和一个IO口来实现PWM的输出。在一个周期里面,首先让IO口输出高电平,并定时一定的时间然后再将IO口输出低电平,定时一定的时间。然后在while里面循环输出即可。需要改变占空比的话就改变高电平的时间与低电平的时间比。我们来看看51单片机的PWM调速程序。
51单片机PWM调速程序
/*******************************************************************/ /* 程序名:PWM直流电机调速 */
/* 晶振:11.00592 MHz CPU型号:AT89C51 */
/* 直流电机的PWM波控制,可以直接的调速从0到20级的调速 */
/*****************************************************************/ #include《reg51.h》
#define TH0_TL0 (65536-1000)//设定中断的间隔时长
unsigned char count0 = 50;//低电平的占空比 unsigned char count1 = 0;//高电平的占空比
bit Flag = 1;//电机正反转标志位,1正转,0反转
sbit Key_add=P2 ^ 0; //电机减速 sbit Key_dec=P2 ^ 1; //电机加速 sbit Key_turn=P2 ^ 2; //电机换向
sbit PWM1=P2^6;//PWM 通道 1,反转脉冲 sbit PWM2=P2^7;//PWM 通道 2,正转脉冲
unsigned char Time_delay;
/************函数声明**************/ void Delay(unsigned char x); void Motor_speed_high(void); void Motor_speed_low(void); void Motor_turn(void); void Timer0_init(void);
/****************延时处理**********************/ void Delay(unsigned char x)
{
Time_delay = x;
while(Time_delay != 0);//等待中断,可减少PWM输出时间间隔
}
/*******按键处理加pwm占空比,电机加速**********/ void Motor_speed_high(void)//
{
if(Key_add==0)
{
Delay(10); if(Key_add==0)
{
count0 += 5;
if(count0 》= 100)
{
count0 = 100;
}
}
while(!Key_add);//等待键松开
}
}
/******按键处理减pwm占空比,电机减速*****/ void Motor_speed_low(void)
{
}
}
/************电机正反向控制**************/ void Motor_turn(void)
{
if(Key_turn == 0)
{
Delay(10); if(Key_turn == 0)
{
Flag = ~Flag;
if(Key_dec==0)
{
Delay(10); if(Key_dec==0)
{
count0 -= 5;
if(count0 《= 0)
{
count0 = 0;
}
}
while(!Key_dec );
}
while(!Key_turn);
}
}
/***********定时器0初始化***********/ void Timer0_init(void)
{
TMOD=0x01; //定时器0工作于方式1 TH0=TH0_TL0/256; TL0=TH0_TL0%256; TR0=1; ET0=1; EA=1; }
/*********主函数********************/ void main(void)
{
Timer0_init(); while(1)
{
Motor_turn(); Motor_speed_high(); Motor_speed_low();
}
}
/**************定时0中断处理******************/ void Timer0_int(void) interrupt 1 using 1
{
TR0 = 0;//设置定时器初值期间,关闭定时器 TL0 = TH0_TL0 % 256;
TH0 = TH0_TL0 / 256 //定时器装初值 TR0 = 1;
if(Time_delay != 0)//延时函数用
{
Time_delay--;
}
if(Flag == 1)//电机正转
{
PWM1 = 0;
if(++count1 《 count0)
{
PWM2 = 1; } else PWM2 = 0;
if(count1 》= 100) { count1=0; } }
else //电机反转
{
PWM2 = 0;
if(++count1 《 count0) { PWM1 = 1; } else PWM1 = 0;
if(count1 》= 100)
{
count1=0;
}
}
}
9. 单片机定时器代码详解
定时器初值=2^n-m*晶振值/分频系数;n:定时器模式,有13,8,16三种;m:要定的时间长度,晶振值:12MHz或6Mhz分频系数:12定义10毫秒;定时器模式1,晶振频率12MHz定时器初值=2^16-10ms*12Mhz/12.=65536-10000.=5536注意单位换算;
10. 单片机定时器初始值
当TL0溢出后,会自动将TH0的初值装入TL0,所以只需要初始时候对TH0、TL0进行赋值,中断程序中就不需要再装入初值了。