zoukankan      html  css  js  c++  java
  • stc15w wave

    1. 定时器和延时

    #include    "15W4KxxS4.h" 
    #define FOSC 12000000
    #define CLK    (65536-FOSC/2/12/1000) 
    sbit clk=P3^0;
    
    void clk_wave(void)   //1KHZ@12MHz
    {
      
        AUXR |= 0x00;        //串口1选择定时器2为波特率发生器
        T2L = CLK;        //设定定时初值
        T2H = CLK>>8;        //设定定时初值
        AUXR |= 0x10;        //启动定时器2
        INT_CLKO=0x04;
    
    }
    void Delay5ms()        //@12.000MHz
    {
        unsigned char i, j;
    
        i = 59;
        j = 90;
        do
        {
            while (--j);
        } while (--i);
    }
    
    
    int  main(void)
    {                
           
         //clk_wave();
        while (1)
                {
                        clk=0;
                      Delay5ms();    
                        clk=1;
                      Delay5ms();    
                };
    }
    View Code

    2. 中断

    #include    "15W4KxxS4.h" 
    #include "intrins.h"
         
    #define  uint8    unsigned char 
    #define  uint16   unsigned int 
    
    //uint8 data temp[100];
    uint8 ti = 0;  
    
    sbit clk=P3^0;
     
    void Timer0Init(void)        //500微秒@12.000MHz
    {
        AUXR &= 0x7F;        //定时器时钟12T模式
        TMOD &= 0xF0;        //设置定时器模式
        TL0 = 0x0C;        //设置定时初值
        TH0 = 0xFE;        //设置定时初值
        TF0 = 0;        //清除TF0标志
        ET0=1;
        EA=1;
        TR0 = 1;        //定时器0开始计时
    }
    
    int  main(void)
    {                
         Timer0Init(); 
      while (1);
    }
    
    void wave() interrupt 1
    {
        if(ti<=5)
        clk=1;
        if(ti>5&&ti<=9)
            clk=0;
        ti++;
        ti=ti%10;
        //clk=!clk;
    }
    View Code

     3. 占空比

    #include    "15W4KxxS4.h" 
    #include "intrins.h"
         
    #define  uint8    unsigned char 
    #define  uint16   unsigned int 
    
    //uint8 data temp[100];
    uint8 ti = 0;  
    
    sbit SI=P3^0;
    sbit CLK=P0^0;
     
    void Timer0Init(void)        //1毫秒@12.000MHz
    {
        AUXR &= 0x7F;        //定时器时钟12T模式
        TMOD &= 0xF0;        //设置定时器模式
        TL0 = 0x18;        //设置定时初值
        TH0 = 0xFC;        //设置定时初值
        TF0 = 0;        //清除TF0标志
        ET0=1;
        EA=1;
        TR0 = 1;        //定时器0开始计时
    }
    int  main(void)
    {        
            ti=0;
         Timer0Init();   
      while (1);
    }
    
    void wave() interrupt 1
    {
        ti++;
         if(ti==20)      //低电平循环次数,高电平为两者之差
        CLK=1;
      else if(ti==100)   //总循环次数
        {
            CLK=0;
          ti=0;
        }
     
    }
    View Code

     4. 两束波,相位延迟

    #include    "15W4KxxS4.h" 
    #include "intrins.h"
         
    #define  uint8    unsigned char 
    #define  uint16   unsigned int 
    
    //uint8 data temp[100];
    uint8 ti = 0;  
    
    sbit CLK=P3^0;
    sbit SI=P0^0;
     
    void Timer0Init(void)        //1毫秒@12.000MHz
    {
        AUXR &= 0x7F;        //定时器时钟12T模式
        TMOD &= 0xF0;        //设置定时器模式
        TL0 = 0x18;        //设置定时初值
        TH0 = 0xFC;        //设置定时初值
        TF0 = 0;        //清除TF0标志
        ET0=1;
        EA=1;
        TR0 = 1;        //定时器0开始计时
    }
    void Delay500us()        //@12.000MHz
    {
        unsigned char i, j;
    
        i = 6;
        j = 211;
        do
        {
            while (--j);
        } while (--i);
    }
    void Delay1ms()        //@12.000MHz
    {
        unsigned char i, j;
    
        i = 12;
        j = 169;
        do
        {
            while (--j);
        } while (--i);
    }
    void Delay359500us()        //@12.000MHz
    {
        unsigned char i, j, k;
    
        _nop_();
        _nop_();
        i = 17;
        j = 101;
        k = 106;
        do
        {
            do
            {
                while (--k);
            } while (--j);
        } while (--i);
    }
    
    
    int  main(void)
    {        
        
         Timer0Init(); 
         
      ti=0;
      while (1)
            {
                     Delay500us();
                    SI=1;
                    Delay1ms();
                    SI=0;
                    Delay359500us();    
            };
    }
    
    void wave() interrupt 1
    {
        CLK=!CLK;
         
     
    }
    View Code
  • 相关阅读:
    a标签点击之后有个虚线边框,怎么去掉
    在ie下,a标签包被img的时候,为什么有个蓝色的边线
    如何让一个变量的值,作为另一个变量的名字
    html 获取宽高
    两个同级div等高布局
    java中IO流异常处理
    连带滑块效果图
    java中File类的使用
    java保留两位小数4种方法
    java日历显示年份、月份
  • 原文地址:https://www.cnblogs.com/https/p/9920632.html
Copyright © 2011-2022 走看看