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

发布者:chenxiaohong68最新更新时间:2012-11-27 来源: 21ic 关键字:PIC16F877  单片机  PC机通讯 手机看文章 扫描二维码
随时随地手机看文章

;PIC16F877单片机程序
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 机程序
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?) ");
  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 ",a);               /*显示a*/
    while(!(inport(port+5)&1));         /*接收单片机送回的数据*/
    ch[i]=inport(port);               /*保存*/
    }
    delay(10);
    for(j=0;j<8;j++)               /*显示接收的回送数据*/
    printf(" %d ",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(" %d ",ch[j]);
     getch();
     break;
     }
    }
  }
}

关键字:PIC16F877  单片机  PC机通讯 引用地址:PIC16F877单片机与PC机通讯的汇编程序

上一篇:基于PIC16F877A的方波信号发生器电路设计
下一篇:PIC16F877A控制DS18B20汇编程序

推荐阅读最新更新时间:2024-03-16 13:14

MEGA8单片机驱动LCD1602液晶
个头文件,搞了好久都没成功!都快到心灰意冷的边缘了,突然灵光一闪:会不会是mega8的Flash不行了?这片mega8陪伴了我好几年,也应该退休了。抱着试试看的想法换了一片新的mega8,一切ok!自己觉得奇怪,之前在烧程序时,并没有报错啊? 调试过程总结一下: 1)由于找不到的1620资料,不知道它的操作时序。看到一些帖子说1620和1602没区别,还是有点将信将疑。后面用网友编写的1602程序试验,才知道它们俩没啥区别 2)关于是否检测LCD处于空闲,觉得还是最好在写指令和写数据时都加上。不检测,会导致显示结果不正常。 3)由于连线很多14根(加上背光就是16根),如果有一根除了问题就会影响到显示。所以我是用万用表一根线一根线
[单片机]
意法半导体的PC版MCU Finder选型工具能在电脑上使用STM32/STM8
横跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)发布了其PC版MCU Finder选型工具,方便嵌入式开发人员在ST MCU应用开发所用桌面环境中直接查看STM32和STM8微控制器的关键信息。   沿袭深受欢迎的基于手机端的意法半导体MCU Finder选型工具ST-MCU-FINDER的功能,PC版ST-MCU-FINDER-PC为用户提供便捷的选型工具、自维护文档和ST MCU开发者社区链接通道。新的PC版ST MCU Finder选型工具支持Windows® 、macOS™和Linux® 三大操作系统,让嵌入式开发人员能够在电脑上整合所有的
[半导体设计/制造]
STC12C5A60S2引脚详解
  STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。   STC12C5A60S2是8051系列单片机,与普通51单片机相比有以下特点:   1、同样晶振的情况下,速度是普通51的8~12倍   2、有8路10位AD   3、多了两个定时器,带PWM功能   4、有SPI接口   5、有EEPROM   6、有1K内部扩展RAM   7、有WATCH_DOG   
[单片机]
STC12C5A60S2引脚详解
为什么要对单片机系统进行扩展?
单片机应用系统开发时,首先遇到的问题就是存储器的扩展。因为单片机内部的存储器容量一般都比较小,因此,从单片机外部配置外部存储器,包括程序存储器和数据存储器,就成了应用系统的重要工作之一。 此外,单片机内部虽然配置了若干并行I/O接口。但是,当外部设备较多时,原有的几个内部I/O接口就不够使用。所以,在大多数单片机应用系统中都需要扩展输入输出接口芯片,以满足输入输出的需要。
[单片机]
基于MSP430单片机的PID参数整定仪
  PID控制是最常的控制策略,在工业过程控制中90%以上的控制回路具有PID结构。PID控制之所以被广泛应用主要是因为它算法简单,在实际中容易被理解和实现,而且许多高级控制都以PID控制为基础。但是由于环境的变化,使被控对象具有时变性,参数经过一段时间以后会出现性能欠佳、适应性变差、控制效果下降等情况。因此,寻求参数自动整定技术,以适应复杂工况及高性能指标的控制要求,是实现节能优化控制的重要手段,具有重大的工程实践意义。   1 自整定过程原理   本文主要研究了一种手持式的PID参数整定仪器,此整定仪具有整定单变量和双变量的双重功能,控制系统主要采用低能耗的MSP430微控制器,软件部分采用的软件开发平台是IAR MSP4
[单片机]
基于MSP430<font color='red'>单片机</font>的PID参数整定仪
MSP430单片机简易交通信号灯设计与实现
1 项目要求 本项目花样流水灯采用MSP430单片机为控制器件,用于交通信号的输出,此交通信号灯共有12盏灯,分3盏灯一组分别控制四个路口。 (1)设计一个交通信号灯控制器,由两条主干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 (2)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外。 2 项目分析和系统设计 本系统分为硬件和软件模块。硬件上我们打算在单片机的不同的i/o中装上一个LED灯来进行对信号灯进行控制。 在程序方面,首先对msp430的i/o口进行的定义和设置,然后在去定义了一个dela
[单片机]
MSP430<font color='red'>单片机</font>简易交通信号灯设计与实现
在MOTOROLA A68K系列MCU上移植μC/OS-II
一、MC68K CPU简介 MC68K及68020、68040等的著名的MOTOROLA32位微处理器,和与之兼容的68K、CPU32、CPU32+等CPU扩充定时处理单元TPU、队列串行模块QSM、系统控制模块和RAM等组成MC683xx系列单片机。 CPU32 内部有8个32位通用数据寄存器,8个32位通用地址寄存器。8个通用数据寄存器可作为累加器使用,也可看成C语言中各种类型的变量;8个通用地址寄存器,可作为变址寄存器使用,也可看成C语言中的指针型变量。CPU32有独立的用户堆栈指针和系统堆栈指针,可区分程序区、数据区、系统区、用户区等存储空间,有7级中断。 要实现μC/OS-II向MC68K的移值,需要有M
[单片机]
在MOTOROLA A68K系列<font color='red'>MCU</font>上移植μC/OS-II
MCU巨头,血拼GPU性能
曾经,MCU是电子产品的控制核心,GPU是图像世界的掌控者,二者在过去很少有交集。随着越来越多图形处理需求,MCU中放GPU,已经不是什么新鲜操作。 最近一段时间,边缘AI概念的兴起,以及汽车图形显示性能的提升,越来越多的MCU厂商开始“卷”图像处理性能。 MCU的图形历史 在那个没有GPU的时代,所有图形还都是交给CPU绘制。虽然这没什么问题,但随着显示图形图像愈发复杂,CPU越来越力不从心。对计算机来说,低效率带来的就是延迟和卡顿,整体功耗也会随之攀升,GPU便应运而生,将CPU从繁重的图形计算任务中拯救了出来。 MCU也有类似的发展历程。早期MCU极少有图形显示的需求,即便有,也只是简单的12864之类
[单片机]
<font color='red'>MCU</font>巨头,血拼GPU性能
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved