久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3106|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STC15F2K60S2驅(qū)動(dòng)舵機(jī)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:242684 發(fā)表于 2017-10-25 09:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
//STC15F2K60S2定時(shí)/計(jì)數(shù)器中斷 (晶振12MHz,12分頻) 單位時(shí)間等于12分頻/12MHz,即計(jì)數(shù)器每次加1使用的時(shí)間是1微秒。
#include <STC15F2K60S2.H>
#include <math.h>        //pow(x,y) x的y次方函數(shù)需要
sbit KEY1 = P3^2;
sbit KEY2 = P3^3;
sbit led1 = P1^1;
sbit led2 = P1^2;
unsigned int counter = 0;   //例子中需要使用的變量
/*****
函數(shù)名:定時(shí)計(jì)數(shù)器中斷初始化
調(diào)用:TimerCounterIntInit_12MHz(Tx, delay_us);
參數(shù):bit T_C_Int(定時(shí)器中斷0或定時(shí)器中斷1), delay_us(多少微米)
返回值:無(wú)
結(jié)果:?jiǎn)?dòng)T/C1或T/C0并設(shè)置計(jì)數(shù)器初值
*****/
void TimerCounterIntInit_12MHz(bit Tx,unsigned int delay_us)
{
        //定時(shí)器0和定時(shí)器1都使用工作方式0:16位自動(dòng)裝載的定時(shí)/計(jì)數(shù)器
        TMOD = 0x00;
        //中斷總開(kāi)關(guān)(屬I(mǎi)E:中斷允許寄存器)  
        EA = 1;  
        if(Tx==0){
            ET0 = 1;  //允許定時(shí)器中斷0中斷(屬I(mǎi)E:中斷允許寄存器)
            TH0 = (65536 - delay_us) >> 8;        //16位計(jì)數(shù)寄存器T0高8位
            TL0 = (65536 - delay_us) & 0x00FF;  //16位計(jì)數(shù)寄存器T0低8位
        }
        else {
            ET1 = 1;  //允許定時(shí)器中斷1中斷(屬I(mǎi)E:中斷允許寄存器)
            TH1 = (65536 - delay_us) >> 8;        //16位計(jì)數(shù)寄存器T1高8位
            TL1 = (65536 - delay_us) & 0x00FF;  //16位計(jì)數(shù)寄存器T1低8位
        }      
}
/*****
函數(shù)名:定時(shí)/計(jì)數(shù)器0中斷處理函數(shù)
調(diào)  用:[T/C0溢出后中斷處理]
參  數(shù):無(wú)
返回值:無(wú)
結(jié)  果:重新寫(xiě)入16位計(jì)數(shù)寄存器初始值,處理用戶程序
備  注:
定時(shí)/計(jì)數(shù)器1中斷處理函數(shù):
void TimerCounter_1 (void) interrupt 3  using 3{ //切換寄存器組到3
    //重新寫(xiě)入初值
    //用戶函數(shù)內(nèi)容
}
*****/
void TimerCounter_0 (void) interrupt 1  using 1{ //切換寄存器組到1
     counter++;
     if(counter ==2000){  
              //這個(gè)數(shù)值需要根據(jù)TimerCounterIntInit_12MHz(Tx,delay_us)函數(shù)的delay_us值進(jìn)行調(diào)整counter=20000us/delay_us
             TR0 = 0;         //停止定時(shí)器,使舵機(jī)運(yùn)行穩(wěn)定
             counter = 0;     //重置
    }
}
/*****
函數(shù)名:模擬PWM
調(diào)用:SimulationPWM(unsigned char pin,unsigned int pwmOut,unsigned int theNumOfTimes);
參數(shù):unsigned char pin(輸出模擬PWM的引腳,如:11表示P1^1,3表示P0^3)
unsigned int pwmOut(多少微米)
unsigned int theNumOfTimes(舵機(jī)的一個(gè)脈沖是20ms,500-2500us的高電平控制舵機(jī)角度,循環(huán)次數(shù)需要大于等于
            1T單片機(jī)大概4個(gè)_nop()是1us,所以theNumOfTimes的數(shù)量起碼要大于角度對(duì)應(yīng)的時(shí)間)
返回值:無(wú)
結(jié)果:產(chǎn)生20ms的pwm
*****/
void SimulationPWM(unsigned char pin,unsigned int pwmOut,unsigned int theNumOfTimes)         //pwmOut取值(50~250)
{          
    unsigned int i=1;
    int Pn = pin/10;
    int PnBit = pin%10;
    PnBit = pow(2,PnBit);
    TR0 = 1;
    for(i=0;i<theNumOfTimes;i++){
        if(counter>0 && counter<pwmOut){
            switch(Pn){
                case 0:P0 |= PnBit;
                break;
                case 1:P1 |= PnBit;
                break;
                case 2:P2 |= PnBit;
                break;
                case 3:P3 |= PnBit;
                break;
                case 4:P4 |= PnBit;
                break;
                case 5:P5 |= PnBit;
                break;
            }

        }else{
            switch(Pn){
                case 0:P0 &= ~PnBit;
                break;
                case 1:P1 &= ~PnBit;
                break;
                case 2:P2 &= ~PnBit;
                break;
                case 3:P3 &= ~PnBit;
                break;
                case 4:P4 &= ~PnBit;
                break;
                case 5:P5 &= ~PnBit;
                break;
            }
        }
    }
}
//主函數(shù)
void main(void)
{
    TimerCounterIntInit_12MHz(0,10);        //0.01毫秒,這個(gè)時(shí)間需要根據(jù)不同舵機(jī)進(jìn)行調(diào)整。
   while(1){
      led1=0;
      led2=0;
      if(KEY1==0){
         SimulationPWM(12,90,10001);
         SimulationPWM(11,140,10001);
      }
      else if(KEY2==0){
         SimulationPWM(12,120,12001);
      SimulationPWM(11,180,10001);
      }
   }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲第一视频网站 | 国产美女视频黄 | 欧洲av一区 | 亚洲欧美激情国产综合久久久 | 日韩另类视频 | 五月激情综合 | 成人免费大片黄在线播放 | 亚洲精品久久嫩草网站秘色 | 欧美国产视频 | 一级黄色片网站 | 日韩中文字幕在线观看视频 | 欧美a在线看 | 国产不卡一区在线观看 | 欧美中文字幕一区二区三区 | 日韩精品久久久久 | 先锋av资源在线 | 中文字幕在线观看视频一区 | 国产99免费 | 成人在线播放网址 | 欧美a级网站 | 日韩欧美日韩在线 | 色综合久久天天综合网 | 欧美1区2区 | 蜜桃视频成人 | 欧美性受xxxx | 免费看黄色视屏 | 亚洲成人免费视频 | 亚洲免费成人 | 国产九九九 | 日本一区二区三区在线观看 | 99精品视频一区二区三区 | 在线观看成人小视频 | 精品国产青草久久久久福利 | 99精品免费 | 欧美精品 在线观看 | 久久99网站 | 91文字幕巨乱亚洲香蕉 | 日本免费黄色 | 国产一区二区免费 | 欧美日韩在线综合 | 日韩一区av |