单片机计时器程序里TMOD、THO、TLO都是什么意思?需要编一个计时器来代替delay,让单片机保持状态3秒

单片机计时器程序里TMOD、THO、TLO都是什么意思?需要编一个计时器来代替delay,让单片机保持状态3秒,12mHz晶振。求讲解,求赐教,求讲解,求赐教,求讲解,求赐教,求讲解,求赐教,求讲解,求赐教
用的片子是AT89S52

TMOD是一个定时器方式寄存器 分别是gate C/T M1 M0 GATE C/T M1 M0高四位是定时器T1控制字,低四位是定时器T0控制字。GATE为门控位,为0时,则TR0/TR1=1启动定时器。为1时,则外部中断INT0/INT1=1时,TR0/TR1=1才能启动定时器。C/T为定时/计数模式选择位,为0时定时模式,为1时技术模式。M1 M0为工作方式设置位,共有四种工作方式,大部分情况下都是用方式1。
TH0,TL0分别是定时器T0的的高八位和八四位。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-28
TMOD:定时器方式寄存器
TH0:定时器0寄存器高位
TL0:定时器0寄存器低位
ORG 0000H
SJMP STA
ORG 000BH
LJMP T0ISR
ORG 0050H
STA:
MOV SP,#5FH
MOV TMOD,#11H
MOV TL0,#LOW(65536-50000)
MOV TH0,#HIGH(65536-50000) ;定时器50毫秒中断一次
MOV R2,#60 ;60*50=3000毫秒即3秒
SETB TR0
SETB ET0
CLR 00H
SETB EA
LOOP:
JNB 00H,LOOP
CLR 00H
SJMP LOOP
T0ISR:
PUSH ACC
CLR TR0
MOV TL0,#LOW(65536-50000)
MOV TH0,#HIGH(65536-50000)
SETB TR0
DEC R2
MOV A,R2
JNZ T0ISRE
SETB 00H ; 3秒到,置位
MOV R2,#60
T0ISRE:
POP ACC
RETI
END追问

额······那个高级语言就行,本人小白,还没学这种汇编语言,看不懂·······

追答

#include
unsigned int count;
unsigned char flag;
void toisr() interrupt 1
{
TR0=0;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
TR0=1;
count--;
if(count==0){
count=60;
flag=0xff;
}
}
main()
{
SP=0x5f;
TMOD=0x11;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
flag=0x00;
count=60
TR0=1;
ET0=1;
EA=1;
while(1){
if(flag==0xff)flag=0x00;
}
}

追问

加下qq吧,大神

追答

17328812,现在机器没有QQ,你加吧,回头我再加

本回答被提问者采纳

...TLO都是什么意思?需要编一个计时器来代替delay,让单片机保持状态3秒...
TMOD是一个定时器方式寄存器 分别是gate C\/T M1 M0 GATE C\/T M1 M0高四位是定时器T1控制字,低四位是定时器T0控制字。GATE为门控位,为0时,则TR0\/TR1=1启动定时器。为1时,则外部中断INT0\/INT1=1时,TR0\/TR1=1才能启动定时器。C\/T为定时\/计数模式选择位,为0时定时模式,...

为什么编51单片机定时器中断序 ,编译时THO,TMOD,TLO,TRO显示未定义
首先我发现你打字出错了,TH0,TL0,TR0,要注意“0”是“零”不是英文“O”。还有你要看一下是不是你没有包含“reg52.h”这个头文件

用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器...
用c语言编写程序,用于c51单片机四位共阴数码管显示,显示分秒的计时器。用proteus做的时钟 可以显示年月日时分秒 可调整时间 有图 \/ includereg52.h

8052单片机程序存储器中的六个特殊单元是什么,各有何用途?
TMOD=0x11; \/\/选择计数器T1模式1 TH1=(65536-46080)\/256; 这是定时器的设置 计算初值 改变那个被减数可以改变每次的时间 TL1=(65536-46080)%256; \/\/定时器1实现50MS定时 同上 EA=1; \/\/开总中断 ET1=1; \/\/开定时器1中断 TR1=1; \/\/定时器1开始计数 } \/***定时器...

51单片机计时器溢出中断是什么意思?
定时器中断是由单片机中的定时器溢出引起的中断,51单片机中有两个定时器t0和t1。定时/计数器t0和t1由两个8位专用寄存器组成,即定时/计数器t0由th0和tl0组成,t1由th1和tl1组成。此外,还有两个8位特殊功能寄存器tmod和tcon。tmod负责控制和确定t0和t1的功能和工作模式。tcon用于控制t0和t1的开始或...

如何用单片机做一个简单的倒计时器?
void delay(u16 i){ while(i--);} \/ 函 数 名 : Timer0Init 函数功能 : 定时器0初始化 输 入 : 无 输 出 : 无 \/ void Timer0Init(){ TMOD=0X11;\/\/选择为定时器0模式,工作方式1,仅用TR0打开启动。TH0=0Xd8;\/\/给定时器赋初值,定时10ms TL0=0Xf0;ET0=1...

利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开...
void delay(uint);void display(ucharbai,ucharshi,ucharge);uint fb();uint fs();uint fg();void main(){ init();while(1){ display(fb(),fs(),fg());} } void init(){ num=0;a=0;TMOD=0x01;TH0=(65536-50000)\/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;} void ...

编写一个AT89C52单片机控制四相单四拍步进电机汇编程序,急用...
基于MCS-51系列单片机AT89C51,设计一个控制步进电动机的控制装置。2 设计要求:1) 采用单片机控制一个小功率四相四拍的步进电机工作,步进电机步距为1.5度,最大相电流100mA;2) 设计步进控制躯动电路;3) 控制器有5个按键。K1:“启动\/停止”,K2:“正转\/反转”,K3:“180度”,K4:“720度”,K5:“连续转动”...

编一个AT89C51单片机00 —99 秒的汇编程序,要求有循环和暂停,用两个...
CALL DELAY1 MOV A,20H MOVC A,@A+DPTR MOV P0,A SETB LATCH1 CLR LATCH1 MOV P0,#11111101B ;0代表选通该位数码管 SETB LATCH2 CLR LATCH2 CALL DELAY1 RET DELAY:MOV R5,#50 ;典型延时程序 D1: MOV R6,#40 D2: MOV R7,#248 CALL SCAN DJNZ R7,DJNZ R6,D2 DJNZ ...

求51单片机PWM程序(一个定时器产生三路PWM 可独立运作) 简单来说就...
void ISR_Timer0(void) interrupt 1 \/\/---我们就用定时器0来做,不用PWM硬件 { \/\/---3.3333ms中断一次 counter++;if(counter >= 10) counter = 0;if(counter >= Set_PWM0) P1_0 = 0; else P1_0 = 1;if(counter >= Set_PWM1) P1_1 = 0; else P1_1 = 1;if(counter ...

相似回答