历史上的今天
返回首页

历史上的今天

今天是:2024年10月30日(星期三)

正在发生

2019年10月30日 | PIC12F675电机控制程序案例源码

2019-10-30 来源:51hei

编译器用的是PICC9.83

你试试吧,一定要关闭AD才行哦。

//***************************************************

//           __________________

//       VDD-| 1            14 |-VSS

//   电机GP5-| 2            13 |-GP0/AN0/DAT  LED

//   AN3/GP4-| 3            12 |-GP1/AN1/CLK  

//GP3/RMCLR--| 4            11 |-GP2/AN2  

//           |________________ |

//               16F675

//***************************************************



#include


#define uchar unsigned char 

#define uint  unsigned int 



#ifndef OPEN

#define OPEN  1

#endif


#ifndef OFF

#define OFF  0

#endif



#define        SET                                1

#define        CLEAR                        0

#define        TRUE                        1

#define        FALSE                        0



__CONFIG(FOSC_EXTRCIO & WDTE_OFF & MCLRE_OFF  & BOREN_OFF  & CP_OFF & PWRTE_ON);

  //内部RC 看门狗关闭 GP3为IO 代码不保护

//#pragma config BOREN = OFF, CPD = OFF, FOSC = XT, MCLRE = OFF, WDTE = OFF, CP = OFF, PWRTE = OFF



#define   KEY     GPIO3

#define   LED     GPIO0

#define   BEEP    GPIO1

#define   SCR     GPIO5

#define   GHG     GPIO4



  /*********程序声明****************/

void  InitAPP(void);


//void  ScanKey();




void InitAPP()

{

        /* Comment out if using simulator, ICD2, or ICE2000

        #asm                                                                  //Load Factory Calibration Value Into OSCCAL

                call 0x3FF

                bsf        _STATUS,5                                                                         

                movwf _OSCCAL                                                

        #endasm

        */


    TRISIO=0x00;                    //Set All I/O's As OUT  

        VRCON = 0;                         //参考电压断电

        CMCON = 0x07;                     // configure comparator inputs as digital I/O                   

        ANSEL =  0;                                  // configure A/D inputs as digital I/O

        ADON=  0;        

        GIE = 1;



                             //Enable All Interrupts

  //  RAPU=0;         //上拉总使能

  //  WPUA5=1;            //RA5使能  

   // RAIE=1;

     IOCB5=1;        //管脚中断使能


}

/*********定时器初始化***************/

void  TimeInt()  

{

    OPTION_REG  &= 0x80;                   //

    TMR0  = 0x14;                    //  250uS

    T0IE = 1;                          //Timer0 Overflow Interrupt Enabled

    T0IF = 0;                        //Clear Timer0 Overflow Interrupt Flag 


}    


//***************************************************************************

//Isr() - Interrupt Service Routine

//      - Timer0 Overflow & GP3 Pin Change Are Used

//***************************************************************************


void interrupt Isr()

{     static  uint  count;

        if ( (T0IE & T0IF) == 1)            //If A Timer0 Interrupt, Then

        {     

                 TMR0  = 0x14; 

                 if(++count==40)  

                    {

                     count=0;

                 LED=~LED;

                      }


                    T0IF = 0;                 //Clear Timer0 Interrupt Flag

      }

/*

   else if ( (GPIE & GPIF) == SET)          //If A GP3 Pin-Change Interrupt

    {

     if(GHG==0)

      {

       SCR = 1;  //关闭电机

       BEEP=0; //打开蜂鸣器   

      }

     else if(GHG==1)

     {

      SCR=0;//打开电机

      BEEP=1; //关闭蜂鸣器   

     }

       GPIF=0; 


    }


        else if ( (INTE & INTF) == SET)   //If A GP2/INT External Intrrupt

        {


        }

        else if ( PEIE == SET)                          //If Peripheral Interrupts Enabled, Check Peripheral

        {                                 //Interrupts


                if ( (EEIE & EEIF) == SET)          //If A EEPROM Interrupt

                {


                }

                else if ( (ADIE & ADIF) == SET) //If A A/D Converter Interrupt

                {


                }


                else if ( (CMIE & CMIF) == SET) //If A Comparator Interrupt

                {


                }

                else if ( (TMR1IE & TMR1IF) == SET) //If A Timer1 Interrupt

                {


                }

        }



***************************/


}



//*****************************************************************************

//Main() - Main Routine

//*****************************************************************************


void  main()

{   

    InitAPP(); 

    TimeInt();         

        while(1)                             

          {


      }                


}


推荐阅读

史海拾趣

GREEGOO公司的发展小趣事
采用差分信号传输时钟信号,利用不同方向的电压差来获取时钟信号,这种方式能有效抵消传输中的衰减。
Dawning Precision Co Ltd公司的发展小趣事

Dawning Precision Co Ltd(以下简称“Dawning”)成立于本世纪初,当时正值电子行业的快速发展期。公司的创始人张先生是一位在电子行业摸爬滚打多年的资深人士,他看到了精密制造在电子行业中的巨大潜力。然而,初创时期,公司面临着资金短缺、技术瓶颈和市场认知度低等困难。张先生带领团队夜以继日地工作,不断研发新技术,优化产品性能,同时积极寻找投资者和合作伙伴。经过几年的不懈努力,Dawning逐渐在行业中树立了良好的口碑,开始获得客户的认可。

智浦欣(Chipstar)公司的发展小趣事

在2010年4月的上海张江高科技园区,一群志同道合的工程师和创业者聚集在一起,共同创立了上海智浦欣微电子有限公司。他们怀揣着对模拟及数模混合IC技术的深厚理解和热爱,立志要在消费类电子市场占据一席之地。起初,公司面临着资金紧张、技术挑战和市场压力等多重困难,但团队成员凭借对技术的执着和对市场的敏锐洞察,逐步攻克难题,研发出了几款性能优越的音频放大器和电源管理产品,为公司赢得了初步的市场认可。

Barnbrook Systems Limited公司的发展小趣事

在电子产品行业,产品质量和客户服务是企业生存和发展的关键。Barnbrook深知这一点,因此在发展过程中始终坚持严格的品质管理和优质的客户服务。公司建立了完善的质量管理体系,对每一道工序都进行严格把关,确保产品的稳定性和可靠性。同时,Barnbrook也重视客户反馈和需求,不断优化产品和服务,赢得了客户的信任和好评。

BusBoard Prototype Systems公司的发展小趣事

在发展过程中,BusBoard Prototype Systems深知单打独斗难以取得长远的发展。因此,公司积极寻求与上下游企业的合作,共同推动电子行业的发展。通过与芯片制造商、软件开发商等建立紧密的合作伙伴关系,BusBoard不仅能够获得更优质的资源支持,还能够为客户提供更加全面的解决方案。

DAVE Embedded Systems公司的发展小趣事

在稳固国内市场的同时,DAVE Embedded Systems也开始积极拓展国际市场。他们参加了多个国际电子展会,与全球各地的潜在客户建立了联系。通过与国际知名企业的合作,公司成功将产品打入欧美市场,并取得了良好的销售业绩。此外,公司还加强了与国际研发机构的合作,共同开发新技术和新产品,以保持在行业中的领先地位。

问答坊 | AI 解惑

start.s文件的问题

我用的是u-boot1.3.2,开发板是s3c2440,所以用的是cpu/arm920t/start.s,如果谁看过这个文件,请帮忙回答下以下几个问题: 1. 127行有如下几句话,请问一下这个0x0是RAM地址还是FLASH地址?    ldr        r0, =_s ...…

查看全部问答>

protel 中如何绘制点阵

最近想做一个PCB板,要用到8*8的点阵,但是protel的库中没有点阵,要自己制一个,但是制成之后与实际的芯片如何一致,如长度,引脚之间的距离等。制成PCB之后如何能实现与实际的点阵大小,长度引脚等特点一致。做了好长时间也没做出来,希望专业人 ...…

查看全部问答>

关于intel ICH7文档中点东西看不懂,望高手指教

Additionally, BIOS workarounds for power management can be supported by setting MPC.PMME (D28:F0/F1/F2/F3/F4/F5:Offset D8h:bit 0). When this bit is set, power management events will set SMSCS.PMMS (D28:F0/F1/F2/F3/F4/F5:Offset D ...…

查看全部问答>

关于蓝牙传输不稳定

  我用的是CSR的BC6的蓝牙芯片,平台是S3C2440+WIN CE的,上了CSR的驱动。BC6是用串口与主机通信,现在跑文件传输跑300K以下的来是没问题,跑300K以上的就老传到一半就没反应了,会不会是驱动问题,听给我们提供芯片的公司说微软的芯片只支持BC4 ...…

查看全部问答>

教你读懂手机电路图

不少同行反映,一部故障手机该换的元件都换了,但就是修不好机,大多数情况是对手机电路掌握不透彻,不会读和分析手机电路图,\"一吹二洗三代换\",三板斧下去,固然能解决一些问题,但深入下去就束手无策了。 很多人看到电路图就头痛,觉得毫无头 ...…

查看全部问答>

再次请教版主

版主,我现在对FSMC好迷惑啊。不知道有没有什么资料。 现在的问题是:    FSMC在bank1中的那4个片选NE1~4是如何判断接法?比如,为什么LCD液晶的片选要接NE4?     接其它的片选不行吗?那3个都是接什么的啊? https ...…

查看全部问答>

强烈建议STM8S开放外部数据总线

                                 刚刚把用STM8S给客户做的项目调试完毕,效果完美,客户非常满意,对STM8S的了解也更多了些,已经体验到这个小家伙 ...…

查看全部问答>

低功耗

低功耗是加进来了,可是需要10ms唤醒一次的,这样的低功耗有意义吗?能降低功耗吗? 总觉得10ms就唤醒太频繁了。…

查看全部问答>

winavr+avrstudio环境,用c语言,编译时要求makefile,该怎样操作?

winavr+avrstudio环境,用c语言,编译时要求makefile。 makefile文件是否只能在winavr中产生,在avrstudio中能否生成? 能否通过设置自动生成? 望高手指点!…

查看全部问答>

求高手指教如何处理数码管与液晶显示器同时使用接口?

数码管与液晶同时显示时,共用了P2口,影响了数码管上得值,怎样才能不相互影响?…

查看全部问答>