若晶振为12MHZ,试编写一个延时5MS的子程序
2个回答
展开全部
D5MS:
MOV R7,#25
MOV R6,#100
DJNZ R6,$
DJNZ R7,$-4
RET
void delay_ms(unsigned int ms )
{
unsigned char i;
while(ms--)
for(i=0;i<123,i++); //这是1ms的子函数
}
delay_ms(5) ; // 就是5ms延时了
MOV R7,#25
MOV R6,#100
DJNZ R6,$
DJNZ R7,$-4
RET
void delay_ms(unsigned int ms )
{
unsigned char i;
while(ms--)
for(i=0;i<123,i++); //这是1ms的子函数
}
delay_ms(5) ; // 就是5ms延时了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要C的还是?
void DELAY_MS (unsigned int a)
{
unsigned char i;
while( a--){for(i = 0; i < 120; i++);}
}
void DELAY_MS (unsigned int a)
{
unsigned char i;
while( a--){for(i = 0; i < 120; i++);}
}
追问
单片机的
追答
上面是C,下面再来个汇编的:
DELAY5MS:MOV R7,#10
D1: MOV R6,#250
DJNZ R6,$;这一句2个机器周期也就是2US
DJNZ R7,D1
RET
共延时:2*250*10=5000us=5ms
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询