找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1665|回复: 0
打印 上一主题 下一主题
收起左侧

舵机角度控制可用作跳一跳

[复制链接]
跳转到指定楼层
楼主
ID:293063 发表于 2018-10-9 18:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
sbit SEV_PWM = P1^0;  //设定PWM输出的I/O端口
unsigned char count = 0;
unsigned char SEV_conut =8;
sbit K6=P1^1;//设置两个按键,代表抬起和按下。根据实际硬件资源编写。
sbit K7=P1^2;
sbit LED=P1^3;          /*延时程序*/
void delay(unsigned char i)
{
  unsigned char j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}       
/*定时器T0初始化*/
void Com_Init()           {   
TMOD &= 0x00;   
TMOD |= 0x01; //定时器T0设置成方式1     
TH0 = 0xff;   //定时常数 0.1ms 晶振为11.0592MHz   
TL0 = 0xa4;     
ET0 = 1;         
TR0 = 1;
EA=1;
}                /*T0中断初始化*/
void Time0_Init() interrupt 1 {       
TR0 = 0;        
TH0 = 0xff; //重装时间常数 0.1ms       
TL0 = 0xa4;               
if(count <= SEV_conut) //5==0° 10==90°       
{                
SEV_PWM = 1;
}
else         {                
SEV_PWM = 0;
}
count++;
if (count >= 200) //T = 20ms清零
{        
count = 0;
}
TR0 = 1; //开启T0
}
void main(){
Com_Init();
while(1)        {
if(K6==0)       
{
delay(10);
if(K6==0)       
{       
SEV_conut =5;//5代表0.5ms       
count=0;       
}
}       
if(K7==0)
{
delay(10);
if(K7==0)
{       
SEV_conut =8;
count=0;
}
}
//SEV_conut =5;//舵机恢复到0°的位置       
//count=0;//让定时器重新计数       
//约延时2s       
//SEV_conut =8;//8这个值是作者调试的角度,得到现象是触控笔向下按压屏幕       
//count=0;       
//Delay(100000);
//延时函数写得不好,读者可改写。
}
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表