;************************************************************************** ; 标题: 延时法实现1个LED隔1s闪一次(汇编) ; 作者: wentao http://blog.liuwentao.net ; http://wentao.programfan.com ; 参考: 延时子程序参考 http://blog.liuwentao.net/read.php?122 ; 日期: 2007.2.21 ; 软件: Keil A51 V8.00 ; 芯片: AT89X51 ; 说明: 实验板实测通过,这里1s并非精确值 ; 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途! ;************************************************************************** org 0000h jmp start start: clr p1.0 ;P1.0口置为低电平,灯亮 call delay500ms ;延时500毫秒 setb p1.0 ;P1.0口置为高电平,灯灭 call delay500ms ;延时500毫秒 jmp start ;循环 ;延时500毫秒子程序,12M晶振下,指令周期为12M×(1/12)=1us delay500ms: ;1us*500701=500.701ms mov r5, #4 ;1+[1+(1+2*255)*244+2*244]*4+2*4=500701 temp1: mov r6, #244 ;1+(1+2*255)*244+2*244 temp2: mov r7, #255 ;1+2*255 djnz r7, $ djnz r6, temp2 djnz r5, temp1 ret end

评论