⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cradle.cp

📁 Firmware of the Cradle I have made
💻 CP
字号:
#line 1 "E:/Cradle/CCode/Cradle.c"
#line 1 "e:/cradle/ccode/utilities.c"
PWM_Period(unsigned short x)
 {
 PR2 = x;
 T2CON = 0x14;
 asm BCF STATUS, RP1
 asm BCF STATUS, RP0
 asm CLRF CCPR1L, 1
 asm BCF CCP1CON, 4
 asm BCF CCP1CON, 5
 }
PWM_Duty(unsigned short x)
 {
 asm CLRF CCPR1L, 1
 asm BCF CCP1CON, 4
 asm BCF CCP1CON, 5

 if (x.F0 == 1)
 {
 asm BSF CCP1CON, 4
 }
 if (x.F1 == 1)
 {
 asm BSF CCP1CON, 5
 }
 CCPR1L = x >> 2;
 }

Start_PWM()
 {
 asm BCF STATUS, RP1
 asm BSF STATUS, RP0
 asm BCF TRISB, 3
 asm BCF STATUS, RP0
 asm BSF T2CON, 2
 asm MOVLW 12
 asm IORWF CCP1CON, 1
 }

 Stop_PWM()
 {
 asm BCF STATUS, RP1
 asm BSF STATUS, RP0
 asm BSF TRISB, 3
 asm BCF STATUS, RP0
 asm CLRF T2CON, 1
 asm MOVLW 240
 asm ANDWF CCP1CON, 1
 asm BSF STATUS,RP0
 asm BCF TRISB, 3
 asm BCF STATUS,RP0
 asm BCF PORTB,3
 }
#line 16 "E:/Cradle/CCode/Cradle.c"
unsigned int speed;
char flag;

alarm ()
 {
 INTCON.GIE = 0;
 while (PORTA.F3 != 1)
 {
 PORTB.F4 = 1;
 PORTB.F1 = 1;
 Delay_ms(500);
 PORTB.F4 = 0;
 PORTB.F1 = 0;
 Delay_ms(500);
 }
 PORTB.F4 = 0;
 PORTB.F1 = 1;
 }

void Stop_motor()
 {
 while (speed != 120)
 {
 delay_ms(30);
 PWM_Duty (speed);
 speed--;
 }




 Stop_PWM();
 Delay_ms (5000);
 }

void Start_motor()
 {
 speed = 120;
 PWM_Duty (speed);
 Start_PWM();
 while ((speed != 240) && (PORTA.F3 != 1) && (CMCON.C1OUT == 1))
 {
 delay_ms (30);
 PWM_Duty (speed);
 speed++;
 }
 if (PORTA.F3 == 1)
 {
 Stop_PWM();
 flag = 1;
 }
 else if (CMCON.C1OUT == 0)
 {
 PORTB.F3 = 0;Stop_PWM();
 alarm();
 flag = 1;
 }
 else
 {
 flag = 0;
 }
 }

void main()
 {
 PORTA = 0;
 PORTB = 0;
 TRISA = 0x1f;
 TRISB = 0;
 CMCON = 3;
 PWM_Period(250);
 while (1)
 {
 if (PORTA.F3 == 1)
 {
 PORTB.F0 = 0;
 PORTB.F1 = 1;
 Delay_ms (1000);
 while (PORTB.F1 !=0)
 {
 if (CMCON.C2OUT == 0)
 {
 Start_motor();
 if (flag == 1)
 {
 goto sub1
 }
 while (CMCON.C2OUT == 0)
 {
 if (CMCON.C1OUT == 0)
 {
 Stop_motor();
 alarm();
 goto sub1
 }
 else if ((PORTA.F3 == 1) || (flag == 1))
 {
 flag = 1;
 Stop_motor();
 goto sub1
 }
 }
 Stop_motor();
 }
 else if (CMCON.C1OUT == 0)
 {
 alarm();
 break;
 }
 else if ((PORTA.F3 == 1) || (flag == 1))
 {
 sub1: PORTB.F0 = 1;
 PORTB.F1 = 0;
 Delay_ms (1000);
 break;
 }
 }
 flag = 0;
 }
 PORTB.F0 = 1;
 PORTB.F1 = 0;
 }
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -