• 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
  • 相关阅读:
    linux 彻底删除文件及 find命令permission refused问题解决
    ubuntu系统中dpkg lock问题分析及解决
    ubuntu server18.04 更换默认源为阿里源-加速
    docker安装与卸载( liunx )
    ubuntu下dpkg lock问题
    docker pull报x509问题及docker启动失败问题解决
    windows 常用命令行操作
    uwsgi运行django应用是报错no app loaded. going in full dynamic mode
    internal server error原因及解决
    docker-compose启动容器后执行脚本或命令不退出 | 运行内部程序
  • 原文地址:https://www.cnblogs.com/https/p/9920632.html
Copyright © 2020-2023  润新知