📄 f_10_4_echo_int.c
字号:
#include "config.h"
#include "serial.c"
// use interrupts to read character from serial port,
// increment, echo it back
//prototypes
char getch (void);
void putch (char c);
// return 8 bit char from Recieve port
char getch ()
{
// check RCIF bit
while (!RCIF);
return(RCREG);
}
// send 8 bit char to Recieve port
void putch (char c)
{
// wait until transmit reg empty
while (!TXIF);
TXREG = c;
}
volatile char received_char;
volatile unsigned int got_char_flag;
// interrupt service routine
#if defined(HI_TECH_C)
void interrupt pic_isr(void)
#endif
#if defined(__18CXX)
#pragma interrupt pic_isr
void pic_isr(void)
#endif
{
// see if this interrupt was generated
// by a receive character
if (RCIF) {
// reading RCREG clears interrupt bit
received_char = RCREG;
got_char_flag = 1;
}
}
void main(void)
{
unsigned char c;
// init serial port
// 19200 in HSPLL mode, crystal = 7.3728 MHz
serial_init(95,1);
// enable interrupts
IPEN = 0; // priorities disabled
RCIE = 1; // receive interrupt enable
PEIE = 1; // perpherial interrupts enabled
GIE = 1; // global interrupts enabled
while(1) {
// wait for interrupt
while (!got_char_flag);
c = received_char;
got_char_flag =0; // clear flag
c++; // increment Char
putch (c); // send the char
}
}
//for MCC18, place the interrupt vector goto
#if defined(__18CXX)
#if defined(HIGH_INTERRUPT)
#pragma code HighVector=HIGH_INTERRUPT
#else
#pragma code HighVector=0x0008
#endif
void HighVector (void)
{
_asm goto pic_isr _endasm
}
#pragma code
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -