立即注册 登录
返回首页

uid:123289的个人空间

留言板

JOANNA1978 2018-5-18 11:41
我们公司招聘嵌入式软件硬件工程人员,月薪可以过万,是否有兴趣?工作地点上海
dvga 2018-1-7 20:04
老师,你说的什么意思,我实在不会改啊
小白求知 2017-12-26 15:56
大佬,可以帮帮我吗?
xiong123154 2017-9-3 15:55
请问如何输出一段这样的方波,下面是我写的  我想知道有多少个脉冲 我想输出的是下面的两段方波
/*************************步进电机调试程序****************************************/
/***51单片机发送脉冲控制步进驱动器,*/
/** 输出两段方波  0  0  0  0(按键触发)1   0  1  0  1  0  1  0  1  0  1  0(输出停止)0 0 0 0*/
/*                0  0  0  0(按键触发)10 10 10 10 10 10 10 10 10 10 10 10(输出停止)0 0 0 0 */
#include<reg52.h>  

/*****************************************************************/         
unsigned char s,x,y,z;
int flag,a;
unsigned char Open=1;

sbit  LED1=P1^5;        //        测试灯1
sbit  LED2=P1^6;        //        测试灯2
sbit  P00=P0^0;                //脉冲输出
sbit  P01=P0^1;                //控制方向
sbit ANJIAN=P2^0;  //按键控制 距离

/*------------------------------------------------
                定时器初始化子程序
------------------------------------------------*/
void Init_Timer0(void)
{
        TMOD = 0x01;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                     
        TH0=(65536-100)/256;                  //重新赋值 12M晶振计算,指令周期1uS,                1s=1000ms
        TL0=(65536-100)%256;        //10mS方波半个周期5mS,
        ET0=1;           //定时器中断打开
        TR0=1;           //定时器开关打开
//        EA=1;            //总中断打开
}

/*------------------------------------------------
             定时器中断子程序
50hz,每秒50个脉冲,就是100次跳变。1/100 =10ms 这是频率
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
        TH0=(65536-100)/256;                  //重新赋值 12M晶振计算,指令周期1uS,                1s=1000ms        1ms=1000us
        TL0=(65536-100)%256;        //1mS方波半个周期500uS,即定时500次                 20US   40US       

        if(flag--==0)                        //          20US          flag=10时,已过去了10*20Us=200Us时间(12MHz),即每200Us执行一次下面的程序;                               5MS        if(flag==2)  //        flag=2时,已过去了2*5ms=10ms时间(12MHz),即每10ms执行一次下面的程序;
        {
                flag=Open;    //  清除重新计                                                                                            
                P00=!P00;        //          取反            
        }
}

/*------------------------------------------------
                 主函数
------------------------------------------------*/
main()
{        int i;   
        a=0;        //按键值累加前置零
        LED1=0;         //检测灯置低电平不亮
        LED2=0;
        Init_Timer0();//定时器初始化       
        while(1)
        {
         if(!ANJIAN)                //按键       
         {
                delay(20);
                 if(!ANJIAN)         //确认按键按下
                  {
                        a++;
                    while(!ANJIAN);
                       
                        switch(1)
                        {
                        case 1:
                                            P01=0;                 //前进        一段距离
                                           EA=1;                 //开中断
                                           Open=10;                   //值越小  速度越快                                       
                                           EA=0;           //关中断
                                           break;

                        case 2:
                                            P01=0;                 //前进        一段距离
                                           EA=1;                 //开中断
                                           Open=100;                   //值越小  速度越快                                                               
                                           EA=0;           //关中断
                                           break;
                               
                                case 3:
                                                a=0;
                                                break;       
                                                               
                                default:break;
                                       
                        }
                    }
          }                                                               
        }       
}
q6563008 2017-6-28 18:20
江都老乡
TIANYUN1573 2016-7-20 00:23
你好
可以探讨一下机械和电子

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

Powered by 单片机教程网

返回顶部