一个单片机与PC机通信的程序,pc机程序用c语言来编写,单片机程序用汇编语言来编写

1. PC机编程PC采用Toubr C 进行编写。程序如下:#include#defineport0x3f8int 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);outportb(port+1,0x00);outportb(port+3,0x03);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);for(i=0;i<6;i++){a=b[i];while(!(inportb(port+5)&0x20))delay(100);outportb(port,a);printf("%d\n",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);for(j=0;j<9;j++){while(!(inportb(port+5)&1));ch[j]=inportb(port);}for(j=0;j<9;j++)printf("\n %d\n",ch[j]);getch();break;}}}}2. 单片机与PC机通信之单片机程序LISTP=16F876#INCLUDEP16F876.INCCBLOCK 0X24COUNTTEMPENDCORG0X0000NOPSTARTGOTOMAINORG0X020MAINMOVLW0X30;将RAM单元初始化MOVWFFSRBCFSTATUS,RP0MOVLW0X22MOVWFCOUNTINTRAMMOVFCOUNT,0MOVWFINDFINCFCOUNT,1INCFFSR,1BTFSSFSR,7GOTOINTRAMBANKSELTXSTA;波特率设置为9 600 bpsMOVLW0X19MOVWFSPBRG;异步高速方式MOVLW0X04MOVWFTXSTABCFSTATUS,RP0MOVLW0X80;串行口使能MOVWFRCSTAMOVLW0X30MOVWFFSRBSFRCSTA,CREN;接收允许BSFSTATUS,RP0BSFTXSTA,TXEN;发送允许BCFSTATUS,RP0WAITBTFSSPIR1,RCIF;接收PC机命令GOTOWAITMOVFRCREG,0MOVWFTEMPMOVWFINDFINCFFSRDECFSZTEMP;接收到的数据为1,则接收GOTOTXW;否则发送数据MOVLW0X06MOVWFTEMPWAIT1BTFSSPIR1,RCIF;接收一个数据GOTOWAIT1MOVFRCREG,0MOVWFCOUNTMOVWFTXREGLOOPTXBTFSSPIR1,TXIF;将接收到的数据送回PC机GOTOLOOPTXMOVFCOUNT,0MOVWFINDFINCFFSRDECFSZTEMPGOTOWAIT1GOTOOVER;处理完毕TXWMOVLW0X09;向PC机发送9个数据MOVWFTEMPMOVLW0X30MOVWFFSRTXW0MOVFINDF,0MOVWFTXREGINCFFSRTXW1BTFSSPIR1,TXIFGOTOTXW1DECFSZTEMPGOTOTXW0OVERBCFRCSTA,CREN;通信任务完成,关接受和发送允许BSFSTATUS,RP0BCFTXSTA,TXENBCFSTATUS,RP0CALLLED;调用显示子程序,将发送(或接收)的数据显示出来END;程序完

推荐内容