51单片机,定时器方式1的1s定时,怎么编程
(这是我同学编的,拿来给你)
#include
#include
unsigned char i;
void main()
{
TMOD=0x00;
TH1=0x3c;
TL1=0xb0;
EA=1;
ET1=1;
TR1=1;
while(1)
{
if(i==20)
{
i=0;
//下面写你要处理的的其他程序,你只要了定时1s。
}
}
}
void a(void) interrupt 3
{
unsigned char i;
TH1=0x3c;
TL1=0xb0;
i++;
}
可以给你做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;
}
}
}
}
利用定时器的定时中断方式产生1hz的方波,怎么编写程序,51单片机?
主程序中:sbit OUT=P1^0;uchar a=0;\/\/计中断次数的变量 TMOD=0x01;\/\/ 定时器1工作方式一 ET0=1;EA=1;TH0=(65536-50000)\/256;\/\/定时50ms TL0=(65536-50000)%256;TR0=1;\/\/启动定时器 while(1);中断程序:void Timer0(void) interrupt 1 { TH0=(65536-50000)\/256;TL0=(65536-...
51单片机定时器方式1,晶振33hz,延时1秒,怎么用c语言编程
\/\/33MHz 一个定时周期延时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 ...
51单片机定时器1方式2怎么设置为什么TMOD=0x20(是怎么换算得) 定时...
1、首先第一步是定时器2是新增资源,也是51单片机定时器里面功能最强大的一个定时器。注意的是掌握好定时器2还是非常有必要的。2、然后就是定时器2是一个16位定时器\/计数器,注意的是通过设置特殊功能寄存器T2CON中的C\/T2位可将其设置为定时器或是计数器。3、接着就是通过设置T2CON中的工作模式...
单片机采用12M晶振,T0工作于定时器方式1,如若定时5mS,则定时器初值是多...
1.单片机采用12MHz的晶振,则51单片机的机器周期为晶振频率的12分频,即 f机器=12M\/12=1MHz,则机器周期为1微秒 2.采用定时器方式1,这个定时器为一个16位的定时器,最长的定时时间为(0xFF)65535微秒 3。如果想定时5ms即5000微秒的话,只需用下面的公式计算即可 定时器初值=最长定时时间-需要定时...
单片机C51定时器,定时方式0,初始值计算
就是你的方法算啊,方式0就是只用到13位其余的位用零填,之后再将它换成16进制的就可以了,就像11110 0000 1100用0填后是1111 0000 0000 1100B,再将它换成16进制数,也就是TH0=0F0H,TLO=00CH.其实用C或用方式1就好多了。不用那麻烦的。
单片机晶振频率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; \/...
c51单片机中定时器工作方式
定时\/计数器的工作方式 一、方式0 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。定时器模式时有:N=t\/ Tcy 计数初值计算的公式为:定时器的初值还可以采用计数个数直接取补法获得。计数模式时...
单片机中的定时器1的方式二的用法
方式2是自动重装载模式,8位计数器,其中定时器1可以用作波特率发生器。举一个例子:ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV TMOD,#02H MOV TH0,#6 MOV TL0,#6 SETB TR0 SETB ET0 SETB EA SJMP T0ISR:CPL P1.0 RETI END 以上程序可以在P1.0上产生周期为500...
求单片机编程:利用定时器计数器T0方式1,输出一个是10毫秒的方波,晶震是...
TL0=(65536-2500)%256;EA=1;\/\/开总中断 IT0=1;\/\/定时器0中断允许 TR0=1;\/\/启动定时器0 P1^0=0;\/\/输入方波初始为低电平 while(1){ } } void timer0 interrupt 1\/\/定时器中断 { TH0=(65536-2500)\/256;\/\/重新送初值 TL0=(65536-2500)%256;P1^0~=P1^0;} 呵呵呵 请...
单片机的晶振频率是6mhz时,定时器\/计数器的方式0、1、2的最长时间分别...
方式0:十三位定时器,所以最大是8192*2=16384us 方式1:十六位定时器,所以最大是65526*2=131072us 方式2:八位定时器,所以最大是256*2=512us
茆庭苯唑: 你的问题写的不完整,不过按我的理解应该是你不清楚定时1s是如何实现的,如果是这样,解释如下:在void time0(void) interrupt 1中定时器定时50ms,并且每次将t的值加1,我认为这个t是你的主程序或者其他函数中用来对定时器的50ms进行计数的,也就是说,t对定时器的定时50ms进行计数,计数20次也就实现了计时50ms*20=1s,只需要检测t的值是否等于20,就可以判断出定时1s是否到,若到,则清零t,进行下一缉埂光忌叱涣癸惟含隶次的定时计数
宁南县15679609821: MCS - 51单片机的编程题:已知系统晶振频率为12MHZ,采用定时器T0的方式1,请编程实现1s的延时. - ?
茆庭苯唑: void timer0() interrupt 1 { uchar count; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; count++; if(count == 20) { count = 0; sec++; if(sec == 100) { sec = 0; } } }
宁南县15679609821: 试用8051单片机的定时器T1产生1s的定时,设单片机晶振为12MHz - ?
茆庭苯唑: TMOD = 0x01; TH0 = 0x78; TL0 = 0xEC; EA = 1; ET = 1; TR0 = 1; 这样初始化完了后,在中断函数重,让计数等于10就是1秒钟
宁南县15679609821: 51单片机定时器模式1定时1us为什么用了好几秒啊 - ?
茆庭苯唑: 你的程序只有这几行吗?那没有ET1=1,开定时器中断没有啊.定时到了,是不能中断的.其实,这么设置没有什么意义的,因为,执行完TR1=1,这条指令,就开始计时了,只要1个机器周期就定时到.执行完TR1=1,定时就到了.但是还没有执行EA=1;就不能中断,还得等到ET1=1以后,才能中断.其实,早就定时到了,但没有执行ET1=1是不能中断.单片机响应中断后,转去执行中断服务子程序,这需要更多的机器周期,远远超过1个机器周期,因此,你的设置是无理的.而你的程序就没有ET1=1,所以,不可能中断的.等了好几秒.........为什么啊?就应该等啊.
宁南县15679609821: 51单片机定时器中断方式实现P1.0输出周期1s的方波的方法 - ?
茆庭苯唑: 方法有很多的,给你一个,你可以调试一下,你可以通过不同的晶振去计算定时器初值,如果你懂定时器这部分很好调通的 #include <reg52.h> sbit p1_0=P1^0; int i; //全局变量void timing(void) //晶振为3.6864M {TMOD|=0x01; //定时器T0,...
宁南县15679609821: 51系列单片机用c语言编程实现1s定时、1khz方波、512hz方波输出,麻烦多在程序后注释解释程序意思,谢谢 - ?
茆庭苯唑: 以C8051F120为例: 要先配置启动时钟,可以是内部时钟也可以是外部时钟; 再配置交叉端口输出; 之后编写定时器的配置和输出(模式要配置好); 走后别忘了页总线的 切换.具体和51没什么区别,可以参考51
宁南县15679609821: AT89C51单片机利用定时器|计数器T0产生1秒钟的定时,每当一秒定时到来时,更换指示灯点亮,依次循环点亮 - ?
茆庭苯唑: 初始化T0定时50MS,设个计数变量,每定时到了进中断一次+1,加到20次时就是1S,然后更换指示灯点亮,下1S 依次循环点亮. void main(void) {TMOD=0x01; //16位定时模式TH0=(65536-50000) >> 8;TL0=(65536-50000) & 255;TR0=1;...
宁南县15679609821: 利用单片机定时器T1工作方式2,产生时间精确的1s定时,控制使p2.7控制的发 - ?
茆庭苯唑: #includeunsigned int a=0;//累计中断次数 /主程序 void main() { TMOD=0x20;// 定时器1工作方式2 ET1=1; EA=1; TH1=(256-200);//晶振12M时定时 200us TL1=(256-200); TR1=1; while(1); } //中断子程序 void Timer1() interrupt 3 { a++; if(a==5000)//5000次是1000ms { a=0; P2^7=~P2^7; } }
宁南县15679609821: 如何用51单片机实现定时 - ?
茆庭苯唑: 用单片机的定时器中断,50MS一中断,计20次1 S .以这1S为基础,你要多长时间都可以了
宁南县15679609821: 在12mhz的51单片机系统中,哪一种模式一次可定时1ms - ?
茆庭苯唑: 在12MHz的51单片机系统中,方式0或方式1可一次定时1ms.