51單片機延時程序 求一個51單片機延時1秒的程序,用匯編?
求一個51單片機延時1秒的程序,用匯編?Del1s:mov R7,?10d1:mov R6,D2:mov R5,?250 djnz R5,$djnz R6,D2 djnz R7,D1 RET描述:1。
求一個51單片機延時1秒的程序,用匯編?
Del1s:mov R7,?10d1:mov R6,D2:mov R5,?250 djnz R5,$djnz R6,D2 djnz R7,D1 RET描述:1。如果不使用R5、R6、R7,則可以用其他裝置代替,如30h、31h、32H等。本程序為12m時鐘,如果時鐘不同,應(yīng)修改數(shù)值。如果FOSC=12Mhz,則機器周期為12/12m=1US。如果是匯編語言:L1:movr7,#100 L2:movr6,#100 L3:movr5,#50 djnzr5,$兩個機器周期是2T djnzr6,L3 djnzr7,L2 ret 2T*50*100*100=1000000us(總共1秒)。這是一個有誤差的粗略算法,但不會太大。
哪位單片機高手詳細(xì)的告訴我一下:單片機中的延時程序的延時時間怎樣計算的?比如,延遲1S,2S等等?
Delay1000ms:(ht46r65微控制器)(注意不要打開定時器中斷權(quán)限位)mov a,10000111b(設(shè)置頻率和計數(shù)模式)(遞增計數(shù)或遞減計數(shù))mov tmr0c,a(tmr0c計數(shù)器的控制寄存器)mov a,low(65536-31250)(設(shè)置頻率為1s up 31250),所以它是delay1s mov tmr0l,a mov a,高(65536-31250)mov tmr0h,設(shè)置tmr0c.4 SNZ intc0.6 JMP$-1 CLR tmr0c.4 CLR intc0.6 ret