- 论坛徽章:
- 0
|
[!求助!] 纯DOS 下串口中断程序
- void interrupt CommIntHandle1(void)
- {
- unsigned char Temp; int IntType;
- IntType = inportb((CommDri[0].PortPara).IntIndPort);
- while(1){
- switch(IntType){
- case 2:/*发送数据*/
- break;
- case 4:/*接收数据*/
- if((inportb((CommDri[0].PortPara).StatusPort)&0x01)!=0x01) break;
- Temp = inportb((CommDri[0].PortPara).DataPort);
- if((CommDri[0].RcvQueue).Tail==((CommDri[0].RcvQueue).Head+1)%QUEUE_MAX_LEN)
- (CommDri[0].RcvQueue).Tail = ((CommDri[0].RcvQueue).Tail+1)%QUEUE_MAX_LEN;
- (CommDri[0].RcvQueue).Data[(CommDri[0].RcvQueue).Head] = Temp;
- (CommDri[0].RcvQueue).Head = ((CommDri[0].RcvQueue).Head+1)%QUEUE_MAX_LEN;
- break;
- default:break;
- }
- /*判断有无更低级的中断需处理*/
- IntType = inportb((CommDri[0].PortPara).IntIndPort);
- if(IntType==1) break;
- }
- outportb(0x20,0x20);
- }
复制代码 |
|