A. 如何对定时器编程
引入时间函数,设定触发条件,循环归零,if then,,你是才学编程吧?Vb还是C系列
B. 可编程定时器
按 start->help and support-> ask for asst.
那里有
C. 定时器编程
#include<reg52.h>
sbit light=P2^0;
unsigned char flag;
void main()
{
EA=1;
ET0=1;
TMOD=0x01;//定时器工作在1方式
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TR0=1;
while(1)
{
if(flag==1)
{
light=0;
}
}
}
void timer() interrupt 0
{
unsigned char i,j;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
i++;
if(i==20)
{
i=0;
j++;
if(j==99) flag=1;
}
}
D. 定时与计数器编程实验
将计数值按二进制数在P1口驱动发光二极管显示出来,到15秒后,计数值清零再从0开始计。
--这些发光二极管,是低电平发光,还是高电平发光?
下面的程序,适合于低电平发光:
ORG 0000H
LJMP START
ORG 000BH
DEC A
MOV P1, A
RETI
ORG 0030H
START:
MOV TMOD, #16H
MOV TH0, #255
MOV TL0, #255
SETB TR0
SETB TR1
MOV IE, #82H
LOOP:
MOV A, #255
MOV P1, A
MOV R2, #240
WAIT:
MOV TH1, #HIGH(65536-62500)
MOV TL1, #LOW(65536-62500)
JNB TF1, $
CLR TF1
DJNZ R2, WAIT
SJMP LOOP
END
如果是高电平发光,可以使用下面的程序:
ORG 0000H
LJMP START
ORG 000BH
INC A
MOV P1, A
RETI
ORG 0030H
START:
MOV TMOD, #16H
MOV TH0, #255
MOV TL0, #255
SETB TR0
SETB TR1
MOV IE, #82H
LOOP:
CLR A
MOV P1, A
MOV R2, #240
WAIT:
MOV TH1, #HIGH(65536-62500)
MOV TL1, #LOW(65536-62500)
JNB TF1, $
CLR TF1
DJNZ R2, WAIT
SJMP LOOP
END
希望能解决您的问题。
E. 单片机 定时器编程
应该比较简单吧。比如用at89s52,晶振频率12m
其程序如下:
#include<stdio.h>
#include<reg51.h>
void timer0_init()
{
TMOD=0x01;//方式1
TL0=0xb0;
TH0=0x3c;
TR0=1;
ET0=1;
}
void timer0_ISR(void) interrupt 1
{
TL0=0xb0;
TH0=0x3c;//50ms中断一次
single++;
if(single==20)
{ kk++;
single=0;
}
}
void main()
{
int kk=0;//计数器
int single=0;
timer0_init();
}
显示器用个八位口连接七段led就行了。
F. plc的定时较长时怎样编程
1、定时器串联
2、时钟脉冲配合计数器
3、定时中断配合计数器
4、定时器与计数器配合
5、系统如果带有实时时钟的话,采用读取实时时钟比较。
G. 定时器编程问题
第一题:用查询时间做不到很精确,我仿真过了,每秒钟差0.3s
ORG 0000
AJMP MAIN
ORG 0100
MAIN: MOV SP,#67H ;初始化堆栈指针
CLR P1.0 ;初始化P1.0
ANL TMOD,#0FH ;定时器初始化
ORL TMOD,#10H
AGAIN: MOV R7,#20 ;计数器标志初始化
MOV TH1,#3CH ;定时初始值设置
MOV TL1,#0B0H
SETB TR1 ;启动T1
WAIT: JNB TF1,$ ;判断是否到50MS,没到等待
CLR TF1 ;到了50MS,清溢出位
CJNE R7,#01H,SP1 ;计数器标志为1时,表示到了1S
AJMP OUT1
SP1: DEC R7 ;没到1S,计数器标志自减1
AJMP WAIT
OUT1: CPL P1.0 ;到1S,输出口反向
AJMP AGAIN
第二题:用定时器中断时间精确。低电平,灯亮。左环移
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIMER0
ORG 0010H
MAIN: MOV SP,#67 ;初始化堆栈指针
MOV P1,#0FEH ;初始化P1口,低电平灯亮
MOV R7,#20 ;初始化计数器标志
ANL TMOD,#0F0H ;初始化T0控制字
ORL TMOD,#01H
MOV TH0,#3CH ;初始化T0初始值
MOV TL0,#0B0H
SETB EA ;开CPU中断
SETB ET0 ;开T0中断
SETB TR0 ;启动T0
SJMP $ ;等待
TIMER0: MOV TH0,#3CH ;对T0重新赋初值
MOV TL0,#0B0H
CJNE R7,#01H,SP1 ;是否到1S
MOV A,P1 ;到1S,P1口左移
RL A
MOV P1,A
MOV R7,#20 ;计数标志位复位
AJMP OVER
SP1: DEC R7 ;没到1S,计数标志自减1
OVER: RETI ;跳出中断
第三种,程序简单,我就不注释了。对于短程序,定时比较精确;如果程序稍微长点,就不理想了。
ORG 0100H
MAIN: MOV SP,#67
AGAIN: MOV P1,#00H
ACALL DELAY1S
MOV P1,#0FFH
ACALL DELAY1S
AJMP AGAIN
DELAY1S:MOV R7,#10 ;1S子程序
DL2: MOV R6,#200
DL3: MOV R5,#248
NOP
DJNZ R5,$
DJNZ R6,DL3
DJNZ R7,DL2
RET
这上面三个程序是我刚刚编的,有不足之处,还请提出来。
不过,你要真想学单片机,还是要自己去试着编。我帮你编,对你没有什么好处。
H. 定时器/计时器在编程中要(_)(_)(_)等三个步骤。
采纳答案,是瞎扯。
本题是填空题。怎么可能写那么多字!
1.设定方式;
2.设定初始值;
3.启动。
I. 怎么利用单片机定时器实现定时的编程过程
定时器其实就是单片机的一个内部自身时钟的计数器,每一个周期计数器加1,所以使用定时器功能时候先要给定时器付初值,就是先写TH0TL0的值(如下),写完初值后就等着定时器功能的那个计数器记满了数后也就是到了65536后就溢出了,所以一次定时的过程就是65536-初值 之间的数 所代表的时钟周期,计数满了溢出要产生中断就要写一个中断服务子程序,子程序如下void timer0() interrrupt X 中断服务子程序中还要给定时器计数器的TH TL付初值 进行下一次的计数,明白了吧。。楼上的那个没写interrupt 选择定时器工作方式。哎呀,妈呀 累死我了
void main()
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//定时器0初值,定时50ms 定时多少MS就多少*1000
EA=1;//开启总中断
ET0=1;//定时器0中断允许
TR0=1;//开启定时器0
while(1)
{
}
}
void timer0() interrrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
J. 定时器的编程包括什么的设置
如果你说的是51的话 那么就是1、设置计数模式。2、设置计数器初值。3、开计数器。4、开计数器中断。5、开总中断。