51单片机延时一秒的程序
单片机1S延时程序
晶振是12M,对于MC-51系统的单片机来说,一个机器周期是1us。………MOV R0,#100 LOOP1: MOV R1,#100 LOOP2: MOV R2,#48 DJNZ R2,NOP DJNZ R1,LOOP2 DJNZ R0,LOOP1 ………[(2*48+4)*100+3]*100+1=1000301(个机器周期)即1.000301秒定时。
单片机1秒钟定时汇编语言怎么编?
可以有两种方法,设晶振为12M,则 第一种方法:用延时的方法实现 DELAY: MOV R3,#10;延时子程序,延时1秒 D1: MOV R4,#200 D2: MOV R5,#250 D3: DJNZ R5,D3 DJNZ R4,D2 DJNZ R3,D1 RET END 第二种方法:用定时器的方法实现 ———MOV R1,#20 ———DLY: MOV T...
怎样对单片机编程实现精确1s的延时。晶振12M。感谢。。。
首先要选择频率准确度高的晶体,目前普通的晶体其频率准确度在10E-3和10E-4左右,好一些的可以达到10E-5。其次使用单片机的定时器进行计时操作,因为定时器的输入是晶体频率的十二分之一,因此12M的晶体输入到单片机内部定时器时是1M的频率,也就是1uS的延时时间,单片机定时器最大为16位,可延时65536...
单片机延迟1秒的问题 刚学单片机看不懂求解释
你这个参数初值设置的不对 DJNZ R0,$ :是R0内容减一,非0跳转的意思;$是转移的目的地。目前拟延时的大概时间是:1个时钟周期大约是1微秒(选择12M晶振)R0*R1*R2=#0B2H=179*1*10=1790微秒=0.00179秒 如果想延时1秒,就必须设置R0*R1*R2=1,000,000 所以设置R0=#64H(100),R1=#64H...
单片机C语言编程中,编一个延时约1s的语句
每一遍,如果是1us,才能是延时约1s。但是,晶振是12MHz,一条汇编的指令就至少是1us,C语言的语句,就要更多。在编写延时函数之前,首先确认一下系统对晶振的分频系数,从而确定每个单周期指令执行所需的时间,一般的单片机都将指令执行周期设置为1us,这样就可以写一个比较接近1秒的延时函数了。
哪位单片机高手详细的告诉我一下:单片机中的延时程序的延时时间怎样计算...
如果FOSC=12MHZ单片机,那么一个机器周期为12\/12M=1us 如果是汇编语言的话:L1:MOV R7,#100 L2:MOV R6,#100 L3:MOV R5,#50 DJNZ R5,$;此句两个机器周期也就是2T DJNZ R6,L3 DJNZ R7,L2 RET 2T*50*100*100=1,000,000us(共一秒),这是粗略算法,有误差,但不是太大。
51单片机定时器方式1,晶振33hz,延时1秒,怎么用c语言编程
\/\/33MHz 一个定时周期延时50ms include <reg51.h> void InitTimer0(void){ TMOD = 0x01;TH0 = 0x0CA;TL0 = 0x4A;EA = 1;ET0 = 1;TR0 = 1;} void main(void){ InitTimer0();} void Timer0Interrupt(void) interrupt 1 { TH0 = 0x0CA;TL0 = 0x4A;\/\/add your code ...
任意型号单片机,延迟1或2秒怎么写?12M,24M怎么算?for后面怎么写。要过程...
void delay( int ms ){ while( ms-- ){ int i = 延时常数;do { _nop_(); } while( --i );} } 要延时一秒钟,就是1000ms,delay( 1000 );几个注意事项,1、延时程序没有关中断,所以中断程序会影响定时精度。2、延时常数可以用软仿真程序实验确定,需要根据不同的单片机、晶振频率调整...
单片机 延迟一秒程序怎么写?延迟2秒?我是初学者,想请教一下。
可以根据单片机的时钟和指令执行时间延时 void delay (int m){ while(m--) {_NOP();} } 也可以用单片机的定时器延时,设置timer的时钟源,设置溢出计数,然后再中断里处理。如果延迟2秒,最好用定时中断。
单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12M...
jmp $-1 (退回一步) clr tmr0c.4 (关闭记数) clr intc0.6 (清除中断标志) ret 参考资料: HT46R65\/HT46c65 a3185113 | 发布于2012-04-23 举报| 评论 0 0 为您推荐: 汇编语言$ 汇编语言延时一秒 汇编语言TIME 汇编语言延时1s程序 单片机$ 单片机跑马灯延时公式 汇编语言中断程序 汇编...
新建县塞夫回答: DEL1S:MOV R7,#10 D1: MOV R6,#200 D2: MOV R5,#250 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET 说明:1、如果不使用R5、R6、R7可以用别的单元替换,比如换成30H、31H、32H等等 2、这个程序是12M时钟,如果时钟不同,要修改数值.如6M时钟,要把MOV R7,#10 修改成:MOV R7,#5
保香17597057634问: 51单片机按键延时1秒转换led状态,求大神写下程序 - ?
新建县塞夫回答: 0 01 11 00 1 是这样的四种状态吗? 这样很简单的,, 主要还是检测按键, 按键按下 你把一个变量+1, 比如 if(Key == 0) { delay(); //延时10ms,延时函数 自己写吧 if(Key == 0) { num++; if(num >= 4) num = 0; while(!Key); } } 然后根据num ...
保香17597057634问: 求51单片机 延时1秒钟的子程序(没什么要求) - ?
新建县塞夫回答: 如果是11.0592MHz的晶振,那么程序是: void delay(uint xms) {int i,j; for(int i=xms;i>0;i--)for(j=148;j>0;j--); } delay(1)是延时1ms,所以延时一秒就是delay(1000); 还有不懂的可以继续问
保香17597057634问: AT89C51单片机延时1秒程序怎么写??? - ?
新建县塞夫回答: void DELAY(int z)//延时zms {int x,y;for(x = z;x > 0;x--)for(y = 110;y > 0;y--); }DELAY(1000); 就可以延时1S 但是有很小的误差 精确的只能用定时器了
保香17597057634问: 51单片机,有8个流水灯,每个之间延迟1秒,这个延迟用c程序编写怎么写 - ?
新建县塞夫回答: 要看你的时钟周期,如果是12Mhz的话,每个时钟周期MC=6*2/12 M =1us,所以延迟是让机器计数1000000下,上面那个公式你自己套用24Mhz的就是2000000下.c语言的循环次数你自己算,每条指令一个周期,所以楼上的程序在12Mhz下是1s延迟.
保香17597057634问: 51单片机延时1秒子程序?
新建县塞夫回答: 6M/12机器周期,2us/机器周期,1秒须50000个机器周期 DELAY: MOV R3,#10 M1: MOV R4,#200 M2: MOV R5,#250 M3: DJNZ R5,M3 DJNZ R4,M2 DJNZ R3,M1
保香17597057634问: 51延时1S.程序..汇编 - ?
新建县塞夫回答: DELAY:MOV R4,#25 ;延时子程序,12M晶振延时1.001秒 L3: MOV R2 ,#200 L1: MOV R3 ,#248 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET
保香17597057634问: 89C51单片机1S的延时程序? - ?
新建县塞夫回答: void delayms() // 延时子程序 对应12M晶振 {unsigned int ms=1000;while(ms--) //每一次循环1ms{for(i = 0; i < 120; i++);} }
保香17597057634问: 求一个51单片机1S的延时程序,汇编的 - ?
新建县塞夫回答: 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
保香17597057634问: 51单片机中的汇编代码延时有点搞不清楚,请详细解释下子这个延时子程序,谢谢啦~ - ?
新建县塞夫回答: 程序在执行指令的时候是要占用时间的,DJNZ为双字节指令,晶振为12MHZ的单片机执行这一条指令为24个震荡周期,也就是2微秒,通过不断让它循环来达到延时的目的.