设计一个100ms的延时程序,已知用定时器T0并工作方式1。假定单片机的晶振频率为6MHZ。解:已知:时钟频率为6MHZ,则 T =12/6 MHZ = 2µs定时100
答:设单片机的晶振频率为6MHz,已知要用定时器T0的工作方式1产生100ms定时时间,可使用查询方式。由分析可知,计数初值X=15536=3CB0H。故定时器T0的初值为TH0=3CH,TL0=0B0H。程序如下:MOV TMOD, 01H ;设置定时器T0为工作方式1MOV TH0, #3CH ;给定时器T0置初值MOV TL0, #0B0HSETB TR0 ;启动定时器T0...
编写延时为100ms的指令延时子程序,晶振为6MHz,写出计算过程。DEL: MOV R7, #200 ;1个机器周期 DEL1: MOV R6, #125 ;1
TRi(5)试编写一个延时100ms的软件延时子程序(非定时器延时)。子程序名为D100ms,单片机晶振fosc=12MHz。
DELAY:MOV R3,#100 ;2 DLY0:MOV R2,#249 ;2*100 DLY1:DJNZ R2,DLY1 ;249*2*100 MOV R2,#248 ;2*100 DLY2:DJNZ R2,DLY2 ;248*2*100 DJNZ R3,DLY0 ;2*100 RET ;2 以上假设12M晶振,延时共2+(249*2+2+248*2)*100+2=100004微妙=100.004毫秒 ...
采用循环计数法实现延时,循环次数可以通过计算获得,并选择先执行后判断的循环程序。 汇编程序如下: DEL: MOV R7,#400 ;1 DEL1: MOV R6,#123 ;1 NOP ;1 DEL2: DJNZ R6,DEL2 ;2,共(2*123) DJNZ R7,DEL1 ;2,共((2*123+2+2)*400+1),即100.01ms...
题目 若晶振为6MHz,试编写延时100ms、1s的子程序。 相关知识点: 试题来源: 解析答: ORG 2000H 周期数 MOV R0, #0AH ;毫秒数→R0 1 DL2: MOV R1, #MT ;1ms延时值→R1 1 DL1: NOP 1 NOP 1 DJNZ R1,DL1 ;1ms延时循环 2 DJNZ R0,DL2 ;10ms延时循环 2 END...
设单片机的fosc=6MHz,下面程序是100ms延时的子程序。DELAY: MOV R7,#64HA0: MOV R6,#0FAHDJNZ R6,$DJNZ
51单片机在使用6MHz晶振时 1个机器周期=12/6MHz=2us 可以编写100ms延时子程序 调用子程序YS100MS 就可以延时100ms YS100MS: MOV R7,#100 L1: MOV R6,#250 DJNZ R6,$;DJNZ R7, L1 RET 延时时间=(R6*2*2us)×R7=(250*2*2us)×100=100000us=100ms 呵呵 满意 就...
直接用定时器啊, 很精确。通过软件延时优化项改变了,时间久不精确了。使用定时器1来延时 static unsigned char flag=0;//用来标记计时到100ms void InitT0(void){ TMOD &=0XF0;TMOD |= 0X01;TH0 = -(50000/256);TL0 = -(50000u%256);ET0 = 1; //中断允许 TR0 = 1; // ...