找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3555|回复: 0
打印 上一主题 下一主题
收起左侧

上位机和下位机通信的单片机程序

[复制链接]
跳转到指定楼层
楼主
ID:249082 发表于 2017-11-13 21:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上位机和下位机通信的程序

单片机源程序如下:
  1. #include <c8051f020.h>

  2. #define SYSCLK       22118400          // 系统时钟频率22.1184MHz
  3. #define BAUDRATE       115200                           // BAUDRATE
  4. #define TIMER2_RELOAD 0x0000

  5. sfr16 RCAP2 = 0xCA;                    // Timer2 Reload Register
  6. sfr16 TMR2 = 0xCC;                     // Timer2 Register
  7. /*******************                                                                                                               
  8. 振荡器初始化
  9. ********************/
  10. void OSCILLATOR_Init (void)
  11. {
  12.    int i;                              /*延时计数器*/
  13.    OSCXCN = 0x67;                      /*打开外部晶体振荡器*/
  14.    for (i=0; i < 256; i++) ;           /*延时,等待振荡器启动(>1ms)*/
  15.    while (!(OSCXCN & 0x80)) ;          /*查询外部晶体是否稳定起振*/
  16.    OSCICN = 0x88;                      /*用外部晶体作为系统时钟,并使能时钟丢失检测*/
  17. }

  18. /**************************************
  19. 端口的初始化
  20. ***************************************/
  21. void PORT_Init()
  22. {
  23.         XBR0 = 0x04;                //使能UART0EN(XBAR0.2),p0.0=TX0,p0.1=RX0
  24.         XBR2 = 0x40;                //XBARE置1
  25. }

  26. //-----------------------------------------------------------------------------
  27. // UART0_Init
  28. //-----------------------------------------------------------------------------
  29. //
  30. // Return Value : None
  31. // Parameters   : None
  32. //
  33. // Configure the UART1 using Timer1, for <baudrate> and 8-N-1.
  34. //
  35. //-----------------------------------------------------------------------------

  36. void UART0_Init (void)
  37. {
  38.    SCON0   = 0x50;                     // SCON0: mode 1, 8-bit UART, enable RX
  39.    TMOD    = 0x21;                     // TMOD: timer 1, mode 2, 8-bit reload
  40.    TH1    = -(SYSCLK/BAUDRATE/16);     // set Timer1 reload value for baudrate
  41.    TR1    = 1;                         // start Timer1
  42.    CKCON |= 0x10;                      // Timer1 uses SYSCLK as time base
  43.    PCON  |= 0x90;                      // SMOD00 = 1
  44.    //TI0    = 1;                       // Indicate TX0 ready
  45. }

  46. void UART1_Init (void)
  47. {
  48.         SCON1=0x50;
  49.         T4CON=0x34;
  50.         CKCON |= 0x50;
  51.         PCON  |= 0x90;
  52.         TH4=0XFF;
  53.         TL4=0XFA;
  54.         RCAP4L=0XFA;
  55.         RCAP4H=0XFF;

  56. }


  57. /*
  58. T0初始化
  59. */
  60. void T1_initial(void)
  61.         {
  62.                 TMOD=0x21;
  63.                 //CKCON |= 0x08;
  64.                 //TH0=0x70;
  65.                 //TL0=0x00;         
  66.                 TH0=0x70;
  67.                 TL0=0x00;
  68.                 TR0=1;               
  69.         }

  70. /*
  71. T2初始化
  72. */
  73. void T2_initial(void)
  74. ……………………

  75. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
程序.rar (94.64 KB, 下载次数: 35)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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