Tänkte prova på pic18 så jag har köpte ett antal pic18f14k50.
Började med att blinka en LED men får det inte att funka precis som jag vill. Har fattat att det är LATC som gäller för output på pic18.
Om jag skriver till en specifik pinne fungerar det men inte om jag försöker sätta om hela porten.
Om jag sätter om porten så lyser dioden hela tiden men flimrar till när den ska släckas.
Kod:
Kod: Markera allt
#include <stdio.h>
#include <stdlib.h>
#include <delays.h>
// PIC18F14K50 Configuration Bit Settings
#include <xc.h>
//#pragma config CONFIG1L = 0x0
__CONFIG(1, CPUDIV_NOCLKDIV & USBDIV_OFF);
//#pragma config CONFIG1H = 0x28
__CONFIG(2, FOSC_IRC & PLLEN_OFF & PCLKEN_ON & FCMEN_OFF & IESO_OFF);
//#pragma config CONFIG2L = 0x3F
__CONFIG(3, PWRTEN_OFF & BOREN_SBORDIS & BORV_19);
//#pragma config CONFIG2H = 0x1E
__CONFIG(4, WDTEN_OFF & WDTPS_32768);
//#pragma config CONFIG3H = 0x88
__CONFIG(5, HFOFST_ON & MCLRE_ON);
//#pragma config CONFIG4L = 0x85
__CONFIG(6, STVREN_ON & LVP_ON & BBSIZ_OFF & XINST_OFF);
//#pragma config CONFIG5L = 0x3
__CONFIG(7, CP0_OFF & CP1_OFF);
//#pragma config CONFIG5H = 0xC0
__CONFIG(8, CPB_OFF & CPD_OFF);
//#pragma config CONFIG6L = 0x3
__CONFIG(9, WRT0_OFF & WRT1_OFF);
//#pragma config CONFIG6H = 0xE0
__CONFIG(10, WRTC_OFF & WRTB_OFF & WRTD_OFF);
//#pragma config CONFIG7L = 0x3
__CONFIG(11, EBTR0_OFF & EBTR1_OFF);
//#pragma config CONFIG7H = 0x40
__CONFIG(12, EBTRB_OFF);
void init()
{
TRISC = 0x0; // All output
LATC = 0; // Clear PORTC output latch.
ANSEL = 0; // All analog inputs are disabled and made digital.
ANSELH = 0;
}
int main(int argc, char** argv) {
init();
while (1)
{
LATCbits.LATC7 = 1;
//LATC = 0x0;
Delay10KTCYx(25);
LATCbits.LATC7 = 0;
//LATC = 0xff;
Delay10KTCYx(25);
}
return (EXIT_SUCCESS);
}
Om man kommenterar ut LATSbits och avkommenterar LATC så fungerar det inte.
Nån som har nåt förslag?