文档库 最新最全的文档下载
当前位置:文档库 › PIC16F877单片机与PC机通讯的程序

PIC16F877单片机与PC机通讯的程序

PIC16F877单片机与PC机通讯的程序
PIC16F877单片机与PC机通讯的程序

PIC16F877单片机与PC机通讯的汇编程程序

PC 机程序

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

#include

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

int ch[15];

main ()

{

int a;

int i,j;

int b[6]={88,15,38,26,20,0};

char c;

clrscr();

outportb(port+3,0x80); /*准备设置波特率*/

outportb(port,0x0C); /*波特率设置为9 600 bps*/

outportb(port+1,0x00);

outportb(port+3,0x03); /*8位数据位,奇偶检验,1位停止位*/ outportb(port+1,0x00); /*关中断*/

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

{

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(port,0x01); /*否则发送数据01通知单片机准备接收*/ for(i=0;i<6;i++) /*共发送6个数据*/

{

a=b[i];

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

delay(100); /*发送保持器满,等待*/

outportb(port,a); /*发送a*/

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

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

ch[i]=inport(port); /*保存*/

}

delay(10);

for(j=0;j<8;j++) /*显示接收的回送数据*/

printf("\n%d\n",ch[j]);

getch();

break;

}

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

case'R':

{

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

outportb(port,0x02); /*发送数据02通知单片机发送数据*/ for(j=0;j<9;j++) /*共接收9个数据*/

{

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

ch[j]=inportb(port);

}

for(j=0;j<9;j++)

printf("\n %d\n",ch[j]);

getch();

break;

}

}

}

相关文档