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

来源:本站
导读:目前正在解读《PIC16F877单片机与PC机通讯的汇编程序》的相关信息,《PIC16F877单片机与PC机通讯的汇编程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC16F877单片机与PC机通讯的汇编程序》的详细说明。
简介:PIC16F877单片机与PC机通讯的汇编程序,供学习参考!!

;PIC16F877单片机程序LIST      P=16F876#INCLUDE    P16F876.INCCBLOCK 0X24COUNT  TEMPENDC      ORG  0X0000      NOPSTART  GOTO  MAIN      ORG      0X020MAIN  MOVLW  0X30            ;将RAM单元初始化      MOVWF  FSR      BCF      STATUS,RP0      MOVLW  0X22      MOVWF  COUNTINTRAM  MOVF  COUNT,0      MOVWF  INDF      INCF      COUNT,1      INCF      FSR,1      BTFSS  FSR,7      GOTO  INTRAM      BANKSEL  TXSTA        ;波特率设置为9 600 bps      MOVLW  0X19      MOVWF  SPBRG        ;异步高速方式      MOVLW  0X04      MOVWF  TXSTA      BCF  STATUS,RP0      MOVLW  0X80            ;串行口使能      MOVWF  RCSTA      MOVLW  0X30      MOVWF  FSR      BSF      RCSTA,CREN      ;接收允许      BSF      STATUS,RP0      BSF      TXSTA,TXEN      ;发送允许      BCF      STATUS,RP0WAIT  BTFSS  PIR1,RCIF      ;接收PC机命令      GOTO  WAIT      MOVF  RCREG,0      MOVWF  TEMP      MOVWF  INDF      INCF  FSR      DECFSZ  TEMP        ;接收到的数据为1,则接收      GOTO  TXW            ;否则发送数据      MOVLW  0X06      MOVWF  TEMPWAIT1  BTFSS  PIR1,RCIF      ;接收一个数据      GOTO  WAIT1      MOVF  RCREG,0      MOVWF  COUNT      MOVWF  TXREGLOOPTX  BTFSS  PIR1,TXIF      ;将接收到的数据送回PC机      GOTO  LOOPTX      MOVF  COUNT,0      MOVWF  INDF        INCF      FSR      DECFSZ  TEMP      GOTO  WAIT1      GOTO  OVER        ;处理完毕TXW      MOVLW  0X09            ;向PC机发送9个数据      MOVWF  TEMP      MOVLW  0X30      MOVWF  FSRTXW0  MOVF  INDF,0      MOVWF  TXREG      INCF      FSRTXW1  BTFSS  PIR1,TXIF      GOTO  TXW1      DECFSZ  TEMP      GOTO  TXW0  OVER  BCF      RCSTA,CREN      ;通信任务完成,关接受和发送允许      BSF      STATUS,RP0      BCF      TXSTA,TXEN      BCF      STATUS,RP0      CALL  LED            ;调用显示子程序,将发送(或接收)的数据显示出来      END                  ;程序完PC 机程序PC采用Toubr C 进行编写。程序如下:#include<stdio.h>#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("ttsend data or receive data: (s or r?)nnn");  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;    while(!(inportb(port+5)&0x20))    delay(100);                  /*发送保持器满,等待*/    outportb(port,a);              /*发送a*/    printf("%dn",a);              /*显示a*/    while(!(inport(port+5)&1));        /*接收单片机送回的数据*/    ch=inport(port);              /*保存*/    }    delay(10);    for(j=0;j<8;j++)              /*显示接收的回送数据*/    printf("n%dn",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 %dn",ch[j]);    getch();    break;    }    }  }}

提醒:《PIC16F877单片机与PC机通讯的汇编程序》最后刷新时间 2024-03-14 01:00:17,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC16F877单片机与PC机通讯的汇编程序》该内容的真实性请自行鉴别。