--------------8<-------------------
Kod: Markera allt
#include <htc.h>
#include <pic16f62xa.h>
__CONFIG(UNPROTECT & LVPDIS & BORDIS & MCLREN & WDTDIS & PWRTDIS & INTIO);
void send(char letter) {
TXREG = letter;
while (!TRMT) {
// Delay until sent
}
}
void message(void) {
char msg[] = "16F628A on the air.";
char *p = msg;
while (*p++) {
send(*p);
}
}
void main() {
char tmp = 0;
// Asynch USART, BRGH = 1, Baud = 9600, Error = 0.16%, SPBRG = 25
// 8n1
// LSB first
TRISA = 0;
TRISB = 0b00000010; // Setup RX/TX-pins
SPBRG = 0x19;
TXSTA = 0b00100100; // Asynch TX + BRGH
RCSTA = 0b10010000; // Asynch RX + SPEN
while (--tmp > 0) {
// Short delay to enable proper startup
}
// Flush receive buffer
tmp = RCREG;
tmp = RCREG;
tmp = RCREG;
message();
send('Y');
send('o');
while (1) {
if (RCIF) {
tmp = RCREG;
tmp += 1;
send(tmp);
}
}
}
Drog sen igång HyperTerminal, ställde in 9600 baud, 8 bitar och ingen stoppbit, och hoppades sen vid kretsens påslagning få se "16F628A on the air." på skärmen, men så lätt kom jag tydligen inte undan. Ingenting dyker upp på skärmen, men om jag vidrör TX-pinnen på PIC:en så sprutar det upp massa skräptecken på skärmen, så någon sorts kontakt finns iallafall.
Jag har trippelkollat kopplingarna men hittar inga fel. Har även från PIClist's inrådan provat att byta kabel till RX/TX då detta tydligen hjälpte vid ett tillfälle, men här är det resultatslöst.
Förslag på felkälla?
EDIT: Lade till code-tagg.