最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

1、 已知单片机的晶振为12M,请以子函数形式写出10毫秒延时程序。该怎么写啊?用C语言写。

来源:动视网 责编:小OO 时间:2024-12-12 06:22:07
文档

1、 已知单片机的晶振为12M,请以子函数形式写出10毫秒延时程序。该怎么写啊?用C语言写。

首先是10毫秒延时子程序,其代码如下: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--);}。这个程序通过嵌套的for循环来实现延时。每个循环内部包含一个计数器,当计数器递减至零时,循环结束。通过调整循环次数,可以实现精确的延时。对于更长的延时,例如1秒,可以使用以下代码。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--);}。
推荐度:
导读首先是10毫秒延时子程序,其代码如下: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--);}。这个程序通过嵌套的for循环来实现延时。每个循环内部包含一个计数器,当计数器递减至零时,循环结束。通过调整循环次数,可以实现精确的延时。对于更长的延时,例如1秒,可以使用以下代码。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--);}。


在单片机编程中,延时程序是常用的,特别是在需要控制执行时间的任务中。以12MHz晶振为例,这里提供了一些基于C语言的延时子程序。

首先是10毫秒延时子程序,其代码如下:

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--); }

这个程序通过嵌套的for循环来实现延时。每个循环内部包含一个计数器,当计数器递减至零时,循环结束。通过调整循环次数,可以实现精确的延时。

对于更长的延时,例如1秒,可以使用以下代码:

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--); }

这个程序的延时时间更长,通过增加嵌套循环的层数和内部计数器的值来实现。

此外,还可以编写200毫秒和500毫秒的延时子程序:

void delay200ms(void) { unsigned char i,j,k; for(i=5;i>0;i--) for(j=132;j>0;j--) for(k=150;k>0;k--); }

void delay500ms(void) { unsigned char i,j,k; for(i=15;i>0;i--) for(j=202;j>0;j--) for(k=81;k>0;k--); }

这些程序同样通过嵌套循环来实现延时,但内部的计数器值有所不同。

除了软件延时,还可以使用定时器来实现更精确的延时。例如,使用定时器0工作在方式1(16位计数器)下,可以实现不同的延时时间。

对于8MHz晶振,也有相应的延时程序。例如,实现0.9毫秒延时的代码如下:

void delay_0_9ms(void) { TMOD=0x01; /*定时器0工作在模式1下(16位计数器)*/ TH0=0xfd; TL0=0xa8; TR0=1; /*启动定时器*/ while(TF0==0); TR0=0; }

这些程序展示了如何根据不同的晶振频率和延时需求来编写延时子程序。

文档

1、 已知单片机的晶振为12M,请以子函数形式写出10毫秒延时程序。该怎么写啊?用C语言写。

首先是10毫秒延时子程序,其代码如下: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--);}。这个程序通过嵌套的for循环来实现延时。每个循环内部包含一个计数器,当计数器递减至零时,循环结束。通过调整循环次数,可以实现精确的延时。对于更长的延时,例如1秒,可以使用以下代码。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--);}。
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top