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、開總中斷。