[讨论] 通用同步/异步通信的应用(3)

rain   2006-7-15 18:36 楼主

 单片机与PC机通信

1  PC机编程

PC采用Toubr C 进行编写。程序如下:

#include<stdio.h>

#define    port    0x3f8                    /*利用串口1进行通信*/

int ch[15]

main ()

{

  int a

  int ij

  int b[6]={88153826200}

  char c

  clrscr()

  outportb(port+30x80)               /*准备设置波特率*/

  outportb(port0x0C)                  /*波特率设置为9600bps*/

  outportb(port+10x00)

  outportb(port+30x03)               /*8位数据,无奇偶检验,1位停止位*/

  outportb(port+10x00)               /*关中断*/

  inportb(port+5)                           /*读一次线路状态寄存器,使其复位*/

  for(;;){

    printf("\t\tsend data or receive data: (s or r?)\n\n\n")

    c=getchar()

     switch(c) {

       case 's':

       case 'S': {

         while(!(inportb(port+5)&0x20))/*发送保持器满则等待*/

         outportb(port0x01)             /*否则发送数据01,通知单片机准备接收*/

         for(i=0i<6i++){                  /*共发送6个数据*/

                a=b

                while(!(inportb(port+5)&0x20)) delay(100)/*发送保持器满,等待*/

                outportb(porta)                 /*发送a*/

                printf("%d\n"a)                 /*显示a*/

                while(!(inport(port+5)&1))    /*接收单片机送回的数据*/

                ch=inport(port)                 /*保存*/

  }

         delay(10)

         for(j=0j<8j++)    printf("\n%d\n"ch[j])/*显示接收的回送数据*/

         getch()

         break

       }

       case'r':                                              /*接收数据*/

       case'R':{

          while(!(inportb(port+5)&0x20))

           outportb(port0x02)               /*发送数据02,通知单片机发送数据*/

           for(j=0j<9j++) {                   /*共接收9个数据*/

            while(!(inportb(port+5)&1))

           ch[j]=inportb(port)

           }

           for(j=0j<9j++) printf("\n %d\n"ch[j])

           getch()

           break

           }

     }

   }

 }

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复