pc计算机与单片机串口通信源程序

来源:本站
导读:目前正在解读《pc计算机与单片机串口通信源程序》的相关信息,《pc计算机与单片机串口通信源程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《pc计算机与单片机串口通信源程序》的详细说明。
简介:下面是一个单片机与PC机通信的程序,pc机程序用c语言来编写,单片机程序用汇编语言来编写

pc计算机与单片机串口通信源程序

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

1. 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[i];

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

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

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

printf("%dn",a); /*显示a*/

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

ch[i]=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;

}

}

}

}

2. 单片机与PC机通信之单片机程序

LIST P=16F876

#INCLUDE P16F876.INC

CBLOCK 0X24

COUNT

TEMP

ENDC

ORG 0X0000

NOP

START GOTO MAIN

ORG 0X020

MAIN MOVLW 0X30 ;将RAM单元初始化

MOVWF FSR

BCF STATUS,RP0

MOVLW 0X22

MOVWF COUNT

INTRAM 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,RP0

WAIT BTFSS PIR1,RCIF ;接收PC机命令

GOTO WAIT

MOVF RCREG,0

MOVWF TEMP

MOVWF INDF

INCF FSR

DECFSZ TEMP ;接收到的数据为1,则接收

GOTO TXW ;否则发送数据

MOVLW 0X06

MOVWF TEMP

WAIT1 BTFSS PIR1,RCIF ;接收一个数据

GOTO WAIT1

MOVF RCREG,0

MOVWF COUNT

MOVWF TXREG

LOOPTX 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 FSR

TXW0 MOVF INDF,0

MOVWF TXREG

INCF FSR

TXW1 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计算机与单片机串口通信源程序》最后刷新时间 2024-03-14 01:01:47,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《pc计算机与单片机串口通信源程序》该内容的真实性请自行鉴别。