A. 怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的
简单啊。
大致说来就是
你先开启个定时器,根据你选用的
晶振
,计算出你要用定时器定时的基准时间,
就假设是10毫秒吧。
然后给定时器的THx,TLx写入初值,开启中断,进行定时。
然后就等待中断。
在你响应中断的程序中,再次给单片机送入初值,
由于是10毫秒中断一次,因此我们设置几个“软件计数器”
比如每此中断,软甲计数器+1,
例如“软件计数器1”在中断程序中计数100次,则是10ms*100=1s
而“软件计数器2”在1的基础上继续计数100次,则是1S*100=100S
而“软件计数器3”在2的基础上继续计数36次,则是100S*36=3600S=1小时。
B. 单片机定时器的汇编语言程序编程
ORG 0000H
SJMP START
ORG 001BH
AJMP INT_TIMER1
ORG 0040H
START:
MOV TMOD,#20H
MOV TH1,#231
MOV TL1,#231
SETB ET1
SETB TR1
SETB EA
MOV P1,#00H
CLR A
SJMP $
INT_TIMER1:
JZ OUTOUT_HIGH
CLR P1.2
SJMP INC_A
OUTOUT_HIGH:
SETB P1.2
INC_A: INC A
CJNE A,#08H,SKIP_SET0
CLR A
SKIP_SET0:
RETI
END
C. 单片机定时器怎么用汇编语言编程啊
那要看你所用的单片机的时钟频率是多少。
TIME: mov tmod,#01h
mov TH0,R1
MOV TL0,R0
MOV IE,#00H
SETB TR0
L1:JBC TF0,L3
AJMP L1
L3:
RET
这是个定时的程序,里面r1和r0控制定时的长短,你学过应该会的。不会就看一下单片机的定时器的工作原理,这个是用的方式一,定时器0。具体时间得看你的晶振频率,自己算一下吧。要是时间短就多调用几次。
D. 51单片机定时 汇编语言编写
1:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-10000) ;定时10毫秒
MOV TL0,#LOW(65536-10000)
SETB TR0
SETB ET0
SETB EA
LOOP:
INC A
SJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
INC R2
RETI
END
2:
KEY BIT P1.0
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000) ;定时50毫秒
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
CLR A
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
JB KEY,T0E
MOV DPTR,#LEDTAB
PUSH ACC
MOVC A,@A+DPTR
MOV P0,A
POP ACC
INC A
MOV B,#10
DIV AB
T0E:
RETI
LEDTAB:
DB 00H,01H,02H,04H,08H,10H,20H,40H,80H,0FFH
END
E. 怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的
开启定时器作为时间基准,
然后再设置几个软件计数器,
比如,你设定定时器每隔10毫秒中断一次,
软件计数器a加1,当a数值=100时,就已经定时1秒了,
软件计数器b这时+1,当b数值=60时,就已经定时1分了,
软件计数器c这时+1,当c数值=60时,就已经定时1小时了。
就是这样累积的定时,
明白?
F. 单片机定时器应用 汇编
查询方式,同样可以做到多任务“并行”的,只是查询的方法要得当,
不要等到这个任务执行完了,才去查询下个任务是否应该执行,
当然各任务优先级别不同的时候例外。
看看下列程序,是否有帮助.
ORG 0000H
MOV 50H,#9
MOV 51H,#20
MOV TMOD,#11H
MOV TH1,#3CH
MOV TL1,#0B0H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETB TR1
MOV R1,#0FEH
MOV R2,#0FEH
L1:
JBC TF1,L2
JBC TF0,L3
AJMP L1
L2:
MOV TH1,#3CH
MOV TL1,#0B0H
DJNZ 50H,L1
MOV 50H,#9
MOV A,R1
RL A
MOV P2,A
MOV R1,A
AJMP L1
L3:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ 51H, L1
MOV 51H, #20
MOV A,R2
RR A
MOV P0,A
MOV R2,A
AJMP L1
END
上述程序,已经用PROTEUS仿真实验成功,两个任务,基本上是互不干扰。
G. 你好,关于这个问题“怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的”我想要具体程序~
开启定时器作为时间基准,
然后再设置几个软件计数器,
比如,你设定定时器每隔10毫秒中断一次,
软件计数器A加1,当A数值=100时,就已经定时1秒了,
软件计数器B这时+1,当B数值=60时,就已经定时1分了,
软件计数器C这时+1,当C数值=60时,就已经定时1小时了。
就是这样累积的定时,
明白?
H. 51单片机定时器汇编程序
试试下列程序:
;
ORG 0000H
SJMP BEGIN
ORG 000BH
MOV TH0, #3CH ;定时100ms
MOV TL0, #0B0H
DJNZ R7, E_T0
MOV R7, #5
SETB F0 ;每500ms置一
E_T0:RETI
;------------------------------------
BEGIN:
MOV TMOD, #01H ;T0定时方式1
MOV TH0, #3CH ;50ms@12MHz
MOV TL0, #0B0H ;100ms@6MHz
MOV R7, #5
SETB TR0
SETB ET0
SETB EA
;------------------------
M_LOOP:
MOV A, #255
L1:
MOV P1, A
JNB F0, $
CLR F0
CLR C
RLC A
JC L1
;------------------------
L2:
MOV P1, A
JNB F0, $
CLR F0
SETB C
RRC A
JNC L2
;------------------------
MOV R2, #8 ;全亮全灭8次
L3:
MOV P1, #0 ;全亮
JNB F0, $
CLR F0
MOV P1, #255;全灭
JNB F0, $
CLR F0
DJNZ R2, L3
;------------------------
JMP M_LOOP
;------------------------------------
END
本程序可实现:
L1-L8依次点亮----L1-L8依次熄灭----8个灯全亮全灭8次~循环 各时序间隔0.5s。
I. 51单片机汇编语言定时器的使用(中断方式)
(1)
COUNT_INTEQU30H
LEDVALUEEQU31H
ORG0000H
LJMPSTART
ORG001BH
LJMPTimer1Interrupt
START:
MOVSP,#60H
MOVCOUNT_INT,#0
MOVLEDVALUE,#01H
LCALLInitTimer1
LOOP:
MOVA,LEDVALUE
MOVP2,A
LJMPLOOP
InitTimer1:
MOVTMOD,#10H;定时器T1为工作方式1,产生50ms定时
MOVTH1,#3CH
MOVTL1,#0B0H
SETBEA
SETBET1
SETBTR1
RET
Timer1Interrupt:
PUSHDPH
PUSHDPL
PUSHACC
MOVTH1,#3CH
MOVTL1,#0B0H
;========================
INCCOUNT_INT
MOVA,COUNT_INT;每50ms加1,
CJNEA,#2,Timer1Interrupt_EXIT;100ms
MOVCOUNT_INT,#0
MOVA,LEDVALUE
RLA
MOVLEDVALUE,A
;========================
Timer1Interrupt_EXIT:
POPACC
POPDPL
POPDPH
RETI
END
(2)
COUNT_INT_LEQU30H
COUNT_INT_HEQU31H
LEDVALUEEQU32H
ORG0000H
LJMPSTART
ORG001BH
LJMPTimer1Interrupt
START:
MOVSP,#60H
MOVCOUNT_INT_L,#0
MOVCOUNT_INT_H,#0
MOVLEDVALUE,#01H
LCALLInitTimer1
LOOP:
MOVA,LEDVALUE
MOVP2,A
LJMPLOOP
InitTimer1:
MOVTMOD,#20H;定时器T1为工作方式2,产生250us定时
MOVTH1,#00H
MOVTL1,#06H
SETBEA
SETBET1
SETBTR1
RET
Timer1Interrupt:
PUSHDPH
PUSHDPL
PUSHACC
MOVTH1,#00H
MOVTL1,#06H
;========================
INCCOUNT_INT_L
MOVA,COUNT_INT_L;每250us加1,
CJNEA,#40,Timer1Interrupt_EXIT;250US*40=10ms
MOVCOUNT_INT_L,#0
INCCOUNT_INT_H
MOVA,COUNT_INT_H;每10Ms加1,
CJNEA,#10,Timer1Interrupt_EXIT;10ms*10=100MS
MOVCOUNT_INT_H,#0
MOVA,LEDVALUE
RLA
MOVLEDVALUE,A
;========================
Timer1Interrupt_EXIT:
POPACC
POPDPL
POPDPH
RETI
END
J. 51单片机定时器的汇编语言程序编程,
LED BIT P1.0 ;定义LED的引脚
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H ;定时器0工作模式1
MOV TH0,#HIGH(65536-50000) ;初值,50毫秒中断一次
MOV TL0,#LOW(65536-50000)
SETB TR0 ;启动定时器
SETB ET0 ;启动定时器中断
SETB EA ;开总中断
MOV R2,#40 ;中断计数初始值
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E ;R2减到0重新赋值,否则退出
MOV R2,#40
CPL LED ;LED亮灭转换
T0E:
RETI
END