⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stc_to_rs232.lst

📁 STC单片机读取FPGA筒形寄存器并通过RS232发送到上位机源程序
💻 LST
字号:
C51 COMPILER V8.02   STC_TO_RS232                                                          01/04/2008 16:19:16 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE STC_TO_RS232
OBJECT MODULE PLACED IN stc_to_RS232.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE stc_to_RS232.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2           *  程序功能 :  接收FPGA数据并将接收到的数据上传给PC
   3           *                                                                         
   4           *  应用软件 :  KEIL C                                               
   5           *                                                                      
   6           *  版    本 :  KEIL 8.02 
   7           *                                                         
   8           *  硬    件 :  STC89C58RD+   
   9           *                                                               
  10           *  创建时间 :  2007-12-27
  11           *              
  12           *  创 建 人 :   吕坤    
  13           *                        
  14           ********************************************************************/  
  15          /*  说    明 :
  16                                  ____
  17                          | 数据准备完毕,低电平有效
  18          date_reday:    |____________________________________________________.........
  19                                           ________                  ________                      ________
  20                              |        |            |                |            |                |
  21          down_date :     ____|        |________|        |________|            |________
  22                             ___________________________________________________________
  23          date_done :                                                                                                              |数据发送完毕,低电平有效
  24                                                                                                                                                    |_______________
  25          FPGA      :                          ↓数据更新            ↓数据更新            ↓数据更新........FPGA寄存器
  26          date      :◆◆◆◆◆◆◆延时◆读取◇◆◆◆延时◆读取◇◆◆◆延时◆读取◇
  27          ◆:等待周期
  28          ◇:读取周期
  29          */
  30          
  31          #include <reg52.h>
  32          #include <stdio.h>
  33          #include <string.h>
  34          
  35          #define DATA4 P1;
  36          int DELAY_TIME_VALUE = 50000; /*延时时间*/
  37          
  38          sbit down_date=P1^4;            /*数据接收脉冲信号脚,下降沿有效*/
  39          sbit date_done=P1^5;            /*数据发送完毕标志,低电平有效  */
  40          
  41          bit biaozhi;                            /*满1字节标志量,0为不足1字节,1为满1字节*/
  42          char date;                                      /*接收到的数据                                                   */
  43          
  44          bit date_reday=1;                       /*      数据准备完毕中断用信号位                        */
  45          
  46          void delay(long int a);         /*延时程序                                                               */
  47          char getValue(void);            /*从P1口获得 低4位 数据*/
  48          void send_date(char);           /*向上位机发送数据*/
  49          
  50          
  51          void int0() interrupt 0         /*外部中断0,调整信号灯*/
  52          {
  53   1              date_reday=0;   
  54   1      }
  55          void main(void)
C51 COMPILER V8.02   STC_TO_RS232                                                          01/04/2008 16:19:16 PAGE 2   

  56          {
  57   1              IT0=1;                                  /*调整INT0为下降沿触发*/
  58   1              EX0=1;                                  /*中断INT0使能*/
  59   1              EA=1;                                   /*打开所有中断允许*/
  60   1              biaozhi=0;
  61   1              SCON=0X50;                              /*串口模式1,允许接收                                    */
  62   1              TMOD=0X20;                              /*初始化T1为定时,选择模式2,M1=1,M0=0,自动装入8位定时器 */
  63   1              PCON=0X80;                              /*设置SMOD=1,倍增器为1                                                                  */
  64   1              TL1=0Xfa;                               /*设定计数器1初值*/
  65   1              TH1=0Xfa;                               /*设定计数器1重装值   11.0592Mhz  比特率为 9600*/                                                                                                                
  66   1              TR1=1;                                  /*启动定时器                                                                                     */
  67   1              
  68   1              while(1)
  69   1              {
  70   2                      date_reday=1;
  71   2                      date_done=1;
  72   2                      while(date_reday);              /*等待准备完毕信号*/
  73   2                      while(date_done)                /*检查数据是否发送完毕*/
  74   2                      {
  75   3                              if(biaozhi==0)          /*数据位置标志位,为0则为高4位,为1则为第四位*/
  76   3                              {
  77   4                                      date=getValue();/*获取P1口低4位数据*/
  78   4                                      biaozhi=1;              /*切换到高4位*/
  79   4                                      /*如果最后位置传输为4bit,则上移动到高四位,第四位补0,并发送给上位机*/
  80   4                                      if(date_done==0)
  81   4                                      {
  82   5                                              send_date(date);
  83   5                                                      
  84   5                                      }
  85   4                              }
  86   3                              else if(biaozhi==1)
  87   3                              {
  88   4                                      date=date<<4;           /*将数据左移到高4位*/
  89   4                                      date+=getValue();       /*获取P1口数据,并将获取数据放在低4位*/
  90   4                                      biaozhi=0;                      /*将数据切换到第四位*/
  91   4                                      send_date(date);        /*发送满8位的数据*/
  92   4                              }
  93   3                      }
  94   2                      /*****  文件结束,输出   *end    ********/
  95   2                      /*send_date(0x2a);*/
  96   2                      /*send_date(0x65);*/
  97   2                      /*send_date(0x6e);*/
  98   2                      /*send_date(0x64);*/
  99   2              }
 100   1              
 101   1      }
 102          /***延时程序***/
 103          void delay(long int a)
 104          {
 105   1              for(;a>0;a--);
 106   1      }
 107          
 108          /**发出脉冲,获得数据。其中,下降沿FPGA更新数据**/
 109          char getValue(void)
 110          {
 111   1              char return_value;
 112   1              down_date=0;
 113   1              delay(100);
 114   1      
 115   1              return_value=P1&0x0f;
 116   1              down_date=1;
 117   1              delay(100);
C51 COMPILER V8.02   STC_TO_RS232                                                          01/04/2008 16:19:16 PAGE 3   

 118   1              return return_value;            
 119   1      }
 120          
 121          /**    向 pc 机发送数据  ****/
 122          void send_date(char d)
 123          {
 124   1              SBUF=d;
 125   1              while(TI==0);
 126   1              TI=0;
 127   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    171    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -