沈辰栎 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日

悬赏问题

  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图