c51_8259.c

来自「PC机与单片机之间进行通讯连接的C51代码和PC机的VC++代码」· C语言 代码 · 共 102 行

C
102
字号
#include<reg51.h>

#define P8259A XBYTE[0x00FE]

#define P8259B XBYTE[0x00FF]

void int_IR0();

void int_IR1();

...

void int_IR7();

void main()

{

P8259A=0x16; /*ICW1送8259*/

P8259B=0x21; /*ICW2送8259*/

EA=1; /*开所有中断*/

EX0=1; /*开INT0中断*/

IT0=1; /*令INT0为边沿触发*/

for(;;); /*等待中断*/

}

 

void int_8259(void) using 2 interrupt 0 /*INT0中断,使用第二组寄存器*/

{

unsigned char int_add_l;

unsigned char int_add_h;

int_add=P8259A; /*读CALL操作码,丢弃*/

int_add_l=P8259A; /*读低8位中断矢量*/

int_add_h=P8259A; /*读高8位中断矢量*/

/*因为高8位中断矢量相同,所有只要判断低8位中断矢量*/

switch(int_add_l){

case 0x00 :

int_IR0();

break;

case 0x04 :

int_IR1();

break;

...

case 0x1c:

int_IR7();

break;

default:

break;

}

}

void int_IR0()

{

.....

P8259A=0x20H; /*非指定EOI命令送8259*/

 

}

void int_IR1()

{

......

P8259A=0x20H;

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?