Lite lek med pic
Postat: 17 juli 2011, 21:14:42
Har suttit ett par dar nu och försökt att lära mig PIC programmering och har provat både assembler och C med varierande reultat. men det gick inget vidare, sen hittade jag Flowcode (vad det lät reklamaktigt
) och lyckades få ihop ett större program
.
tycker att det är lagomt lätt för mig som bara vill styra lite lysdioder. köpte det och gjorde ett större program med 3 knappar, 6st lysdioder och en 7 segmentsdisplay på en pic16f628a.
När man trycker på knapp1 går den in i "programvals mode" där man kan justera program och hastighet mha knapp 2 och 3. knapp2 väljer man mellan program eller hastighet och knapp3 stegar man upp ett snäpp.
C koden för den som är intresserad:
det blev en lång och kanske onödigt komplicerad kod, men i Flowcode så ser man det hela bättre. filmade en liten snutt också. på filmen är inte 7 segmentsdisplayen inkopplad. nästa steg är nog ett kort till denna krets.
OBS! stäng av ljudet... dryg låt...
Youtube klipp
Jag tänkte lägga upp lite mer PIC projekt här sen när man börjar få lite mer grepp.


tycker att det är lagomt lätt för mig som bara vill styra lite lysdioder. köpte det och gjorde ett större program med 3 knappar, 6st lysdioder och en 7 segmentsdisplay på en pic16f628a.
När man trycker på knapp1 går den in i "programvals mode" där man kan justera program och hastighet mha knapp 2 och 3. knapp2 väljer man mellan program eller hastighet och knapp3 stegar man upp ett snäpp.
C koden för den som är intresserad:
Kod: Markera allt
#define MX_PIC
//Definitioner för mikrocontroller
#define P16F628A
#define MX_EE
#define MX_EE_TYPE1
#define MX_EE_SIZE 128
#define MX_UART
#define MX_UART_B
#define MX_UART_TX 2
#define MX_UART_RX 1
#define MX_PWM
#define MX_PWM_CNT 1
#define MX_PWM_TRIS1 trisb
#define MX_PWM_1 3
//Funktioner
#define MX_CLK_SPEED 4000000
#ifdef _BOOSTC
#include <system.h>
#endif
#ifdef HI_TECH_C
#include <pic.h>
#endif
//Konfigurationsdata
#ifdef _BOOSTC
#pragma DATA 0x2007, 0x3f18
#endif
#ifdef HI_TECH_C
__CONFIG(0x3f18);
#endif
//Interna funktioner
#include "C:\Program Files (x86)\Matrix Multimedia\Flowcode V4\FCD\internals.h"
//Makrofunktions-deklarationer
void FCM_Byteavprogram();
void FCM_Ledprog();
//Variabeldeklarationer
char FCV_SWITCH;
char FCV_SWITCH1;
char FCV_PLUSPROG;
char FCV_BEGIN;
char FCV_PLUS;
char FCV_PLUSSPEED;
//Defines:
/**** Macro Substitutions ****
porta = LED Port Register
trisa = LED Data Direction Register
1 = LED Pin Mask
1 = LED Active Polarity
******************************/
//LED0: //Makrofunktions-deklarationer
void FCD_LED0_LEDOn();
void FCD_LED0_LEDOff();
//Defines:
/**** Macro Substitutions ****
porta = LED Port Register
trisa = LED Data Direction Register
2 = LED Pin Mask
1 = LED Active Polarity
******************************/
//LED1: //Makrofunktions-deklarationer
void FCD_LED1_LEDOn();
void FCD_LED1_LEDOff();
//Defines:
/**** Macro Substitutions ****
porta = LED Port Register
trisa = LED Data Direction Register
4 = LED Pin Mask
1 = LED Active Polarity
******************************/
//LED2: //Makrofunktions-deklarationer
void FCD_LED2_LEDOn();
void FCD_LED2_LEDOff();
//Defines:
/**** Macro Substitutions ****
porta = LED Port Register
trisa = LED Data Direction Register
128 = LED Pin Mask
1 = LED Active Polarity
******************************/
//LED3: //Makrofunktions-deklarationer
void FCD_LED3_LEDOn();
void FCD_LED3_LEDOff();
//Defines:
/**** Macro Substitutions ****
porta = LED Port Register
trisa = LED Data Direction Register
8 = LED Pin Mask
1 = LED Active Polarity
******************************/
//LED4: //Makrofunktions-deklarationer
void FCD_LED4_LEDOn();
void FCD_LED4_LEDOff();
//Defines:
/**** Macro Substitutions ****
porta = LED Port Register
trisa = LED Data Direction Register
64 = LED Pin Mask
1 = LED Active Polarity
******************************/
//LED5: //Makrofunktions-deklarationer
void FCD_LED5_LEDOn();
void FCD_LED5_LEDOff();
//LED0: //Makroimplementationer
void FCD_LED0_LEDOn()
{
trisa = trisa & ~1; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta | 1;
else //Active low polarity
porta = porta & ~1;
}
void FCD_LED0_LEDOff()
{
trisa = trisa & ~1; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta & ~1;
else //Active low polarity
porta = porta | 1;
}
//LED1: //Makroimplementationer
void FCD_LED1_LEDOn()
{
trisa = trisa & ~2; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta | 2;
else //Active low polarity
porta = porta & ~2;
}
void FCD_LED1_LEDOff()
{
trisa = trisa & ~2; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta & ~2;
else //Active low polarity
porta = porta | 2;
}
//LED2: //Makroimplementationer
void FCD_LED2_LEDOn()
{
trisa = trisa & ~4; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta | 4;
else //Active low polarity
porta = porta & ~4;
}
void FCD_LED2_LEDOff()
{
trisa = trisa & ~4; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta & ~4;
else //Active low polarity
porta = porta | 4;
}
//LED3: //Makroimplementationer
void FCD_LED3_LEDOn()
{
trisa = trisa & ~128; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta | 128;
else //Active low polarity
porta = porta & ~128;
}
void FCD_LED3_LEDOff()
{
trisa = trisa & ~128; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta & ~128;
else //Active low polarity
porta = porta | 128;
}
//LED4: //Makroimplementationer
void FCD_LED4_LEDOn()
{
trisa = trisa & ~8; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta | 8;
else //Active low polarity
porta = porta & ~8;
}
void FCD_LED4_LEDOff()
{
trisa = trisa & ~8; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta & ~8;
else //Active low polarity
porta = porta | 8;
}
//LED5: //Makroimplementationer
void FCD_LED5_LEDOn()
{
trisa = trisa & ~64; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta | 64;
else //Active low polarity
porta = porta & ~64;
}
void FCD_LED5_LEDOff()
{
trisa = trisa & ~64; //Convert pin to output
if( 1 ) //Active high polarity
porta = porta & ~64;
else //Active low polarity
porta = porta | 64;
}
//Makroimplementationer
void FCM_Byteavprogram()
{
//Beräkning
//Beräkning:
// switch = 1
FCV_SWITCH = 1;
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Utgång
//Utgång: 1 -> A6
trisa = trisa & 0xbf;
if (1)
porta = (porta & 0xbf) | 0x40;
else
porta = porta & 0xbf;
//Kopplingspunkt
//Kopplingspunkt: [A]: A
FCC_Byteavprogram_A:
;
//Utgång
//Utgång: 1 -> A2
trisa = trisa & 0xfb;
if (1)
porta = (porta & 0xfb) | 0x04;
else
porta = porta & 0xfb;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 1 -> A2
trisa = trisa & 0xfb;
if (1)
porta = (porta & 0xfb) | 0x04;
else
porta = porta & 0xfb;
//Ingång
//Ingång: B1 -> switch1
trisb = trisb | 0x02;
FCV_SWITCH1 = ((portb & 0x02) == 0x02);
//Ingång
//Ingång: B2 -> plus
trisb = trisb | 0x04;
FCV_PLUS = ((portb & 0x04) == 0x04);
//Ingång
//Ingång: B0 -> begin
trisb = trisb | 0x01;
FCV_BEGIN = ((portb & 0x01) == 0x01);
//Beslut
//Beslut: switch1=0?
if (FCV_SWITCH1==0)
{
//Beslut
//Beslut: switch=2?
if (FCV_SWITCH==2)
{
//Beräkning
//Beräkning:
// switch = 1
FCV_SWITCH = 1;
} else {
//Beräkning
//Beräkning:
// switch = switch+1
FCV_SWITCH = FCV_SWITCH+1;
}
}
//Beslut
//Beslut: plus=0?
if (FCV_PLUS==0)
{
//Switch
//Switch: switch?
switch (FCV_SWITCH)
{
case 1:
{
//Beslut
//Beslut: plusprog=6?
if (FCV_PLUSPROG==6)
{
//Beräkning
//Beräkning:
// plusprog = 1
FCV_PLUSPROG = 1;
} else {
//Beräkning
//Beräkning:
// plusprog = plusprog+1
FCV_PLUSPROG = FCV_PLUSPROG+1;
}
break;
}
case 2:
{
//Beslut
//Beslut: plusspeed=300?
if (FCV_PLUSSPEED==300)
{
//Beräkning
//Beräkning:
// plusspeed = 25
FCV_PLUSSPEED = 25;
} else {
//Beräkning
//Beräkning:
// plusspeed = plusspeed + 25
FCV_PLUSSPEED = FCV_PLUSSPEED + 25;
}
break;
}
}
//Utgång
//Utgång: 1 -> A3
trisa = trisa & 0xf7;
if (1)
porta = (porta & 0xf7) | 0x08;
else
porta = porta & 0xf7;
//Fördröjning
//Fördröjning: 320 ms
delay_ms(255);
delay_ms(65);
//Utgång
//Utgång: 0 -> A3
trisa = trisa & 0xf7;
if (0)
porta = (porta & 0xf7) | 0x08;
else
porta = porta & 0xf7;
}
//Switch
//Switch: switch?
switch (FCV_SWITCH)
{
case 1:
{
//Utgång
//Utgång: 1 -> A0
trisa = trisa & 0xfe;
if (1)
porta = (porta & 0xfe) | 0x01;
else
porta = porta & 0xfe;
//Utgång
//Utgång: 0 -> PORT A
trisa = trisa & 0xf9;
porta = (porta & 0xf9) | (0 & 0x06);
//Fördröjning
//Fördröjning: 120 ms
delay_ms(120);
break;
}
case 2:
{
//Utgång
//Utgång: 1 -> A1
trisa = trisa & 0xfd;
if (1)
porta = (porta & 0xfd) | 0x02;
else
porta = porta & 0xfd;
//Utgång
//Utgång: 0 -> PORT A
trisa = trisa & 0xfa;
porta = (porta & 0xfa) | (0 & 0x05);
//Fördröjning
//Fördröjning: 120 ms
delay_ms(120);
break;
}
default:
{
//Fördröjning
//Fördröjning: 60 ms
delay_ms(60);
}
}
//Beslut
//Beslut: begin=0?
if (FCV_BEGIN==0)
{
//Gå till kopplingspunkt
//Gå till kopplingspunkt: [B]: B
goto FCC_Byteavprogram_B;
}
//Gå till kopplingspunkt
//Gå till kopplingspunkt: [A]: A
goto FCC_Byteavprogram_A;
//Kopplingspunkt
//Kopplingspunkt: [B]: B
FCC_Byteavprogram_B:
;
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Utgång
//Utgång: 0 -> PORT B
trisb = trisb & 0x87;
portb = (portb & 0x87) | (0 & 0x78);
//Fördröjning
//Fördröjning: 150 ms
delay_ms(150);
}
void FCM_Ledprog()
{
//Switch
//Switch: plusprog?
switch (FCV_PLUSPROG)
{
case 1:
{
//Utgång
//Utgång: 1 -> B3
trisb = trisb & 0xf7;
if (1)
portb = (portb & 0xf7) | 0x08;
else
portb = portb & 0xf7;
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
break;
}
case 2:
{
//Utgång
//Utgång: 1 -> B4
trisb = trisb & 0xef;
if (1)
portb = (portb & 0xef) | 0x10;
else
portb = portb & 0xef;
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Från
FCD_LED5_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Från
FCD_LED4_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Från
FCD_LED3_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Från
FCD_LED2_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Från
FCD_LED1_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Från
FCD_LED0_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
break;
}
case 3:
{
//Utgång
//Utgång: 1 -> B3
trisb = trisb & 0xf7;
if (1)
portb = (portb & 0xf7) | 0x08;
else
portb = portb & 0xf7;
//Utgång
//Utgång: 1 -> B4
trisb = trisb & 0xef;
if (1)
portb = (portb & 0xef) | 0x10;
else
portb = portb & 0xef;
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
break;
}
case 4:
{
//Utgång
//Utgång: 1 -> B5
trisb = trisb & 0xdf;
if (1)
portb = (portb & 0xdf) | 0x20;
else
portb = portb & 0xdf;
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A0
trisa = trisa & 0xfe;
if (0)
porta = (porta & 0xfe) | 0x01;
else
porta = porta & 0xfe;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A1
trisa = trisa & 0xfd;
if (0)
porta = (porta & 0xfd) | 0x02;
else
porta = porta & 0xfd;
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A2
trisa = trisa & 0xfb;
if (0)
porta = (porta & 0xfb) | 0x04;
else
porta = porta & 0xfb;
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A7
trisa = trisa & 0x7f;
if (0)
porta = (porta & 0x7f) | 0x80;
else
porta = porta & 0x7f;
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A0
trisa = trisa & 0xfe;
if (0)
porta = (porta & 0xfe) | 0x01;
else
porta = porta & 0xfe;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A1
trisa = trisa & 0xfd;
if (0)
porta = (porta & 0xfd) | 0x02;
else
porta = porta & 0xfd;
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A2
trisa = trisa & 0xfb;
if (0)
porta = (porta & 0xfb) | 0x04;
else
porta = porta & 0xfb;
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A0
trisa = trisa & 0xfe;
if (0)
porta = (porta & 0xfe) | 0x01;
else
porta = porta & 0xfe;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A1
trisa = trisa & 0xfd;
if (0)
porta = (porta & 0xfd) | 0x02;
else
porta = porta & 0xfd;
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> A0
trisa = trisa & 0xfe;
if (0)
porta = (porta & 0xfe) | 0x01;
else
porta = porta & 0xfe;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Kommentar:
//Börja ta isär
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Från
FCD_LED5_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Från
FCD_LED4_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Från
FCD_LED5_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Från
FCD_LED3_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Från
FCD_LED4_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Från
FCD_LED5_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Från
FCD_LED2_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Från
FCD_LED3_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Från
FCD_LED4_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Från
FCD_LED5_LEDOff();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Från
FCD_LED1_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Från
FCD_LED2_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Från
FCD_LED3_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Från
FCD_LED4_LEDOff();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Från
FCD_LED5_LEDOff();
break;
}
case 5:
{
//Utgång
//Utgång: 1 -> B5
trisb = trisb & 0xdf;
if (1)
portb = (portb & 0xdf) | 0x20;
else
portb = portb & 0xdf;
//Utgång
//Utgång: 1 -> B3
trisb = trisb & 0xf7;
if (1)
portb = (portb & 0xf7) | 0x08;
else
portb = portb & 0xf7;
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
break;
}
case 6:
{
//Utgång
//Utgång: 1 -> B4
trisb = trisb & 0xef;
if (1)
portb = (portb & 0xef) | 0x10;
else
portb = portb & 0xef;
//Utgång
//Utgång: 1 -> B5
trisb = trisb & 0xdf;
if (1)
portb = (portb & 0xdf) | 0x20;
else
portb = portb & 0xdf;
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(0)::Lysdiod Till
FCD_LED0_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(5)::Lysdiod Till
FCD_LED5_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(4)::Lysdiod Till
FCD_LED4_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(3)::Lysdiod Till
FCD_LED3_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(2)::Lysdiod Till
FCD_LED2_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
//Utgång
//Utgång: 0 -> PORT A
trisa = 0x00;
porta = 0;
//Anropa komponentmakro
//Anropa komponentmakro: LED(1)::Lysdiod Till
FCD_LED1_LEDOn();
//Fördröjning
//Fördröjning: plusspeed ms
delay_ms(FCV_PLUSSPEED);
break;
}
}
}
void main()
{
//Initiering
cmcon = 0x07;
//Avbrottsinitieringskod
option_reg = 0xC0;
//Avbrott
//Avbrott: Koppla till RB0INT
st_bit(option_reg,INTEDG);
st_bit(intcon,GIE);
st_bit(intcon, INTE);
//Beräkning
//Beräkning:
// plusprog = 1
// plusspeed = 25
FCV_PLUSPROG = 1;
FCV_PLUSSPEED = 25;
//Loop
//Loop: While1
while (1)
{
//Anropsmakro
//Anropsmakro: Ledprog
FCM_Ledprog();
}
mainendloop: goto mainendloop;
}
void MX_INTERRUPT_MACRO(void)
{
//Handler code for [RB0INT]
if (ts_bit(intcon, INTF) && ts_bit(intcon, INTE))
{
FCM_Byteavprogram();
cr_bit(intcon, INTF);
}
}
OBS! stäng av ljudet... dryg låt...
Youtube klipp
Jag tänkte lägga upp lite mer PIC projekt här sen när man börjar få lite mer grepp.