dos下串口通信编程

dos下串口通信编程

ID:41033201

大小:60.00 KB

页数:5页

时间:2019-08-14

dos下串口通信编程_第1页
dos下串口通信编程_第2页
dos下串口通信编程_第3页
dos下串口通信编程_第4页
dos下串口通信编程_第5页
资源描述:

《dos下串口通信编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、中断向量表INT(Hex)IRQCommonUses080SystemTimer091Keyboard0A2Redirected0B3SerialComms.COM2/COM40C4SerialComms.COM1/COM30D5Reserved/SoundCard0E6FloppyDiskController0F7ParallelComms.708RealTimeClock719Reserved7210Reserved7311Reserved7412PS/2Mouse7513MathsCo-Processor7614HardDiskDrive7715Reserved 

2、 通过编写COM对应的中断服务程序,我们也可以操作串口,涉及到的相关函数有:  (1)设置中断向量表/*dos.h*/void_Cdeclsetvect(intinterruptno,voidinterrupt(*isr)());  例如,COM3对应的中断号是4,那么对应中断向量表中的地址是0x0C,设置0x0C对应中断程序的函数为:setvect(0x0C,PORT1INT);  其中的中断服务程序PORT1INT为:voidinterruptPORT1INT(){ intc; do {  c=inportb(PORT1+5);  if(c&1)  {   buff

3、er[bufferin]=inportb(PORT1);   bufferin++;   if(bufferin==1024)    bufferin=0;  } } while(c&1);  outportb(0x20,0x20);}  上述中断服务程序检查是否有字符可接收,其后将其通过inportb(PORT1)语句将其从UART中读出并放入输入buffer。持续的检查UART,以便能在一次中断里读取所有可获得的数据。  最后的"outportb(0x20,0x20);"语句告诉可编程中断控制器(ProgrammableInterruptController,PIC

4、)中断已经完成。  (2)读取中断向量表/*dos.h*/voidinterrupt(*_Cdeclgetvect(intinterruptno))();  例如:oldport1isr=getvect(INTVECT);  其中的oldport1isr定义为:voidinterrupt(*oldport1isr)();  我们融合setvect()函数、中断服务程序和getvect()函数,给出一个由CraigPeacock编写的完备例程:/*Name:SampleComm'sProgram-1024ByteBuffer-buff1024.c*//*WrittenBy

5、:CraigPeacock*/#include#include#include#definePORT10x3F8/*PortAddressGoesHere*/#defineINTVECT0x0C/*ComPort'sIRQhere(MustalsochangePICsetting)*//*DefinesSerialPortsBaseAddress*//*COM10x3F8*//*COM20x2F8*//*COM30x3E8*//*COM40x2E8*/intbufferin=

6、0;intbufferout=0;charch;charbuffer[1025];voidinterrupt(*oldport1isr)();voidinterruptPORT1INT()/*InterruptServiceRoutine(ISR)forPORT1*/{ intc; do {  c=inportb(PORT1+5);  if(c&1)  {   buffer[bufferin]=inportb(PORT1);   bufferin++;   if(bufferin==1024)   {    bufferin=0;   }  } } while(c&1)

7、;  outportb(0x20,0x20);}voidmain(void){ intc; outportb(PORT1+1,0);/*Turnoffinterrupts-Port1*/ oldport1isr=getvect(INTVECT);/*SaveoldInterruptVectoroflater recovery*/ setvect(INTVECT,PORT1INT);/*SetInterruptVectorEntry*/ /*COM1-0x0C*/ /*COM2-0x0B*/ /*COM3-0x0C*/ /*COM4-0x0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。