沈辰栎 2022-06-07 12:56 采纳率: 100%
浏览 28
已结题

C51单片机循环语句不懂求解释

请问下面这些代码是什么意思?希望有每行的解释!谢谢!
#include"reg51.h"
#include<intrins.h>
unsigned int ms=0;
unsigned char v=0xfe;
void main(void)
{
TMOD=0x01;
TL0=0x66;
TH0=0xfc;
ET0=1;
EA=1;
TR0=1;
while(1){
}
}
void isr_timer_0(void) interrupt 1
{
TL0=0x66;
TH0=0xfc;
ms=ms+1;
if(ms==1000)
{
ms=0;
P1=v;
v=crol(v,1);
}
}

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-06-07 13:25
    关注

    这是一个标志流水灯代码。

    #include"reg51.h"
    #include<intrins.h>
    unsigned int ms=0;//毫秒计数器
    unsigned char v=0xfe;//流水灯输出初值,有一个是0,和其它状态不一样,如果LED是共阴,就是只有一个不亮,其它亮,反之则是只有一个亮,其它不亮,取决于电路图
    void main(void)
    {
    TMOD=0x01; //定时器工作在16位计数器模式
    TL0=0x66;  //定时器初值,和下面的TH0一起,决定定时器中断频率,具体频率和系统时钟频率有关,看题意的话,估计是周期1毫秒
    TH0=0xfc;
    ET0=1;     //开启定时器中断
    EA=1;      //开启全局中断开关
    TR0=1;     //启动定时器
    while(1){  //主程序没事干了,开始摸鱼
    }
    }
    void isr_timer_0(void) interrupt 1   //定时器中断入口函数
    {
    TL0=0x66;   //重装定时器
    TH0=0xfc;
    ms=ms+1;    //累加毫秒数
    if(ms==1000)//1000,也就是大约1秒后,开始干下面的事情,
    {
    ms=0;       //计数器清零,准备下一轮计数
    P1=v;       //输出P1口数值
    v=crol(v,1);//数值循环左移一位,作为下一次输出状态
    }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算