英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3187|回复: 0
打印 上一主题 下一主题

双机异步通讯,调试通过

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-24 17:03:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
file://******************************************************************
file://tran.c
file://单片机双机异步通讯,发送接收程序
file://PIC16F27单片机
file://发送一个数,发送完毕后,等待从机接收
file://从机接收后,进行数据校验,如果正确。点亮显示灯
file://*******************************************************************
#include <16F627.h>
unsigned char tran;                                  file://定义一个变量或数组存储发送数据
unsigned char t,s;                                     file://定义一个变量
file://unsigned char k,data                                   file://定义通用寄存器
unsigned char flag;
file://程序初始定义,定义各寄存器地址或位
#byte SPBRG = 0x99
#byte TXSTA = 0x98
#byte RCSTA = 0x18
#byte TRISB = 0x86
#byte RCREG = 0x1A
#byte TXREG = 0x19
#bit  TRISB1 = 0x86.1
#bit  TRISB2 = 0x86.2
#bit  TRISB3 = 0x86.3
#bit  TRISB4 = 0x86.4
#bit  TXEN  =  0x98.5
#bit  CREN  =  0x18.4
#bit  TXIF  = 0x0C.4
#bit  RCIF  = 0x0C.5
#bit  GIE  =  0x0B.7
#bit  KEY = 0x06.4
#bit  SHOW = 0x06.3
#bit  TXIE = 0x8C.4
#bit  RCIE = 0x8C.5
file://给变量或数组赋初值子程序
void fuzhi()
{
    tran=7;
}
file://USART工作初始化子程序
void USART_init()
{
    SPBRG=0x25;                                         file://波特率设置为9600bps
    TXSTA=0x40;                                         file://选用异步高速方式传输8bit数据
    RCSTA=0x80;                                         file://允许同步串行口工作     
    TRISB1=1;
    TRISB2=1;                                           file://设置RB1,RB2为输入方式,对外部呈高阻状态
    TRISB3=0;                                           file://设置RB3为输出方式
    TRISB4=1;                                           file://设置RB4为输入方式,对外部呈高阻状态
}

file://主程序
void main()
{
unsigned long int t;
    fuzhi();
    KEY=1;                                              file://给按键初始值,高电位
    USART_init();                                      file://USART工作初始化
//    GIE=0;                                              file://中断禁止
  while(1)
{   
    RCIE=1;                                            file://串口接收中断允许
    TXIE=1;                                            file://串口发送中断允许
    TXEN=1;                                            file://发送允许
    CREN=1;                                            file://接收数据允许
  flag=0;
//  if(RCIF==1)                                    file://接收寄存器已满                                   
//  {
//   s=RCREG;                                   file://读该寄存器
//   flag=1;
//   if(s==0x33)SHOW=0;                         file://判断数据是否正确,正确点亮灯
//  }
//  if(KEY==0)                                     file://按键开始即送数
        TXREG=0x33;
  if(TXIF==1)                                   file://判断是否送完
  for(t=0;t<1000;t++);
        SHOW=0;
}
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-5-17 10:37 , Processed in 0.050876 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表