欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1926|回復: 0
收起左側

51單片機舵機程序

[復制鏈接]
ID:340756 發表于 2018-5-29 17:32 | 顯示全部樓層 |閱讀模式
#include<reg52.h>

sbit key1 = P3^0;  
sbit key2 = P3^1;  
sbit pwm1= P2^7;  //引腳位定義

unsigned int target =6,percent = 0;  //聲明target 目標 = 6,percent 百分百 = 0

void Timer0Initial();  //定時器0 TH0 TL0初始賦值函數
void initial_Timer();  //定時器0初始化配置函數
void delay(unsigned int x);  //1ms延時函數
void keyscan();                                                   //按鍵函數
void initial();  //系統初始化函數
void Timer0();//定時器0 中斷服務程序

void main()  //主函數
{  
    initial();  //系統初始化
    while(1)  
    {  
        keyscan();  //按鍵處理函數
    }  
}

void keyscan()  //按鍵處理函數
{  
    if(key1 == 0)  //按鍵1是否按下
    {  
    delay(3);                  //延時3ms
    if(key1 == 0)  
    {  
        if(target >= 7)  //target 是否大于等于 7
        {  
            target -= 1;  //target - 1
        }  
        while(key1 == 0)  //按鍵1按下
        {P1 = 0x00;}                 
    }  
    P1 = 0xFF;  
    }  

    if(key2 == 0)  
    {  
        delay(3);  
        if(key2 == 0)  
        {  
            if(target <= 26)  //target 是否小于等于 26
            {  
                target += 1;  //target + 1
            }  
            while(key2 == 0)  
            {P1 = 0x00;}  
        }  
        P1 = 0xFF;  
    }  
}  

void initial()  //系統初始化函數
{  
    key1 = 1;  
    key2 = 1;  
    P1 = 0xff;  
    initial_Timer();  //定時器0 初始化
}  

/*使用11.0592mhz晶振
92次計時為100us
void Timer0Initial()  //定時器0 高八位 低八位  初始賦值
{  
    TH0 = (65536-92)/256;  
    TL0 = (65536-92)%256;  
}  //該初值使每0.1ms產生一次中斷
void initial_Timer()  //定時器中斷0 初始化
{  
    EA = 1;        
    ET0 = 1;      
    TMOD = 0x01;      
    Timer0Initial();      
    TR0 = 1;              
}  

void delay(unsigned int x)  //1ms延時函數
{  
    unsigned int i,j;  
    for(i = 0;i< x; ++i)  
        for(j = 120; j >0 ; --j)  
            ;  
}  

void Timer0() interrupt 1 using 0  //定時器0 中斷服務程序
{  
    percent += 1;   //per + 1
    if(percent == 200)  //per 是否等于 200
    {  
        percent = 0;  //per = 0
        pwm1 = 1;                 //信號線輸出高電平
    }  
    if(percent == target)  //par 是否等于 tar
    {  
        pwm1 = 0;  //信號線輸出低電平
    }  
    Timer0Initial();  //定時器0 初始賦值

}  

QQ截圖20180529173147.png
QQ截圖20180529173156.png
QQ截圖20180529173203.png
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表