mikroPascal och PIC16F874
Postat: 21 maj 2023, 03:13:21
Förutsättningar:
Har licens på mikroPascal v7.5.0
MPLAB IPE v6.10
RealTerm 2.0.0.70
Delmål
Att få till text "Hej" dyker upp i RealTerm.
Hårdvara
PicKIT4 Elschema PCB Programkoden klippt och klistrad från hjälpfilen.
Slutmålet för detta projekt är att få till en matris av tryckströmbrytare som mjukvarumässigt länkas till att sända ut olika DCC kommandon över XpressNet protokollet.
Men först måste jag få igång in och ut data över seriellkortet, så vad har jag gjort för fel?
Har licens på mikroPascal v7.5.0
MPLAB IPE v6.10
RealTerm 2.0.0.70
Delmål
Att få till text "Hej" dyker upp i RealTerm.
Hårdvara
PicKIT4 Elschema PCB Programkoden klippt och klistrad från hjälpfilen.
Kod: Markera allt
program DCC_keypad;
(*
+-----------___------------+
| |
MCLR/VPP * 1 PGD 40* RB7/PGD
RA0/AN0 * 2 RS485 #4 PGC 39* RB6/PGC
RA1/AN1 * 3 RS485 #1 TX RS232 38* RB5
RA2/AN2/VREF- * 4 RS485 #2&3 RX RS232 37* RB4
RA3/AN3/VREF+ * 5 PGM 36* RB3/PGM
RA4/T0CKI * 6 CTS RS232 35* RB2
RA5/AN4/SS * 7 34* RB1
RE0/RD/AN5 * 8 33* RB0/INT
RE1/WR/AN6 * 9 RS232 5+/VDD 32* VDD
RE2/CS/AN7 *10 RS232 GND/VSS 31* VSS
VDD *11 VDD 30* RD7PSP7
VSS *12 VSS 29* RD6/PSP6
OCS1/CLKIN *13 OCS 28* RD5/PSP5
OSC2/CLKOUT *14 OSC 27* RD4/PSP4
RC0/T1OSO/T1CKI *15 26* RC7/RX/DT
RC1/T1OSI/CCP2 *16 25* RC6/TX/CK
RC2/CCP1 *17 24* RC5/SDO
RC3/SCK/SCL *18 23* RC4/SDI/SDA
RD0/PSP0 *19 22* RD3/PSP3
RD1/PSP1 *20 21* RD2/PSP2
| PIC16F874 |
+--------------------------+
*)
//Soft_UART;
var error : byte;
counter, byte_read : byte; // Auxiliary variables
{
var rs485_rxtx_pin : sbit at RC2_bit; // set transcieve pin
rs485_rxtx_pin_direction : sbit at TRISC2_bit; // set transcieve pin direction
}
{ Declarations section }
begin
{ Main program }
//Soft_UART -------------------------------------;
//ANSEL := 0; // Configure AN pins as digital I/O
//ANSELH := 0;
TRISC := 0x00; // Set PORTC as output (error signalization)
PORTC := 0; // No error
//function Soft_UART_Init(var port : byte; rx_pin, tx_pin, baud_rate : dword, inverted : byte): byte;
error := Soft_UART_Init(PORTB,4,5,110,0); // Initialize Soft UART at 110 bps
if (error > 0) then
begin
PORTC := error; // Signalize Init error
while (TRUE) do nop; // Stop program
end;
Delay_ms(500);
for counter := 'z' downto 'A' do // Send bytes from 'z' downto 'A'
begin
Soft_UART_Write(counter);
Delay_ms(500);
end;
while TRUE do // Endless loop
begin
byte_read := Soft_UART_Read(error); // Read byte, then test error flag
if (error <> 0) then // If error was detected
PORTC := error // signal it on PORTB
else
Soft_UART_Write(byte_read); // If error was not detected, return byte read
end;
//Soft_UART -------------------------------------;
end.
Men först måste jag få igång in och ut data över seriellkortet, så vad har jag gjort för fel?