请问下面这些代码是什么意思?希望有每行的解释!谢谢!
#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);
}
}
C51单片机循环语句不懂求解释
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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);//数值循环左移一位,作为下一次输出状态 } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算