
Re: Писане на С за PIC16f84
дефайните на цялата периферия за PIC18 за mcc18,
са прекарани през едно условие
#ifdef USE_OR_MASKS
като ето едно добро обяснение:
The USE_OR_MASKS is something that *you* choose, in order to move between "old-microchip-style" of combining constants with "&" and the new style (also Microsoft etc style...) that uses "|" for that goal.
It won't probably make any difference on your issue, and from what you say it looks like a bug in the header files for that PIC...
оттук
https://www.microchip.com/forums/m620347-print.aspxИнтересно че в няколко стари проекта , и аз съм си ги позлвал с &, по подобие на екзампълите
и не ми беше направило впечатление
ето и нещо от хелпа оттук "file:///C:/mcc18/doc/periph-lib/USART.htm" , където е инсталиран mcc18 съответно на локалния комп.
Example Use of the USART Routines with OR mask:
#include <p18C452.h>
#define USE_OR_MASKS
#include <usart.h>
void main(void)
{
// configure USART
OpenUSART( USART_TX_INT_OFF |
USART_RX_INT_OFF |
USART_ASYNCH_MODE |
USART_EIGHT_BIT |
USART_CONT_RX |
USART_BRGH_HIGH,25 );
while(1)
{
while( ! PORTAbits.RA0 ); //wait for RA0 high
WriteUSART( PORTD ); //write value of PORTD
if(PORTD == 0x80) // check for termination
break; // value
}
CloseUSART();
}