Agilent Technologies 34401A User Manual

Page 200

Advertising
background image

#define IRQ4_int 0xC

/* IRQ4 interrupt vector number */

#define IRQ4_enab 0xEF /* IRQ4 interrupt controller enable mask */

#define INT_controller 0x20 /* 8259 Interrupt controller address */

#define End_of_interrupt 0x20

/* Non-specific end of interrupt command */

void interrupt int_char_in(void);

void send_ctlc(void);

#define INT_BUF_size 9000

char int_buf[INT_BUF_size], *int_buf_in = int_buf, *int_buf_out = int_buf;

unsigned int int_buf_count = 0;

unsigned char int_buf_ovfl = 0;

int main(int argc, char *argv[])

{

void interrupt (*oldvect)();

char command[80], c;

int i;

oldvect = getvect(IRQ4_int);

/* Save old interrupt vector */

setvect(IRQ4_int,int_char_in); /* Set up new interrupt handler */

bioscom(0,BAUD9600 | EVEN_7,0); /* Initialize settings for COM1 */

outportb(MCR,0x9);

/* Enable IRQ buffer, DTR = 1 */

outportb(IER,0x1);

/* Enable UART data receive interrupt */

/* Enable IRQ4 in 8259 interrupt controller register */

outportb(INT_controller+1,inportb(INT_controller+1) & IRQ4_enab);

do {

if(int_buf_ovfl) {

printf("\nBuffer Overflow!!!\n\n");

int_buf_in = int_buf_out = int_buf;

int_buf_count = int_buf_ovfl = 0;

}

RS-232 Operation Using Turbo C

(continued)

Continued on next page

>

Chapter 6 Application Programs
RS-232 Operation Using Turbo C

194

Advertising