找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2767|回复: 2
收起左侧

用15f104w通过IO口高低电平变化来控制舵机采用12M晶振

[复制链接]
ID:150369 发表于 2016-11-26 17:17 | 显示全部楼层 |阅读模式
#include <reg52.h>             //头文件
unsigned int scale;//占空比控制变量
sbit out1=P3^3;
sbit key1=P3^5;
sbit key2=P3^4;
unsigned int n=50,key2f=0;//延时循环变量
unsigned int kf0=1;//按键用的标志位
unsigned int kt0=0;//按键用的标志位
unsigned int num=0;
void main(void){
    TMOD=0x02;//定时器0,工作模式2(0000,0010),8位定时模式
    TL0 = 0xF6;        //设置定时初值   10微妙
    TH0 = 0xF6;        //设置定时重载值
    TR0=1;//启动定时器
    ET0=1;//允许定时器0中断
    EA=1;//允许总中断
    while(1){
        if(key2==0){
                num=0;
                scale=50;            
        }
        if(key1==0){//当按键1按下
            if(kf0){//当标志位kf0=1的时候进行
                    kf0=0;//标志位kf0=0
                    kt0=1;//标志位kt0=0
                    num++;
              }
        }else{//当按键松开
           if(kt0){//当标志位kt0=1的时候进行
                kf0=1;//标志位kf0=1
                kt0=0;//标志位kt0=0
           }
        }//按键1结束
        scale=num+50;        
    }
}
void timer0() interrupt 1{//定时器0 0中断服务程序
    static unsigned int tt;//tt用来保存当前时间在一秒中的比例位置
    tt++;//每10微妙增加1
    if(tt==300){//2.5毫秒的时钟周期
        tt=0;//使tt=0,开始新的PWM周期
        out1=0;
    }
    if(scale==tt){//按照当前占空比铁环输出为高电平
        out1=1;
    }
}


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:647125 发表于 2019-11-22 11:23 来自手机 | 显示全部楼层
能分享一下吗
回复

使用道具 举报

ID:648880 发表于 2019-11-25 10:14 来自手机 | 显示全部楼层
感觉挺高级的,很实用的感觉
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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