ZKX's LAB

求一个51单片机延时1秒的程序,用汇编!! 51单片机汇编语言延时程序原理

2020-10-07知识4

用汇编语言编写51单片机程序,让LED灯亮一秒灭一秒,无限循环,时钟是6 ORG 0000HLJMP MAINORG 000BHLJMP T0ISRORG 0030HMAIN:MOV TMOD,#01HMOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0SETB ET0SETB EACLR P1.0MOV R2,#10SJMP$T0ISR:CLR TR0MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0DJNZ R2,T0ECPL P1.0MOV R2,#10T0E:RETIEND

求一个51单片机延时1秒的程序,用汇编!! 51单片机汇编语言延时程序原理

求一个51单片机1S的延时程序,汇编的 DELAY:MOV R2,#200;1DLY1:MOV R3,#200;1*100DLY2:MOV R4,#248;1*200*100DJNZ R4,$;248*2*200*100DJNZ R3,DLY2;200*100*2DJNZ R2,DLY1;200*2DJNZ R7,DELAY;调用是给R7赋值秒数RET

求一个51单片机延时1秒的程序,用汇编!! 51单片机汇编语言延时程序原理

51单片机,求用汇编语言编写延时1小时的子程序,要精确到秒级别 这个可以做到,如果晶振是12M的话,一下方法可以实现延时1小时,精确度在秒级别。DELAY1H:MOV R7,#180;1/1000000DLY1H:LCALL DELAY_20S;180*19.960603s+2*180DJNZ R7,DLY1H;2*180/1000000RET 2/1000000共延时时间:3592.9s误差为7.1秒,如果再精确的话,再加一点延时就可以了。DELAY_20S:;Total=19.960603sMOV R2,#;1DLY1:MOV R3,#200;1*200DLY2:MOV R4,#248;1*200*200DJNZ R4,$;2*248*200*200DJNZ R3,DLY2;2*200*200DJNZ R2,DLY1;2*200RET;2

求一个51单片机延时1秒的程序,用汇编!! 51单片机汇编语言延时程序原理

51单片机,求用汇编语言编写延时1小时的子程序,要精确到秒级别 延时一小时,这么长,应该要用定时器,不能用循环的方式。ORG 00H AJMP MAIN ORG 0BH AJMP T0INT0 ORG 30H 。

51单片机C语言程序中延时函数delay的原理是什么? 原理:只是执行一些所谓的“无实际意义的指令”,如缩放或执行一个int自加,简单地说,就像高中数学中的“乘法原理”一样,很容易迅速增加上面提到的“无意义指令”的数量关于大小的值:如果是在C语言中,该值不仅与水晶振动、单片机本身的速度,但也与C的编译器,所以,虽然这个值可以精确计算,但大多数情况下,程序员是经验值。当然,如果你在汇编中编程,情况就不同了,因为每条指令使用一定数量的机器周期,你当然可以根据所有指令使用的总时间来计算特定延迟的总时间。扩展资料:定义延迟XMS毫秒的延迟函数Voiddelay(unsignedintXMS)/XMS表示需要延迟的毫秒数{无符号intx,y;For(x=XMS;X0;X-)For(y=110;Y”0;Y-);}使用:VoidDelay10us(ucharMs){Uchar数据我;女士“0;Ms)对于(I=26)我>;0;我-);}I=[(延迟值-1.75)*12/ms-15]/4

求一个51单片机延时1秒的程序,用汇编!! DEL1S:MOV R7,#10D1:MOV R6,#200D2:MOV R5,#250DJNZ R5,$DJNZ R6,D2DJNZ R7,D1RET说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等2、这个程序是12M时钟,如果时钟不同,要修改数值。如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5

51单片机用汇编语言设计1S延时子程序,晶振为12MHz。 (麻烦附上详细计算过程以及详细说明, 如果单纯延时,可以用实验的办法,在keilc51里面仿真void Delay1S(char n){char i,j;n=n*4;for;n;n-){for(i=6;i;i+){for(j=7;j;j+)/一个循环e68a84e8a2ad7a686964616f31333335306265约为1mS}}}看编译后的汇编:C:0x0805 7D01 MOV R5,#0x06;j=1,1时钟C:0x0807 0D INC R5;j+,1时钟C:0x0808 ED MOV A,R5;A=R5,1时钟C:0x0809 70FC JNZ C:0807;A=0?2时钟循环共249次,一个循环共需4个时钟周期,加上第一个赋值语句1周期。共997uS,加上外层循环,一次约1mS,如果要精确的延时建议采用中断:include\"reg51.htimer initvoid initTimer(void){TMOD=0x2;TH0=0x6;TL0=0x6;}int T250uS;char T_mark;timer0/counter0 interruptvoid timer0(void)interrupt 1{add your code here.T250uS+;T_mark=0;}void Delay1S(char n){for;n;n-)for(T250uS=0;T250uS;{T_mark=1;while(T_mark);}}the main funvoid main(void){initTimer();TR0=1;ET0=1;EA=1;while(1){Delay1S(1);}}

#单片机

随机阅读

qrcode
访问手机版