历史上的今天
今天是: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) { } }
史海拾趣
|
我用的是u-boot1.3.2,开发板是s3c2440,所以用的是cpu/arm920t/start.s,如果谁看过这个文件,请帮忙回答下以下几个问题: 1. 127行有如下几句话,请问一下这个0x0是RAM地址还是FLASH地址? ldr r0, =_s ...… 查看全部问答> |
|
最近想做一个PCB板,要用到8*8的点阵,但是protel的库中没有点阵,要自己制一个,但是制成之后与实际的芯片如何一致,如长度,引脚之间的距离等。制成PCB之后如何能实现与实际的点阵大小,长度引脚等特点一致。做了好长时间也没做出来,希望专业人 ...… 查看全部问答> |
|
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 ...… 查看全部问答> |
|
winavr+avrstudio环境,用c语言,编译时要求makefile,该怎样操作? winavr+avrstudio环境,用c语言,编译时要求makefile。 makefile文件是否只能在winavr中产生,在avrstudio中能否生成? 能否通过设置自动生成? 望高手指点!… 查看全部问答> |




