单片机问题急急急!!~~~

2024-08-20 00:13:41
推荐回答(5个)
回答1:

楼主不是说得很明白,据我依你的想法,给你点建议:
以下为为定时器装初值:
TH0=(63266-2000)/256; //延时2ms
TL0=(咐猜63266-2000)%256; //延时2ms
下睁锋面为C语言延时函数:
void mDelay(unsigned int Delay)
{ unsigned int i;
for(;Delay>0;Delay--)
{ for(i=0;i<124;i++)
{;}
}
}
这是一个延时为ms的C语言程序,只要悉简晌给Delay=2,便可延时2ms。

回答2:

ORG 00H
; MOV SP,#80H
JMP _INIT_SYS

ORG 03H
LJMP _INT_INT0

ORG 0BH
CPL P2.0
CLR TF0
MOV TH0,#248
MOV TL0,#214
;SETB TR0
RETI

_INIT_SYS:
MOV SP,#80H

MOV IE,#083H
;SETB ET0
MOV TMOD,#01H
MOV TH0,#0FFH; 248
MOV TL0,#0F0H ;214
SETB IE0 ;负跳变腔滚触发

SETB TR0
AJMP $

_INT_INT0:
CLR TR0

CLR IT0

MOV A,#252
SUBB A,TH0
JZ _CAP_L
JNC _MORE_1MS
_LESS_1MS:
SETB P1.0 ;少于1ms
SETB TR0
RETI
_MORE_1MS:
CLR P1.0 ;多于漏伍1ms
SETB TR0
RETI
_EQU_1MS: ;等于伍搜余1ms
SETB TR0
RETI

_CAP_L:
MOV A,#232
SUBB A,TL0
JZ _EQU_1MS
JNC _MORE_1MS
JMP _LESS_1MS
;RETI

END

回答3:

赋初值为 2ms

外中断中加入:

TR0=0; //关定时器
读TH0和TL0的值,再计算出顷旁渗来,再和1MS比较,就行了雀脊。启茄

回答4:

那就只有用比定滚蠢时中断优先级正隐低的外部中断1了,用定时中断0,那就可以执举备厅行外部中断的时候继续执行定时中断了

回答5:

你的描缺虚述很不清晰,描缓携述清晰点,让大家明白你提问的意图.你说的是外部触发引起伏哪燃中断然后延时2mS后跳出中断?至于你说的之后与1mS秒比较是什么意思?