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

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

#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);//数值循环左移一位,作为下一次输出状态
}
}