社区
汇编语言
帖子详情
延时1秒子程序
feiyan125
2008-06-06 05:33:44
在汇编语言中,晶振市12MHZ,延时1秒的程序怎么编写的啊?我用循环编写的,不会算。
...全文
5125
21
打赏
收藏
延时1秒子程序
在汇编语言中,晶振市12MHZ,延时1秒的程序怎么编写的啊?我用循环编写的,不会算。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
月光的护城河
2011-05-17
打赏
举报
回复
擦。。。。这么古老的帖子,亏我还给你算。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
月光的护城河
2011-05-17
打赏
举报
回复
延时的时间主要取决于循环体和循环次数,我用的是压栈和出栈的方法,可以查到pushf和popf指令为10个和8个时钟节拍,loop bx为3.4个时钟节拍,而时钟节拍是根据系统的晶振频率来的。。根据你的那就是每个时钟节拍需时间1/12mhz s=0.083333333333333333333333333333333333333333333333333333333333us
先延时一毫秒需次数N=1ms/(21.4*1/12MHZ)=561次
程序如下: mov bx,3E8H
shit: mov cx,231h
fuck: pushf
popf
loop shit
dec bx
jnz fuck
fuck循环1ms hlt
shit循环1000次 你懂得。。。。。。。。。。。。。。
lq334306471
2011-05-17
打赏
举报
回复
什么时代了写51还用汇编?
靠,菜鸟!
FENGREST
2011-05-17
打赏
举报
回复
用的是C51的汇编:
1s=10的6次方us 12MHZ的晶振经过12分频后1us一个机器周期,DJNZ指令是一个双机器周期的循环转移指令,所以让DJNZ执行500000次就可以延时1S了、、、程序如下:
DELAY:MOV R3,#19H ;外层循环25次
TIME: MOV R4,#64H ;中层循环100次
TIME1:MOV R5,#0C8H ;内层循环200次
TIME2:DJNZ R5,TIME2 ;延时0.4ms
DJNZ R4,TIME1 ;延时40ms
DJNZ R3,TIME ;延时1s
RET
END
guilingli
2010-11-30
打赏
举报
回复
调用int 08h中断
longdaogongcheng
2010-11-29
打赏
举报
回复
1000US=1S吗?不要误导人,应该是1000000us=1000ms=1S
汇编延迟0.1秒
应该这样写:
DELAY: MOV R1,#10
DELAY1; MOV R2,#200 ;1机器周期
DELAY2; MOV R3,#248 ;1机器周期
NOP ;1机器周期
DJNZ R3,DELAY2 ;2机器周期
DJNZ R2,DELAY1 ;2机器周期
DJNZ R1,DELAY
RET ;2机器周期
这样才正确
znxllyuan
2010-11-05
打赏
举报
回复
为什么看不懂 难道是单片机
darcys
2010-11-04
打赏
举报
回复
[Quote=引用 11 楼 stevenyinc 的回复:]
1000US=1S吗?不要误导人,应该是1000000us=1000ms=1S
汇编延迟0.1秒
DELAY1; MOV R2,#200 ;1机器周期
DELAY2; MOV R3,#248 ;1机器周期
NOP ;1机器周期
DJNZ R3,DELAY2 ;2机器周期
DJNZ R2,DELAY1 ;2机器周期
RET ;2机器周期
机器周期和=(2X24……
[/Quote]
学习了,,过两周就要用到了!!
masmaster
2010-10-27
打赏
举报
回复
利用dos的1AH号中断
liliheqing2016
2010-10-27
打赏
举报
回复
经典,就是这样算的
stevenyinc
2008-07-20
打赏
举报
回复
1000US=1S吗?不要误导人,应该是1000000us=1000ms=1S
汇编延迟0.1秒
DELAY1; MOV R2,#200 ;1机器周期
DELAY2; MOV R3,#248 ;1机器周期
NOP ;1机器周期
DJNZ R3,DELAY2 ;2机器周期
DJNZ R2,DELAY1 ;2机器周期
RET ;2机器周期
机器周期和=(2X248+1+1+2)200+1+2=100003个机器周期
12MHZ下一机器周期时间1us,总时间100003us=100.003ms=0.100003s,
这时间非常精确,
外面看来的自己写的
我自学的C51,如果有错误请指正,
希望能够找到同行互相学习,
QQ:81773291
alan001
2008-07-19
打赏
举报
回复
用定时器,因为有多核技术和预取指令技术/Cache都会影响循环精度
nikko_lo
2008-07-15
打赏
举报
回复
delay1us: ;调用时, 2uS
MOV R2,250 ;1uS
MOV R3,247 ;1uS
LOOP1:DJNZ R3,LOOP1 ;2uS*R3
LOOP2:DJNZ R2,LOOP2 ;2uS*R2
RET ;返回,2uS
计算方法:(@12MHz,8051系列)
2uS+1uS+1uS+2uS*R3+2uS*R2+2uS=1000uS=1S;
song x
2008-07-13
打赏
举报
回复
晶振频率12MHz = 12 * 1000 * 1000 Hz;
一条指令使用1个周期,所以1条指令使用的时间是1/12000000秒;
要用循环延迟1秒,需要循环12000000条指令,相当于执行了12000000条指令使用1秒钟。
希望对你有帮助。
lsg1116
2008-07-12
打赏
举报
回复
用单片机定时中断
用户 昵称
2008-06-07
打赏
举报
回复
这跟汇编没多大关系吧,你要是想从理论上精确,就用定时器。
食人族哲学家
2008-06-07
打赏
举报
回复
单片机?
用中断吧?
hswxf
2008-06-07
打赏
举报
回复
1 晶振12MHZ-->一个计数脉冲周期(一般为这个值的倍频或若干倍,看你系统结构,单片机为1~5,ARM为1/4~5.....)
2 设定计数脉冲个数=1/计算脉冲周期
3 设定初始计数寄存器值为上结论值,为0产生中断(一般如此)
使用端口控制技术(汇编)
*****************
经验法:分二步:
1 写一个程序,测试你的一个延时体程序时间颗粒,如
mov dx,3000
ok1: mov cx,10000
ok:loop ok
dec dx
loop ok1
以上的时间颗粒的程序OK,为你用一般计时器值除3000,这是一个大约的值t.但做1秒精度已经足够
2 设1/t=k(整数)
替换上面的3000值,可以精确到0.1秒(12M晶)
龙凤呈祥焱
2008-06-06
打赏
举报
回复
invoke Sleep 1000
feiyan125
2008-06-06
打赏
举报
回复
有没有汇编的高手呀!
HELP!
加载更多回复(1)
单片机
延时
子程序
延时
子程序
C语言
延时
程序:10ms
延时
子程序
(12MHZ) void delay10ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); } 或者 void delay10ms() { for(a=100;a>0;a--) for(b=225;b>0;b--); } 1s
延时
子程序
(12MHZ) void delay1s(void) { unsigned char h,i,j,k; for(h=5;h>0;h--) for(i=4;i>0;i--) for(j=116;j>0;j--) for(k=214;k>0;k--); }
微机汇编一
秒
延时
子程序
微机汇编一
秒
延时
子程序
,比较难得的资源 ,单片机上
延时
一
秒
容易,微机上比较困难
CSRF跨站请求伪造漏洞原理及代码审计
课程说明:课程为CISP-PTE子课程。 实验所需环境:vmware;windows server一台; 环境下载地址:实验环境下载地址在购买后单独发送 课程主要解决问题: 1、搞明白什么是,CSRFSRF能做什么事情? 2、CSRF和XSS有什么...
单片机C语言
延时
1MS
子程序
单片机C语言
延时
1MS
子程序
void delay(unsigned int m) { unsigned int i; unsigned int j; for(i=0;i
5 1 通用
延时
子程序
因广大网友要求,尤其学生网友自己无个人电脑,学习不方便,现将本人几年来学习单片机资料心得由浅入深,贡献给网友,希望对你学习单片机有件所帮助!本内容将以连载方式出现,有MCS-51/AVR 单片机对照学习举例,有汇编级及国内流行的各种高级语言编写的,不知网友想法如何?
选自双龙电子SL-51(原NICE-51) 系列仿真器实验程序
NICE42.HEX 实验程序说明:
配合OK-02 /03 实验器使用实验器40 芯插座用仿真电缆接在NICE-51-PCNICE-8751 NICE-8752 NICE-51-OK/OKL 仿真器CZ1 仿真插座上,B1 短路块接通P1.7 引脚上
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章