🇩🇪
while(1)
{
LED1 = 0; // turn LED on
LED2 = 0; // turn LED on
__delay_ms(500); // warte halbe Sekunde
LED1 = 1; // turn LED off
LED2 = 1; // turn LED off
__delay_ms(500); // warte halbe Sekunde
}
void servoRotate90() //90 Degree
{
GPIO != 0x03; // beide 1
__delay_us(1500); // pulsdauer
GPIO &= 0xFC; // beide 0
}
/*******************************************************************************
* File: main.c
* Project: SP18 - Hello World
* Author: Nicolas Meyertöns
* Version: siehe main.h
* Web: http://pic-projekte.de
******************************************************************************/
#include <xc.h>
#define LED1 LATBbits.LB1
#define _XTAL_FREQ 2000000
#define LED2 LATBbits.LB5
#pragma config FOSC = INTIO67 // Internal oscillator block
#pragma config PWRTEN = ON // Power up timer enabled
#pragma config BOREN = OFF // Brown-out Reset disabled
#pragma config WDTEN = OFF // Watch dog timer is always disabled
#pragma config MCLRE = EXTMCLR // MCLR enabled
#pragma config LVP = OFF // Single-Supply ICSP disabled
/*******************************************************************************
* Diverse Einstellungen zum PIC (IO, Takt, ...)
*/
void initPIC(void)
{
TRISA = 0x00;
TRISB = 0x01; // RB0:Input (PB)
TRISC = 0x20; // RC6:Input (AN16)
ANSELA = 0x00; // All digital
ANSELB = 0x00; // ...
ANSELC = 0x20; // AN16 on
OSCCON2bits.MFIOSEL = 0; // 111: 16 MHz
OSCCONbits.IRCF2 = 1; // 110: 8 MHz
OSCCONbits.IRCF1 = 0; // 101: 4 MHz
OSCCONbits.IRCF0 = 0; // 100: 2 MHz <-- aktiv
}
/*******************************************************************************
* Main Routine
*/
void main (void)
{
initPIC();
/*Shut OFF the LCD-Backlight*/
LATCbits.LC2 = 1;
/*Endlosschleife*/
while(1)
{
LED1 = 0; // turn LED on
__delay_ms(250); // delay 250 ms
__delay_ms(250); // ...
LED1 = 1; // turn LED off
__delay_ms(250); // ...
LED2 = 0; // turn LED on
__delay_ms(250); // delay 250 ms
__delay_ms(250); // ...
LED2 = 1; // turn LED off
__delay_ms(250);
}
}[code]/*
* File: newmain.c
* Author: Herbert
*
* Created on 12. Oktober 2019, 17:26
*/
#define _XTAL_FREQ 8000000
#include <xc.h>
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (HS oscillator: High-speed crystal/resonator on RA4/OSC2/CLKOUT and RA5/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Detect (BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled)
void servoRotate0() //0 Degree
{
unsigned char i;
for(i=0;i<50;i++)
{
GP1 = 1;
__delay_us(800);
GP1 = 0;
__delay_us(19200);
GP0 = 1;
__delay_us(800);
GP0 = 0;
__delay_us(19200);
}
}
void servoRotate90() //90 Degree
{
unsigned int i;
for(i=0;i<50;i++)
{
GP1 = 1;
__delay_us(1500);
GP1 = 0;
__delay_us(18500);
GP0 = 1;
__delay_us(1500);
GP0 = 0;
__delay_us(18500);
}
}
void servoRotate180() //180 Degree
{
unsigned int i;
for(i=0;i<50;i++)
{
GP1 = 1;
__delay_us(2200);
GP1 = 0;
__delay_us(17800);
GP0 = 1;
__delay_us(2200);
GP0 = 0;
__delay_us(17800);
}
}
void main()
{
OSCCON = 0b00000000;
OSCCONbits.IRCF = 0b111;
TRISIO = 0x00; // PORTB as Ouput Port
do
{
servoRotate0(); //0 Degree
__delay_ms(2000);
servoRotate90(); //90 Degree
__delay_ms(2000);
servoRotate180(); //180 Degree
}while(1);
}