您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机单片机双机异步通信通用应用程序 正文
单片机双机异步通信通用应用程序

单片机双机异步通信通用应用程序

点击数:7698 次   录入时间:03-04 12:01:58   整理:http://www.55dianzi.com   PIC单片机
while(1){
                if(TXIF==1)    break;
    }                /*等待上一个数据写入完成*/
          }
        display();            /*显示发送的数据*/
   }                            /*循环发送*/
}

2     单片机 PIC2编程(从动接收)
#include        <pic.h>
/*该程序实现 单片机 双机 同步通信功能,是从动接收部分,并把接收的数据显
*示在8个LED上*/
unsigned        char        rece[8];          /*定义一个数组存储接收数据*/
unsigned        char        k,data;     /*定义通用寄存器*/
unsigned        int        i;
const  char    table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};
/*不带小数点的显示段码表*/
/*spi显示初始化子程序*/
void        SPIINIT()
{
    ;详细程序语句请参考本章8.5节
}
/*SCI部件初始化子程序*/
void        sciint()
{
    TXSTA=0X10    ;                /*选择同步从动方式*/
    RCSTA=0X90;                /*串行口工作使能*/
    TRISC6=1;
    TRISC7=1;                    /*将RC6、RC7设置为输入方式对外部呈高阻状态*/
}
/*SPI传送数据子程序*/
void      SPILED(data)
{
    ;/*详细程序语句请参考本章8.5节*/
}
/*显示子程序,显示4位数*/
void        display()
{
    RA5=0;                    /*准备锁存*/
    for(k=0;k<8;k++){
        data=rece[k];
        data=table[data];        /*查得显示的段码*/
        SPILED(data);        /*发送显示段码*/
    }
    RA5=1;                    /*最后给一个锁存信号,代表显示任务完成*/     
}
/*主程序*/
main()
{
    SPIINIT();                /*spi显示初始化*/
    sciint();                    /*SCI部件初始化*/
    di();                    /*中断禁止*/
    CREN=1;                /*接收允许*/
for(k=0;k<8;k++) rece[k]=0x03;
    display();                /*显示表示系统正常运行的数据*/
while(1)    {
        while(1){
            CREN=1;        /*允许连续接收*/ 
            while(1){
                if(RCIF==1)    break;
}                /*等待接收数据*/
            k=0;
            rece[k]=RCREG;    /*读取接收数据*/
            if(OERR==1) {    /*如果有溢出错误,则处理*/
    CREN=0;
                CREN=1;
}
if(rece[k]==0x00) break;/*"0"为同步字符,只有接收到"0"时才进行下面的接收*/
}
for(k=1;k<8;k++){
while(1){
                if(RCIF==1)    break;
}                /*等待接收数据*/
            rece[k]=RCREG;/*读取接收数据*/
            if(OERR==1)    {    /*如果有溢出错误,则处理*/
    CREN=0;
    CREN=1;
}
            rece[k]=rece[k]&0x0F;/*屏蔽掉高位,防止干扰*/
}
        CREN=0; 
        display();                /*显示接收的数据*/
        for(i=65535;--i; )continue;
        for(i=65535;--i; )continue;/*给予一定时间的延时,再进行下一轮接收*/
}
}

8.7    单片机 与PC机通信
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);            /*波特率设置为9600bps*/
  outportb(port+1,0x00);
  outportb(port+3,0x03);            /*8位数据,无奇偶检验,1位停止位*/

上一页  [1] [2] [3] [4]  下一页


本文关键字:单片机  通用  通信  应用程序  PIC单片机单片机-工控设备 - PIC单片机

上一篇:单片机秒表程序