8051单片机定时常数如何计算
可以直接下载个软件计算,你也可以手动计算,你看你晶振多大,计算出一个机器周期是多长,还有中断装入初值是多少,
定时器中断,这要看你选接的定时器工作的方式.在TMOD中设置,,书上有..
计算是接,晶振周期的1/12来算...
比如说8051用的12M的晶振,定时时间为,1MS
选用T0定时器工作方式1(16位)
初始数算法为:10000H-(12M/12)*1000(US)=FC18H
MOV TMOD,#01H ;选定时器0,并且式作方式为1
MOV TL0,#18H ;初值低位,送定时器低位
MOV TH0,#FCH ;初值高位,送定时器高位
SETB TR0 ;定时开始
如果要加中断,还应该有:
SETB EA ;中断允许开
SETB ET0 ;定时器0中断开
加了中断后,还有中断入口地址:
定时器0中断入口地址为:0BH
要执行中断后的程序就应这样写:
ORG 0BH
.....
.....
RETI ;中断子程序结束
中断开始后,程序指针会跳到ORG 0BH的下一行开始执行"....."
x=65536-t*fosc/12M
AT89C2051-24PU最高支持24M
可以使用12M的晶振 此时系统时钟也就只有12M了
下载个单片机小精灵··轻松搞定·
以10MS定时器初始值的计算为例:
1、晶掁 12M
12MHz除以12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次机器周期。
65536-10000=55536(D8F0)
TH0=0xD8, TL0=0xF0
2、晶掁11.0592M
11.0592MHz除以12为921600Hz,就是一秒921600次机器周期。10ms=9216次机器周期。
65536-9216=56320(DC00)
TH0=0xDC, TL0=0x00
单片机80c51定时器\/计数器方式1产生500hz的方波时间值常数是多少
12M晶振 1秒100万条指令 定时器初值=定时器最大值-1000000\/所需频率 TH0=(65536-(1000000\/500))>>8;TL0=(65536-(1000000\/500));
51单片机编程实现定时器产生中断输出方波
你画的波形图不是方波,应该是矩形波。include"reg52.h"define uint unsigned int uint k;sbit out=P1^1;\/\/定义输出脚 void main(){ TMOD=0x01;\/\/定时器0工作方式1 TH0=(65536-5000)\/256;\/\/12M晶振5ms计时常数 TL0=(65536-5000)%256;EA=1;\/\/开总中断 ET0=1;\/\/开定时器0中断 TR0=...
51单片机中如何利用I\/O口产生一定频率的方波
可以用定时器中断实现这样的处理,这种方法重点在于根据你的晶振频率计算出定时器中断的参数,然后就可以很好的控制定时器中断触发的时间了。只要在中断处理过程里不断的让I\/O口取反,就可以实现这样的方波了。\/\/ 常数定义 define TimeL 0x07 \/\/定时器低位 define TimeH 0xFE \/\/定时器...
单片机如何发生精确的38KHZ方波,com021@163.com
如改为96MHZ 、 则定时时间=(265-X)\/8 微秒 计时精度为0.125微秒 如改为192MHZ 、则定时时间=(265-X)\/16 微秒 计时精度为0.065微秒 3 解决的方法是你需要更换单片机 51单片机 目前晶振频率最高的是AT89S51 可以达到33MHZ 误差还是太大 可以选择与51相兼容芯片如STC89C...
用C51单片机,编写脉冲控制步进电机的驱动器
include <Reg51.h> define uchar unsigned char \/\/显示扫描定时常数,定时时间5ms(fosc=6MHz)define TC -2500 \/\/点动软定时常数,定时时间160ms(单位20ms)define TCS 8 \/\/快速软定时常数,定时时间40ms(单位20ms)define TCF 2 void disp(unsigned);sbit DOWN = P3^0;\/\/定义P3...
设MCS-51系列单片机的晶振频率fOSC=6MHz, 若tPWM=2ms,PWM信号的占空比为...
分别是0XFE和0X0C。2ms周期占空比50%就是1ms,计算如下:1000=(2的16次方-时间常数)*12\/6,得出来的值为65036,转换成16进制,取高16位和低16位就可以了。
51单片机定时器和串口通讯冲突怎么办?
void init_t0() \/\/定时器0,PWM产生 { TMOD|=0x01;TH0=0xfc; \/\/1ms延时常数 TL0=0xff; \/\/频率调节 PT0=1;EA=1;ET0=1;TR0=1;} void init_int() \/\/串口、定时器初始化 { TMOD|=0x20; \/\/定时器T1,方式二 TH1=0xfd; \/\/波特率2400 TL1=0xfd;TR1=1; ...
求高手 用51单片机输出产生方波的程序
include"reg52.h"sbit PWM=P1^0;\/\/定义输出脚 void main(){ TMOD=0x01; \/\/定时器0工作方式1 TH0=(65536-10000)\/256; \/\/12M晶振10MS计时常数 TL0=(65536-10000)%256;EA=1; \/\/开总中断 ET0=1; \/\/开定时器0中断 TR0=1; \/\/启动定时器0 while(1);} \/\/中断函数,启动后每10MS...
基于at89c52的实时时钟的秒定时信号的产生方法
定时功能,就是利用这种状态来完成的 如果想输出秒信号,那就要计算好单片机的运行周期和定时器初值的关系 具体方法如下:1 可以按定时时间的计算公式, 计算出定时器的时间常数X:定时时间T=(2的N次方-X)12\/单片机晶振频率 2 N为定时器的工作方式:方式0时,N=13 方式1时,N=16 方式2时...
单片机的原理
3•常数(如MOV TH0,#10H)10H即定时常数。 4•实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的字形码,也是实际输出的值。 理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指...