- u16 delay_ms_v1 = 0; //全局延时值
- u16 delay_ms_v2 = 0;
-
- void TM0_Isr() interrupt 1{ //设定为1ms的周期
- if(delay_ms_v1) delay_ms_v1--; //如果非零,减一
- if(delay_ms_v2) delay_ms_v2--;
- }
-
- void myfun1(){
- static u8 delay_start = 0; //开始延时标记
-
- if(delay_start == 0){ //无延时标记,执行延时之前的动作
- printf("1");
- printf("2");
- printf("3");
- printf("4");
- //_delay_ms(100); //延时
- delay_ms_v1 = 100;
- delay_start = 1; //设定标记
- }
- else{ //有延时标记了.
- if(delay_ms_v1 == 0){ //是不是延时到了?
- printf("11");
- printf("22");
- printf("33");
- printf("44");
- delay_start = 0; //清除标记
- }
- }
- }
-
- void myfun2(){
- static u8 delay_start = 0; //开始延时标记
-
- if(delay_start == 0){ //无延时标记,执行延时之前的动作
- printf("1");
- printf("2");
- printf("3");
- printf("4");
- //_delay_ms(100);
- delay_ms_v2 = 200; //延时
- delay_start = 1; //设定标记
- }
- else{ //有延时标记了.
- if(delay_ms_v2 == 0){ //是不是延时到了?
- printf("11");
- printf("22");
- printf("33");
- printf("44");
- delay_start = 0; //清除标记
- }
- }
- }
-
- void main(){
- while(1){
- myfun1();
- myfun2();
- }
- }
-
- /*不是很懂OS那些,不过你是要这个意思吗?
- myfun1和myfun2里面的,执行了设定延时值就会出来,然后每次去判断,是不是时间到了.到了就执行另外一段代码.
- */
复制代码
|