51单片机,定时器方式1的1s定时,怎么编程

来几个高手编程,谢谢
最好在语句后面用//标明是什么意思,谢谢

本程序来自《单片机C语言程序设计实训100例——基于8051+Proteus仿真》没用中断。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void main()
{
uchar T_Count = 0;
P0 = 0xfe;
P2 = 0xfe;
TMOD = 0x10;//定时器1方式1
TH1 = (65535-50000)/256;//定时50000us=50ms
TL1 = (65535-50000)%256;
TR1 = 1;//启动定时器1
while(1)
{
if(TF1== 1)//查询方式定时时间到后TF1=1
{
TF1 = 0;
TH1 = (65535-50000)/256;
TL1 = (65535-50000)%256;
if(++T_Count == 20)//50ms*20=1000ms
{
P0 = _crol_(P0,1);
P2 = _crol_(P2,1);
T_Count = 0;
}
}
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C51单片机定时器1以方式1定时1秒如何设置?
1、先打开我们熟悉的单片机c51编程软件——keil,先把主方法写好。2、然后,我们要定义两个变量。3、接着,设定好定时器的工作方式。4、设置中断发生的机制。5、最后,我们要加进这几行代码进行初值的重装。6、最后,把if语句补充完毕就可以了。

51单片机中,定时器怎么做延时函数用,比如说,要精确延时1s,该怎么写...
TMOD=0X10;\/\/选择为定时器模式,工作方式1。TH1=0Xfc;\/\/给定时器赋初值,定时1000us TL1=0X18;ET1=1;\/\/打开定时器1中断允许 EA=1;\/\/打开总中断 TR1=1;\/\/打开定时器 } void interrupt_timer1() interrupt 3 \/\/1000us { TH1 = 0xfc; \/\/重装 TL1 = 0x18;TimeTickCount++;\/\/1000u...

51单片机,用定时器中断,在P1口实现1S移动一次的流水灯,用汇编语言编写...
timetemp: DS 1 LED: DS 1 CSEG AT 00H ORG 0000H LJMP START ORG 000BH LJMP Timer0Interrupt START:MOV SP,#60H MOV timetemp,#20 MOV P1,#0FFH;LED低电平点亮 LCALL InitTimer0 MOV LED,#0FEH LOOP:MOV P1,LED ;add your code here!LJMP LOOP InitTimer0:MOV TMO...

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

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

MCS-51单片机的编程题:已知系统晶振频率为12MHZ,采用定时器T0的方式1...
void inition(){ TOMD=0x01;\/\/选择定时器0并选择工作方式1 TH0=(65536-50000)\/256;TL0=(65536-500000)%6;EA=1;ET0=1;TR0=1;} 这样初始化就没问题了,另外要实现1S延时,需要在中断函数里加个变量自增,因为我定义的是50ms中断一次,那么这个变量值自增到20后就代表1s时间到,清零这个变量...

51单片机定时器方式1,晶振33hz,延时1秒,怎么用c语言编程
一个定时周期延时50ms 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!} ...

51单片机的定时器的时间怎么算??
51单片机1个机器周期=12个时钟周期,频率为12MHZ,则一个机器周期为1US,具体到定时器程序就是,假如你想定1MS,那么单片机每次加一个一,就要过1US,那么1MS就要加1000次,所以用65535-1000=64535;再把64535换成16进制为FC17,把FC付给TH0,17给TLO,即可定时1MS,因为65535他就溢出进入中断。

51单片机中用定时器定时1毫秒,怎么编写
假设晶振为12MHz,不用中断时程序语句如下:TMOD=0x01;\/\/定时器0工作方式1 TH0=(65536-1000)\/256;\/\/装入初值 TL0=(65536-1000)%256;TF0=0;\/\/清溢出标志;TR0=1;\/\/启动定时器0 while(TF0==0);\/\/等待定时时间到 TR0=0;TF0=0;...

MCS—51单片机定时\/计数器实验 编程 求程序
MOV TMOD,#52H ;T1计数方式1; T0定时方式2 MOV TH0, #(256-250) ;T0定时250us@12MHz MOV TL0, #(256-250) ;SETB TR0;MOV TH1, #(65536-4000) \/ 256 ;T1计数4000 MOV TL1, #(65536-4000) MOD 256 ;即1s SETB TR1;SETB ET0;SETB ET1;SETB EA;MOV R2, ...

相似回答