51单片机定时器1s延时
@慕坚6796:AT89C51单片机延时1秒程序怎么写??? -
梁虹14766163616…… void DELAY(int z)//延时zms { int x,y; for(x = z;x > 0;x--) for(y = 110;y > 0;y--); }DELAY(1000); 就可以延时1S 但是有很小的误差 精确的只能用定时器了
@慕坚6796:求一个51单片机1S的延时程序,汇编的 -
梁虹14766163616…… DELAY: MOV R2,#200 ;1 DLY1: MOV R3,#200 ;1*100 DLY2: MOV R4,#248 ;1*200*100 DJNZ R4,$ ;248*2*200*100 DJNZ R3,DLY2 ;200*100*2 DJNZ R2,DLY1 ;200*2 DJNZ R7,DELAY ;调用是给R7赋值秒数 RET
@慕坚6796:89C51单片机1S的延时程序? -
梁虹14766163616…… void delayms() // 延时子程序 对应12M晶振 { unsigned int ms=1000; while(ms--) //每一次循环1ms { for(i = 0; i < 120; i++); } }
@慕坚6796:MCS - 51单片机的编程题:已知系统晶振频率为12MHZ,采用定时器T0的方式1,请编程实现1s的延时. -
梁虹14766163616…… void timer0() interrupt 1 { uchar count; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; count++; if(count == 20) { count = 0; sec++; if(sec == 100) { sec = 0; } } }
@慕坚6796:单片机51软件延时1s 晶振6M的编程 -
梁虹14766163616…… 通过调用这个子程序就可以实现 DEL1S: MOV R1,#10 DEL1: MOV R2,#100 DEL2: MOV R3,#250 DEL3: DJNZ R3,DEL3 ;2*2*250*100*10=1000000us DJNZ R2,DEL2 DJNZ R1,DEL1 RET 没有做具体计算,要准确的定时1s的话可以稍微改动一下R1R2R3的值.6M晶振则机器周期为2us,一条指令执行为2个机器周期,由此得出其延时时间 最好的方式是使用定时器中断来做延时,更精确
@慕坚6796:怎么把单片机的数字电子钟延时1s -
梁虹14766163616…… 那个delay函数里的参数不对吧,怎么是0呢 c<=120估计一个循环是1ms 那么a应该赋值1000吧 另外要做一个比较精确的数字钟的话用delay还是不行的 等你学到了就知道了
@慕坚6796:怎么把单片机的数字电子钟延时1s
梁虹14766163616…… 大哥,一般都不像你这样写的呀! void delay10ms(int x) { int i,j; // 声明变量 for (i=1;i<x;i++) // 执行x次,延迟X*10ms for (j=1;j<1200;j++);// 执行120次,延迟10ms } // delay1ms()函数结束 如果你的延时精度要求不高,调用delay10ms(100)约1s就可以了呀.如果你的延时要求精度高的话,用51内部的定时器.
@慕坚6796:在单片机AT89C51芯片中,设计一个一秒的延时程序,有多少种方法,具体如何? -
梁虹14766163616…… 比较常用的有两种 一种比较简单的就是粗略的软件延时; 如: void delay_1s(void) { unsigned char i,j; for(i=0;i<128;i++) for(j=0;j<254;j++); } 这种通过调整i和j的最终值来确定延时时间,没有办法精确计算的. 另一种,做比较精确的延时,...
@慕坚6796:关于51单片机1s延时的问题 -
梁虹14766163616…… 延时里面的前3个for循环后面的分号去掉 有分号只会自己循环不会执行for下面的程序的 顺便发个12MHz晶振1S的延时给你参考一下 void delay1s(void) { unsigned char a,b,c; for(c=46;c>0;c--) for(b=152;b>0;b--) for(a=70;a>0;a--); }
@慕坚6796:用单片机8051如何做一个定时器的一秒延时 -
梁虹14766163616…… MOV 30H,#一个数 MOV 31H,#一个数 LOOP:DJNZ 30H,LOOP1 LOOP1:DJNZ 31H,LOOP 这样就行了吧, 具体的数还得通过你使用的晶振算出来的
梁虹14766163616…… void DELAY(int z)//延时zms { int x,y; for(x = z;x > 0;x--) for(y = 110;y > 0;y--); }DELAY(1000); 就可以延时1S 但是有很小的误差 精确的只能用定时器了
@慕坚6796:求一个51单片机1S的延时程序,汇编的 -
梁虹14766163616…… DELAY: MOV R2,#200 ;1 DLY1: MOV R3,#200 ;1*100 DLY2: MOV R4,#248 ;1*200*100 DJNZ R4,$ ;248*2*200*100 DJNZ R3,DLY2 ;200*100*2 DJNZ R2,DLY1 ;200*2 DJNZ R7,DELAY ;调用是给R7赋值秒数 RET
@慕坚6796:89C51单片机1S的延时程序? -
梁虹14766163616…… void delayms() // 延时子程序 对应12M晶振 { unsigned int ms=1000; while(ms--) //每一次循环1ms { for(i = 0; i < 120; i++); } }
@慕坚6796:MCS - 51单片机的编程题:已知系统晶振频率为12MHZ,采用定时器T0的方式1,请编程实现1s的延时. -
梁虹14766163616…… void timer0() interrupt 1 { uchar count; TH0 = (65536-50000)/256; TL0 = (65536-50000)%256; count++; if(count == 20) { count = 0; sec++; if(sec == 100) { sec = 0; } } }
@慕坚6796:单片机51软件延时1s 晶振6M的编程 -
梁虹14766163616…… 通过调用这个子程序就可以实现 DEL1S: MOV R1,#10 DEL1: MOV R2,#100 DEL2: MOV R3,#250 DEL3: DJNZ R3,DEL3 ;2*2*250*100*10=1000000us DJNZ R2,DEL2 DJNZ R1,DEL1 RET 没有做具体计算,要准确的定时1s的话可以稍微改动一下R1R2R3的值.6M晶振则机器周期为2us,一条指令执行为2个机器周期,由此得出其延时时间 最好的方式是使用定时器中断来做延时,更精确
@慕坚6796:怎么把单片机的数字电子钟延时1s -
梁虹14766163616…… 那个delay函数里的参数不对吧,怎么是0呢 c<=120估计一个循环是1ms 那么a应该赋值1000吧 另外要做一个比较精确的数字钟的话用delay还是不行的 等你学到了就知道了
@慕坚6796:怎么把单片机的数字电子钟延时1s
梁虹14766163616…… 大哥,一般都不像你这样写的呀! void delay10ms(int x) { int i,j; // 声明变量 for (i=1;i<x;i++) // 执行x次,延迟X*10ms for (j=1;j<1200;j++);// 执行120次,延迟10ms } // delay1ms()函数结束 如果你的延时精度要求不高,调用delay10ms(100)约1s就可以了呀.如果你的延时要求精度高的话,用51内部的定时器.
@慕坚6796:在单片机AT89C51芯片中,设计一个一秒的延时程序,有多少种方法,具体如何? -
梁虹14766163616…… 比较常用的有两种 一种比较简单的就是粗略的软件延时; 如: void delay_1s(void) { unsigned char i,j; for(i=0;i<128;i++) for(j=0;j<254;j++); } 这种通过调整i和j的最终值来确定延时时间,没有办法精确计算的. 另一种,做比较精确的延时,...
@慕坚6796:关于51单片机1s延时的问题 -
梁虹14766163616…… 延时里面的前3个for循环后面的分号去掉 有分号只会自己循环不会执行for下面的程序的 顺便发个12MHz晶振1S的延时给你参考一下 void delay1s(void) { unsigned char a,b,c; for(c=46;c>0;c--) for(b=152;b>0;b--) for(a=70;a>0;a--); }
@慕坚6796:用单片机8051如何做一个定时器的一秒延时 -
梁虹14766163616…… MOV 30H,#一个数 MOV 31H,#一个数 LOOP:DJNZ 30H,LOOP1 LOOP1:DJNZ 31H,LOOP 这样就行了吧, 具体的数还得通过你使用的晶振算出来的