怎样用汇编语言实现AT89C51片子的1s延时?

[复制链接]
查看11 | 回复5 | 2011-5-4 17:24:06 | 显示全部楼层 |阅读模式
1s定时用循环方式没使用意义。还是用定时中断好,50ms一中断,20次为1s ;延时1SORG 00HAJMP MAINORG 0BHAJMP T0INTORG 30HMAIN:MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB EASETB ET0SETB TR0MAIN1:AJMP $T0INT:
;50ms定时中断一次MOV TH0,#3CHMOV TL0,#0B0HINC R0CJNE R0,#20,RTIMOV R0,#0CPL P1.0 ;假设P1.0装一LED,那么每1s亮或灭一次RTI:RETI
回复

使用道具 举报

千问 | 2011-5-4 17:24:06 | 显示全部楼层
直流电机控制距离好像不是很方便吧,旋转角度和长短和正反转用步进电机控制应该比较方便如果是直流电机的话,最好用个滑轮组什么的,然后在初级滑轮上测试一下转一圈国旗能爬高多少,然后在滑轮上偏心位置放置一个磁铁,用霍尔传感器感测初级滑轮转了多少圈,配合PWM控制器来给直流电机加电压控制初级滑轮转速,计算时间和滑过的距离是否对照,如果慢了就控制PWM加快电机转
回复

使用道具 举报

千问 | 2011-5-4 17:24:06 | 显示全部楼层
delay1ms:push 0
push 1
mov r1,#1loop2:mov r0,#250loop1:nop
nop
djnz r0,loop1
djnz r1,loop2
pop 1
pop 0
ret
回复

使用道具 举报

千问 | 2011-5-4 17:24:06 | 显示全部楼层
Delay: mov r7,#250Dl1: mov r6,#200Dl2: mov r5,#10 Djnz r5,$ Djnz r6,dl2 Djnz r7,dl1Ret
回复

使用道具 举报

千问 | 2011-5-4 17:24:06 | 显示全部楼层
ORG 0020H
MOV R0,#0100HDL2: MOV R1,#MTDL1: NOP
NOP
DJNZR1,DL1
DJNZR0,DL2
RET
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行