如何建微网站,《工程建设》官方网站,wordpress 邮件,.net 创建网站项目打开软件 1与其它等于其它#xff0c;0与其它等于0
1或其它等于1#xff0c;0或其它等于其它
TMODTMOD0xF0;//0xF01111 0000进行与操作#xff0c;高四位保持#xff0c;低四位清零#xff0c;高四位定时器1#xff0c;低四位定时器0
TMODTMOD|0x01;//0x010000 0…打开软件 1与其它等于其它0与其它等于0
1或其它等于10或其它等于其它
TMODTMOD0xF0;//0xF01111 0000进行与操作高四位保持低四位清零高四位定时器1低四位定时器0
TMODTMOD|0x01;//0x010000 0001进行或操作高四位保持低四位置0001
只配置了定时器0为16位定时器/计数器模式不影响定时器1的配置TF00;//初始状态TF0置0只有当溢出时单片机硬件自动置TF0为1响应中断时硬件又自动置TF0为0
TR01;//配置定时器0时GATE已配置为0TR01允许计时 TH0(65535-1000)/256;
TL0(65535-1000)%256;
定时器算配置好了接下来配置中断给CPU信号说来到点儿了先别忙那个了干这个
ET01;
EA1;
PT00;
综上定时器0初始化函数代码为 之所以多1是因为65535是从0开始计数如果从1开始计数则是1到65536而我们设置初始值相当于从1开始计数而不是0所以TL0(65536-1000)%256TH0(65536-1000)/256
12MHz定时器时钟为12T所以1T就是1MHz
void Timer0_Init()//定时器0初始化函数12MHz下配置的12T
{TMOD0xF0;//高四位保持低四位清零aab简写为abTMOD|0x01;//高四位保持低四位0001TL00X18;//低四位65536-1000%256设置1毫秒定时器TH00XFC;//高四位65536-1000/256设置1毫秒定时器TF00;//TF0初始化溢出为1平时为0TR01;//允许定时器开始计数//打开中断ET01;EA1;//设置优先级PT00;
}
定时器中断配置好了接下来是中断后要干事情了需要中断函数
void Timer0_Routine() interrupt 1
{static unsigned int T0Count;//用于定时比65536微秒更长的时间比如1秒设置一个变量TL00x18;//每次进入中断函数后初始化函数里的初始值会自动清0如果不想下次从0开始计数则需要TH00xFC;//重新给TL0和TH0赋值T0Count;//每进一次中断是1毫秒累加到T0Count中if(T0Count1000)//1秒等于1000毫秒{T0Count0;//先初始化清零//下来写想要干的事儿点灯等等}
}
不懂static可以跳转到这里希望可以帮助到你节约时间 51单片机学习之旅——C语言小知识-CSDN博客
下来把定时器0做模块化
跳转到这个链接51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客 跳转到这个链接51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客下来做按键模块化 跳转到这个链接51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客 跳转到这个链接51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客同理是delay模块化 跳转到这个链接51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客 跳转到这个链接51单片机学习之旅——模块化编程集_51单片机模版编程-CSDN博客下面是main.c文件内容
#include REGX52.H
#include timer0.h
#include key.h
#include INTRINS.H//函数库中有连续左移右移函数unsigned char keynumber0,ledmode0;void main()
{P20xFE;//先让最低位亮一个灯Timer0Init();//定时器0中断初始化while(1){keynumberkey();//读取按键if(keynumber)//按键1控制led灯的模式0模式循环左移1模式循环右移{if(keynumber1){ledmode;if(ledmode2){ledmode0;}}}}
}void Timer0_Routine() interrupt 1{static unsigned int T0Count;TL00x18;TH00xFC;T0Count;if(T0Count500){T0Count0;if(ledmode0){P2_crol_(P2,1);//_crol_(待移项需要左移left的位数)最高位与最低位相连成环一直移}if(ledmode1){P2_cror_(P2,1);//_cror_(待移项需要右移right的位数)}}}