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

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

1. 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;

}

}

}

}

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                        ;程序完

单片机串口通信c语言程序,pc计算机与单片机串口通信源程序相关推荐

  1. 51单片机串口通讯c语言程序,如何使用51单片机实现串口通信

    描述 STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信.串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口. 51单片机的串口引脚为P3.0引脚与P3.1引脚 ...

  2. at89c52串口通信c语言程序,AT89C52DEMO 基于51单片机的(89C51/52)C语言源码例程 - 下载 - 搜珍网...

    例程与源码/12864带字库测试程序/12864 例程与源码/12864带字库测试程序/12864.hex 例程与源码/12864带字库测试程序/12864.lnp 例程与源码/12864带字库测试程 ...

  3. 单片机定时报警C语言程序,求一个51单片机定时闹钟程序。要C语言。能够调时间...

    我来发一个C语言211351单片机时钟程序,希望5261能帮到你/* 程序功能:4102带定时闹铃时钟                                      *//*------- ...

  4. 简易电子钟c语言程序,(最新整理)基于51单片机的电子钟C语言程序

    <(最新整理)基于51单片机的电子钟C语言程序>由会员分享,可在线阅读,更多相关<(最新整理)基于51单片机的电子钟C语言程序(9页珍藏版)>请在人人文库网上搜索. 1.完整) ...

  5. 单片机c 语言0-99,单片机“0~99”加法计数器程序的设计51单片机原理及应用.doc...

    单片机"0~99"加法计数器程序的设计51单片机原理及应用 课 程 设 计 课程名称51单片机原理及应用题目名称单片机"0~99"加法计数器程序设计专业班级学生 ...

  6. AT89C51单片机流水灯c语言程序及详解(扫盲教程)

    AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...

  7. 51单片机的电子钟c语言程序,基于51单片机的电子钟C语言程序

    基于单片机C语言的电子钟程序代码与仿真 基于51单片机的电子钟C语言程序: 程序代码 #include #include #define uchar unsigned char #define uin ...

  8. 单片机与gsm通信c语言,gsm模块如何与单片机通信?

    51单片机与GSM模块实现通信 1.检测串口线的好坏 1)将串口线插在电脑上,用短路子短接串口的2脚和3脚 2)打开串口调试助手 3)点击自动发送,在自动发送的窗口中随便发个数据,看看能不能接收到若能 ...

  9. 电子时钟单片机c语言程序,51单片机电子时钟C语言程序

    本程序基于ATM89系列单片机的电子时钟C语言程序,能显示月日时分秒,同时还能调节其值!显示方式用六个8段数码管! #include//头文件 #define uchar unsigned char/ ...

  10. C语言程序判断计算机的CPU大小端

    如何判断一台计算机的CPU是大端还是小字端对齐呢? 那么首先得了解何为大端,何为小端,明确一下概念. 所谓大端模式,是指字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中. 小端格式:与大 ...

最新文章

  1. WF4.0实战(六):控制WPF动画
  2. 这是人家大一新生开发的工具!网友:我好菜
  3. 三层学习------实践篇
  4. 表的插入、更新、删除、合并操作_17_按照条件删除表中记录
  5. ih5长图如何滑动_长图怎么一键截取?这样做很简单
  6. 关于C编程的一点感受
  7. android 横向铺满,Android开发全程记录(八)——设置ImageView显示的图片铺满全屏(适应魅族等不常见屏幕比例)...
  8. 【TensorFlow】conv2d函数参数解释以及padding理解
  9. 修饰类方法(静态方法)
  10. 记录一些js面试题以及解法
  11. mac安装rstudio_在Windows / Linux / Mac OS上安装R和RStudio入门
  12. hdu-1711(hash)
  13. Asp.net 面向接口可扩展框架之业务规则引擎扩展组件
  14. sql如何在两张表中得到每组数据,并知道数据的个数,举例,判断有多少班级,每个班的人数
  15. 通过ffmpeg生成AAC数据
  16. 关于周期性学习率(Cyclical Learning Rate, CLR)
  17. iphone开发之仿微信用户引导界面的实现
  18. Django自定义Storage实现图片上传至各大OSS(上篇)
  19. MySQL下执行*.sql文件
  20. 什么才是好的手持产品?

热门文章

  1. 什么是Hadoop以及Hadoop集群
  2. idear修改新的git地址
  3. LeetCode | 665. Non-decreasing Array
  4. 在Blender中使用代码控制人物模型的头部姿态 - 代码实践Dlib版本
  5. 北京精雕SurfMill8.0 智能电极加工
  6. 英国易捷航空遭黑客入侵 约900万客户数据被窃取
  7. arcgis 属性表 汇总_最常用的GIS数据汇总
  8. 【linux技术】记一次虚拟机vmware里 Centos7开机故障:sd 0:0:0:0: [sda] Assuming drive cache: write through
  9. FlinkSQL 读写 MySQL
  10. bootstrap btn 按钮颜色 class=btn btn-success