void delay(uint xms)
{
int i,j
for(int i=xmsi>0i--)
for(j=148j>0j--)
}
delay(1)是延时1ms,所以延时一秒就是delay(1000)
还有不懂的可以继续问
DELAY1S:MOV R2,#10
DLY1:
MOV R3,#200
DLY2:
MOV R4,#248
DJNZ R4,$
DJNZ R3,DLY2
DJNZ R2,DLY1
RET
用中断,定时器工作方式1,计数最大数为65536,那么从15536开始计数,达到65536要计50000次,6M的晶振机器周期为2微秒,那么溢出一次耗时为100000微秒,计数溢出10次即为1秒钟ORG 000BH
AJMP TIME0
ORG 30H
MAIN:
MOV 30H,#00H先把30H地址的数据清零,用做给溢出计数用
MOV TMOD,#00000001B
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
LOOP:AJMP LOOP
TIME0:PUSH ACC
PUSH PSW
INC 30H进入中断后就自增
MOV A,30H
CJNE A,#10,T_RET看计数器的溢出到了10次没,没有就跳到T_RET再继续从15536计数
T_L1:延时1秒到了,写自己的程序吧。
MOV 30H,#00H记得把溢出计数器再次清零
T_RET:MOV TH0,#3CH
MOV TL0,#0B0H
POP PSW
POP ACC
RETI
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)