优秀案例News CREATE A CENTURY BRAND OF BISHAN

您现在的位置:主页 > 优秀案例 >

千赢国际中心 //目前有 硬件支持浮点 有软件浮点 就是说软件也可以实现浮点数运算

2018-07-11 09:33

不管多少次中断由于是静态变量 //但不能写成 //若是现实换成了是12MHZ晶振 就改成 F_OSC / 120000 由于TH0 TL0 是按照11.0592算的值 static uchar TimeBase2ms = TIME_BASE_2MS * (F_OSC / 110592); //若是11.0592的晶振 就1 若是是12.00MHZ 那这个值算出来说就是1.085xxxx 晶振跑的快了这个值要大点 //就是直接改F_OSC 这个宏就行了,不用改其他的 static uchar idata TimeBase500ms = TIME_BASE_500MS * (F_OSC / 110592); static uchar TimeBase10ms = TIME_BASE_10MS *(F_OSC / 110592); static unsigned char CountSignalDelay = 0; //以上只会执行一次 static 界说声明初始化 uchar i; TH0=0xfc ; // 总定时1000微秒,千赢国际,好比编译器看到特殊的代码会把转到 //一个特殊的函数去向理,千赢国际, //由于 51单片机 硬件不支持浮点运算 12/11.0592 = 1 向下取整了 跟11.0592的晶振值是一样的 // 若是支持浮点运算会有芯片内部专门的的硬件浮点运算指令 这种写法也不行 必须强转类型 //如 ( double)12/(double)11.0592 要把类型强转成 浮点数 才行,千赢国际平台, 进入中断必要12个周期, 所以现实定时1000 - 12 * 12 / F TL0=0x72 ; //这里 用工具算出来应该是FC 66 FC72-FC66 = 12 //让装载的数字少用12个周期 进入中断由于进入中断必要12周期加上去正好1ms _push_( SCONF ) ; if( --TimeBase2ms == 0 ){ TimeBase2ms = TIME_BASE_2MS * (F_OSC / 110592); //0--3 是2毫秒为时基的定时器 for( i = 0; i { if( TimerNo[ i ] != 0 ){ , 以下是代码实现已经测试并用到项目上课放心利用 Author : 吾本杞人 #include "reg52.h" #include "Intrins.h" #include "TypeDef.h" #include "CPUPin_Def.h" #include "VarDef.h" #define TIME_BASE_2MS 2 #define TIME_BASE_500MS 250 #define TIME_BASE_10MS 5 #define F_OSC 110592 //界说这个是默认按照11.0592MHZ的晶振算的TH0 TL0的值 体例1 16位定时器 //注意这种写法只能晶振翻倍的时候改这个宏才有用, 51 STM32 单片机 目前仿佛都不支持硬件浮点数 void Timer0() interrupt 1 using 1 { //采用静态变量这里只会执行一次, //目前有 硬件支持浮点 有软件浮点 就是说软件也可以实现浮点数运算,。

上一篇:千赢国际中心 1/4M / 1k = 250*/ TIM4->ARR = 250; /* Counter value:

下一篇:位C/T2(T2CON.1)必须清0