找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2166|回复: 11
收起左侧

请问这个C语言程序里为什么bb%38==0是1秒钟?

[复制链接]
ID:864629 发表于 2021-4-15 19:39 | 显示全部楼层 |阅读模式
10黑币
void  main(  void  )
{  
while(1)
        {
   bb++;
            if(ks==1)
                          {         
                               if(bb%38==0) //1秒钟
                                    {
                                                  miao++;
                                                  if(miao>=60)
                                                  {
                                                            miao=0;
                                                          fen++;
                                                          if(fen>=100)fen=0;
                                                          if((fen==shijian)&&dang>=1)
                                                          {
                                                                          yuyin();
                                                                        for(i=0;i<5;i++)
                                                                        {
                                                                                led=0;
                                                                                delay_ms(50);
                                                                                led=1;
                                                                                delay_ms(50);
                                                                        }
                                                                        led=1;
                                                                        fen=0;
                                                                        miao=0;
                                                                        ks=0;
                                                          }
                                                  }        

                                         }

最佳答案

查看完整内容

是不是这样理解,单片机程序跑一圈所用的时间来定时的,这个时间虽然不太准,但是不占用定时器,在要求不高的地方实际上也不错
回复

使用道具 举报

ID:47541 发表于 2021-4-15 19:39 | 显示全部楼层
是不是这样理解,单片机程序跑一圈所用的时间来定时的,这个时间虽然不太准,但是不占用定时器,在要求不高的地方实际上也不错
回复

使用道具 举报

ID:213173 发表于 2021-4-16 07:29 | 显示全部楼层
如果主循环周期=0.0263157894736842秒,if(bb%38==0)bb能整除38即1秒钟。不过这段代码不严谨,明显出于某习作。
回复

使用道具 举报

ID:883031 发表于 2021-4-16 16:11 | 显示全部楼层
和单片机的时钟频率以及运算速度有关系。
回复

使用道具 举报

ID:864629 发表于 2021-4-16 22:43 | 显示全部楼层
wulin 发表于 2021-4-16 07:29
如果主循环周期=0.0263157894736842秒,if(bb%38==0)bb能整除38即1秒钟。不过这段代码不严谨,明显出于某习 ...

请问一下什么叫主循环周期?是说0.0263157894736842秒晶振就震荡一次,然后bb就+1吗?
这个主循环周期是测试出来的吗?
回复

使用道具 举报

ID:864629 发表于 2021-4-16 22:44 | 显示全部楼层
cn_zhx 发表于 2021-4-16 16:11
和单片机的时钟频率以及运算速度有关系。

可以再说详细一点么,这个时钟频率是由外部晶振决定的吗?谢谢
回复

使用道具 举报

ID:864629 发表于 2021-4-17 11:43 | 显示全部楼层
aygc 发表于 2021-4-17 10:57
是不是这样理解,单片机程序跑一圈所用的时间来定时的,这个时间虽然不太准,但是不占用定时器,在要求不高 ...

应该是,不过想再请问一下这个单片机程序跑一圈的时间是固定的,还是自己设定的?是由外部晶振电路决定的么?是不是要通过测试测出单片机程序跑一圈的时间?是不是单片机程序跑一圈,bb就自加1?
回复

使用道具 举报

ID:906759 发表于 2021-4-17 11:43 | 显示全部楼层
跟你的指令周期和执行的代码量有关系,计时的话可以开个定时器来实现
回复

使用道具 举报

ID:151846 发表于 2021-4-17 11:44 | 显示全部楼层
if(bb%38==0)意思就是bb=0或者38或者76或者……反正能被3整除的数这个如果就成立。
回复

使用道具 举报

ID:47541 发表于 2021-4-19 11:42 | 显示全部楼层
409406709 发表于 2021-4-17 11:43
应该是,不过想再请问一下这个单片机程序跑一圈的时间是固定的,还是自己设定的?是由外部晶振电路决定的 ...

我是这样理解的,单片机程序要正常持续工作,肯定在循环执行指令代码,不会停下来,他这个定时方式只能用在对时间要求不高的地方,比如指示灯闪频等,如果单片机相应外部中断等预料外的操作,整个单片机跑一圈的时间肯定是有差异的。
回复

使用道具 举报

ID:47541 发表于 2021-4-19 11:52 | 显示全部楼层
a4732710 发表于 2021-4-17 11:44
if(bb%38==0)意思就是bb=0或者38或者76或者……反正能被3整除的数这个如果就成立。

请教一下他这个值为什么这样确定的?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表