网站导航: 首页 > 设计参考 > 正文 文章搜索
PIC单片机双机异步通信
 
文章编号:
081209163702
文章分类: 单片机 PIC
点 击:
...
关 键 词: 异步,通信,通讯
文章来源:
网络
摘 要:

pic单片机双机异步通信(dhd0)

1 单片机PIC1编程(发送部分)

 
  1. #include <pic.h>   
  2. /*该程序实现单片机双机异步通信功能,该程序是发送部分*/  
  3. unsigned char tran[8]; /*定义一个数组存储发送数据*/  
  4. unsigned char k,data; /*定义通用寄存器*/  
  5. const char table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,   
  6. 0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};   
  7. /*不带小数点的显示段码表*/  
  8. /*spi显示初始化子程序*/  
  9. void SPIINIT()   
  10. {   
  11.     PIR1=0;   
  12.     SSPCON=0x30;   
  13.     SSPSTAT=0xC0;   
  14.     /*设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送,与"74HC595,当其  
  15.     *SCLK从低到高跳变时,串行输入寄存器"的特点相对应*/  
  16.     TRISC=0xD7; /*SDO引脚为输出,SCK引脚为输出*/  
  17.     TRISA5=0; /*RA5引脚设置为输出,以输出显示锁存信号*/  
  18. }   
  19. /*给数组赋初值子程序 */  
  20. void fuzhi()   
  21. {   
  22.     for(k=0;k<8;k ) {   
  23.         tran[k]=k 3;   
  24.     }   
  25. }   
  26. /*SCI部件初始化子程序*/  
  27. void sciint()   
  28. {   
  29.     SPBRG=0X19; /*将传输的波特率设为约9 600位/秒*/  
  30.     TXSTA=0X04; /*选择异步高速方式传输8位数据*/  
  31.     RCSTA=0X80; /*允许同步串行口工作*/  
  32.     TRISC6=1;   
  33.     TRISC7=1; /*将RC6、RC7设置为输入方式,对外部呈高阻状态*/  
  34. }   
  35. /*SPI传输数据子程序*/  
  36. void SPILED(data)   
  37. {   
  38.     SSPBUF=data; /*启动发送*/  
  39.     do {   
  40.         ;   
  41.     }while(SSPIF==0);   
  42.     SSPIF=0;   
  43. }   
  44. /*显示子程序,显示8位数*/  
  45. void display()   
  46. {   
  47.     RA5=0; /*准备锁存*/  
  48.     for(k=0;k<8;k ) {   
  49.         data=tran[k];   
  50.         data=table[data]; /*查得显示的段码*/  
  51.         SPILED(data); /*发送显示段码*/  
  52.     }   
  53.     RA5=1; /*最后给一个锁存信号,代表显示任务完成*/  
  54. }   
  55. /*主程序*/  
  56. main()   
  57. {   
  58.     SPIINIT();   
  59.     fuzhi(); /*给数组赋初值*/  
  60.     sciint(); /*SCI部件初始化*/  
  61.     di(); /*中断禁止*/  
  62.     TXEN=1; /*发送允许*/  
  63.     CREN=1; /*接收数据允许*/  
  64.     for(k=0;k<8;k ){   
  65.         TXREG=tran[k]; /*发出一个字符*/  
  66.         while(1){   
  67.             if(TXIF==1) break;   
  68.         } /*等待写入完成*/  
  69.         while(1){   
  70.             if(RCIF==1) break;/*若收到响应字节,则终止等待*/  
  71.         }   
  72.         RCREG=RCREG; /*读响应字节,清RCIF*/  
  73.     }   
  74.     display(); /*显示发送的数据*/  
  75.     while(1){   
  76.         ;   
  77.     }   
  78. }  


2 单片机PIC2编程(接收部分)

 
  1. #include <pic.h>   
  2. /*该程序实现单片机双机异步通信功能,该程序是接收部分,并把接收的数据显示在8*个LED上*/  
  3. unsigned char rece[8];/*定义一个数组存储接收数据*/  
  4. unsigned char k,data;/*定义通用寄存器*/  
  5. const char table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,   
  6. 0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};   
  7. /*不带小数点的显示段码表*/  
  8. /*spi显示初始化子程序*/  
  9. void SPIINIT()   
  10. {   
  11.     ;详细语句见发送程序   
  12. }   
  13. /*SCI部件初始化子程序*/  
  14. void sciint()   
  15. {   
  16.     SPBRG=0X19; /*波特率设置与PIC1相同,为约9 600位/秒*/  
  17.     TXSTA=0X04; /*异步高速传输*/  
  18.     RCSTA=0X80; /*串行口工作使能*/  
  19.     TRISC6=1;   
  20.     TRISC7=1; /*将RC6、RC7设置为输入方式,对外部呈高阻状态*/  
  21. }   
  22. /*SPI传送数据子程序*/  
  23. void SPILED(data)   
  24. {   
  25.     ;详细语句与见发送程序   
  26. }   
  27. /*显示子程序,显示4位数*/  
  28. void display()   
  29. {   
  30.     RA5=0; /*准备锁存*/  
  31.     for(k=0;k<8;k ){   
  32.         data=rece[k];   
  33.         data=table[data]; /*查得显示的段码*/  
  34.         SPILED(data); /*发送显示段码*/  
  35.     }   
  36.     RA5=1; /*最后给一个锁存信号,代表显示任务完成*/  
  37. }   
  38. /*主程序*/  
  39. main()   
  40. {   
  41.     SPIINIT(); /*spi显示初始化*/  
  42.     sciint(); /*SCI部件初始化*/  
  43.     di(); /*中断禁止*/  
  44.     CREN=1; /*接收允许*/  
  45.     TXEN=1; /*发送允许*/  
  46.     for(k=0;k<8;k ){   
  47.         while(1){   
  48.             if(RCIF==1) break;   
  49.         } /*等待接收数据*/  
  50.         rece[k]=RCREG; /*读取接收数据,同时清掉RCIF*/  
  51.         TXREG=rece[k]; /*发送接收到的数据*/  
  52.         while(1){   
  53.             if(TXIF==1) break;   
  54.         } /*等待写入完成*/  
  55.     }   
  56.     display(); /*显示接收的数据*/  
  57.     while(1){   
  58.         ;   
  59.     }   
  60. }  

 

 
相关文章:

 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4