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

📄 computer2.lst

📁 AT89S52串口多字节接收,可以接收任意字节.
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE COMPUTER2
OBJECT MODULE PLACED IN computer2.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE computer2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************/
   2          /*                            2006-05-24                                                    */
   3          /******************* RS232接收不定数据长度的程序 ********************/
   4          /***************************** Ver 1.0 ******************************/
   5          
   6          #include <reg51.h>
   7          #include <math.h>
   8          #include <stdio.h>
   9          #include <absacc.h>
  10          #include <intrins.h>
  11          #include <string.h>
  12          #include <stdlib.h>
  13          /* 直接访问方式地址定义,根据用户平台接口修改 */
  14          //PARA1    EQU     20H      ; 应用于DMF682(256*128)
  15          //PARA1    EQU     28H     ; 应用于DMF50081/50174(320*240)
  16          //PARA1    EQU     50H     ; 应用于DMF50036(640*200)
  17           
  18          #define  wcadd1   XBYTE[0xbf00]  /* 写指令代码地址 */
  19          #define  wdadd1   XBYTE[0x3f00]  /* 写参数及显示数据地址 */
  20          #define  rdadd1   XBYTE[0xbf00]  /* 读参数及显示数据地址 */
  21          #define  rbadd1   XBYTE[0x3c00]  /* 读忙状态地址 */
  22          #define  Io8155   XBYTE[0xef00]
  23          #define  M8155    XBYTE[0xcf00]
  24          #define  M8155_1  XBYTE[0xcf10]
  25          #define  Io8155_A XBYTE[0xef01]
  26          #define  Io8155_B XBYTE[0xef02]
  27          #define  Io8155_C XBYTE[0xef03]
  28          
  29          /* 程序参数定义,根据用户选择的LCM型号修改 32K(7FFFH)*/
  30          #define  True              1
  31          #define  False             0
  32          #define  PARA              0x28;
  33          #define  AD_Value          0x2c;
  34          
  35          #define  Rs232_Input_LEN   10
  36          #define  Rx_start_data     0x81
  37          
  38          typedef  unsigned char uchar;
  39          typedef  unsigned int  uint;
  40          sfr16    DPTR  = 0x82;
  41          sfr16    flash = 0xb3;
  42          sfr      SMOD = 0x87;
  43          sfr      SFCF = 0xb1;
  44          sfr      SFCM = 0xb2;
  45          sfr      SFAL = 0xb3;
  46          sfr      SFAH = 0xb4;
  47          sfr      SFDT = 0xb5;
  48          sfr      SFST = 0xb6;
  49          
  50          sbit     RS485        = P1^2;                           //S52
  51          sbit     MCU_LED      = P1^0;
  52          sbit     MCU_LED2     = P0^0;
  53          sbit     Ds1302_clock = P2^2;
  54          sbit     Ds1302_data  = P2^1;
  55          sbit     Ds1302_rst   = P2^0;
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 2   

  56          
  57          
  58          //sbit     RS485        = P3^5;                          //C2051
  59          //sbit     MCU_LED      = P1^7;
  60          //sbit     Ds1302_clock = P1^6;
  61          //sbit     Ds1302_data  = P1^5;
  62          //sbit     Ds1302_rst   = P1^4;
  63          sbit     Video        = P3^7;
  64          /*********************************/
  65          
  66          /* 定义调用子程序 */
  67          void   Close_write_bit(void);
  68          void   Open_write_bit(void);
  69          void   Init_ds1302(void);
  70          void   Read_ds1302();
  71          void   Write_ds1302(uchar address,uchar numb);
  72          
  73          uchar  TXD_pc(uchar icode);
  74          void   delay_2();
  75          void   delay(uint count0);
  76          void   delay_3(uchar count0);
  77          
  78          //;-------------- DMF-50081/50174 的SYSTEM SET 参数 --------------
  79          //SYSTAB:       DB 30H,87H,07H,27H,42H,0F0H,28H,00H       ; P1-P8参数
  80          //SCRTAB:       DB 00H,00H,0F0H,00H,30H,0F0H,00H,60H,00H,00H ; P1-P10参数
  81          /*-------------------240128的SYSTEM SET 参数-------------------------------*/
  82          //code   uchar SYSTAB[8]={0x30,0x87,0x07,0x1e,0x21,0x80,0x1f,0x00};
  83          //code   uchar SCRTAB[10]={0x00,0x00,0x80,0xf0,0x01,0x80,0x00,0x00,0x00,0x00};
  84          /*-------------------320240的SYSTEM SET 参数-------------------------------*/
  85          code     uchar SYSTAB[8]  = {0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00};
  86          code     uchar SCRTAB[10] = {0x00,0x00,0xf0,0x00,0x30,0xf0,0x00,0x60,0x00,0x00};
  87          //code   uchar SCRTAB[10]={0x00,0x00,0xf0,0xce,0x04,0xf0,0x80,0x00,0x00,0x00};
  88          /* 在此可以观察文本方式下的字符及光标的显示效果(写入内容为"Sevicer tel:") */
  89          code     uchar DRAG_1[6][5] = {0,1,2,3,0xfe,0,1,4,5,0xfe,6,7,8,9,0xfe,10,8,4,5,0xfe,11,12,13,14,0xfe,53,54
             -,55,56,0xff};
  90          code     uchar TXT_2[] = {0x84,0x84,0x84,0x84,0x84,0x84,0xff};
  91          code     uchar TXT_1[] = {0x80,0x80,0x80,0x80,0x80,0x82,0xff};
  92          code     uchar TXT_3[] = {23,23,23,23,23,23,0xff};
  93          code     uchar TXT_4[] = {59,57,58,60,0xff};
  94          code     uchar TXT_5[] = {67,68,69,63,64,0xff};
  95          /* 文本方式下的汉字显示方法
  96           在文本方式下显示汉字, 需要在SED1335 等显示RAM 内建立一个自定义字符库
  97           CGRAM,然后通过在相应的单元写入相应的字符代码来实现汉字的显示.
  98           SED1335 等的字符代码对应的是8x8 点阵的字符块, 而一个汉字需要四个8x8
  99           点阵的字符块组合显示, 所以在建立汉字的CGRAM 时, 需要四个字符代码管理一个
 100           汉字, 一般是按左上部, 左下部, 右上部和右下部四部分分配代码. 比如在演示程
 101           序中建立 "清华" 两个汉字的CGRAM,那么这两个汉字的代码为80H(81H,82H,83H)和
 102           84H(85H,86H,87H). */
 103          
 104          uchar  menu = 0;
 105          uchar  TH0_T,TL0_T;
 106          uchar  Buffer;
 107          uint   V_ml;
 108          uchar  Speed_V;
 109          uchar  bdata AD;
 110          uint   bdata Adend;
 111          sbit   AD_0    = AD^0;
 112          sbit   AD_1    = AD^1;
 113          sbit   AD_7    = AD^7;
 114          
 115          bit    Read_Flag;
 116          bit    Write_Flag; 
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 3   

 117          
 118          bit    Stop;
 119          bit    Stop1;
 120          bit    Ack;
 121          bit    Work;
 122          bit    Work1;
 123          /**************************/
 124          /*******串口接收设置*******/
 125          bit    Rs232_Rece_Error;
 126          bit    Start_Rxd;
 127          uchar  Rs_buf[Rs232_Input_LEN];
 128          uchar  M_D[8];
 129          unsigned char g_cReceNum;  
 130          bit    Rs232_Flag;
 131          /*********************/
 132          /*     演示主程序    */
 133          /*********************/
 134          void main()
 135          { 
 136   1      
 137   1       
 138   1        
 139   1              
 140   1               TH1 = TL1 = 0xFD;    //9600Kbps
 141   1                       Ack  = False;
 142   1                       g_cReceNum = 0;
 143   1                       Work = False;
 144   1               Stop = False;
 145   1               TH0_T = 0; TL0_T = 0;
 146   1                   delay_2();
 147   1                   _nop_();
 148   1                   
 149   1      
 150   1              MCU_LED = 0;
 151   1              delay(500);
 152   1              MCU_LED = 1;
 153   1              delay(500);
 154   1              MCU_LED = 0;
 155   1              delay(500);
 156   1              MCU_LED = 1;
 157   1              delay(500);
 158   1              MCU_LED = 0;
 159   1              delay(500);
 160   1              MCU_LED = 1;
 161   1              Init_ds1302();                                                                                                                    
 162   1      
 163   1      
 164   1                       
 165   1                   
 166   1                   ES = 1;
 167   1                       delay_3(1);         
 168   1               SCON = SCON|0x50;
 169   1       while(1)
 170   1       {                         
 171   2                   
 172   2               TMOD = TMOD|0x21;
 173   2                       //PCON |= 0x80;
 174   2               TR1  = True; EA  = True;
 175   2                       TR0  = True; ET0 = True;
 176   2                       ES   = True;
 177   2                       if (Rs232_Rece_Error)  {
 178   3                                    Rs232_Rece_Error = False;
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 4   

 179   3                                    TXD_pc(0xBD);TXD_pc(0x90);TXD_pc(0x90);
 180   3                                            TXD_pc(0x90);TXD_pc(0x90);TXD_pc(0x90);
 181   3                       }
 182   2                if (Rs232_Flag)
 183   2                     {   
 184   3                           Rs232_Flag = 0;
 185   3                                               if (Rs_buf[2] == 0xB1)
 186   3                           { 
 187   4                                                 RS485    = False;
 188   4                                                         MCU_LED = 0;
 189   4                                                         Work     = True;
 190   4                                                         TXD_pc(0xBD);TXD_pc(0xA0);TXD_pc(0xA0);
 191   4                                                 TXD_pc(0xA0);TXD_pc(0xA0);TXD_pc(0xA0);
 192   4                                           }
 193   3                               if (Rs_buf[2] == 0xB2)
 194   3                           { 
 195   4                                                 RS485    = True;
 196   4                                     MCU_LED = 1;
 197   4                                                         Stop     = True;
 198   4                                                         TXD_pc(0xBD);TXD_pc(0xA3);TXD_pc(0xA3);
 199   4                                                 TXD_pc(0xA3);TXD_pc(0xA3);TXD_pc(0xA3);
 200   4                                           }
 201   3                                   if (Rs_buf[2] == 0xB3) 
 202   3                                   {
 203   4                                                 Ack = True;
 204   4                                           }
 205   3                                   if (Rs_buf[2] == 0xB4)     //读时间秒 ,分,小时,日,月,年
 206   3                                   {
 207   4                                                 MCU_LED = 0;
 208   4                                     delay(10);
 209   4                                     MCU_LED = 1;
 210   4                                                 Read_ds1302();
 211   4                                                 TXD_pc(M_D[0]);
 212   4                                                 TXD_pc(M_D[1]);
 213   4                                                 TXD_pc(M_D[2]);
 214   4                                                 TXD_pc(M_D[3]);
 215   4                                                 TXD_pc(M_D[4]);
 216   4                                                 TXD_pc(M_D[6]);
 217   4                                            }
 218   3                                    if (Rs_buf[2] == 0xB5)   //写秒
 219   3                                    {
 220   4                                                 MCU_LED = 0;
 221   4                                     delay(10);
 222   4                                     MCU_LED = 1;
 223   4                                                 Open_write_bit();
 224   4                                                 Write_ds1302(0,Rs_buf[1]);       
 225   4                                                 Close_write_bit();
 226   4                             }
 227   3                                                 if (Rs_buf[2] == 0xB6)        //写分
 228   3                                    {
 229   4                                                     MCU_LED = 0;
 230   4                                     delay(100);
 231   4                                     MCU_LED = 1;
 232   4                                                 Open_write_bit();
 233   4                                                 Write_ds1302(1,Rs_buf[1]);       
 234   4                                                 Close_write_bit();
 235   4                                                 }
 236   3                                                 if (Rs_buf[2] == 0xB7)        //写时
 237   3                                    {
 238   4                                                     MCU_LED = 0;
 239   4                                     delay(10);
 240   4                                     MCU_LED = 1;
C51 COMPILER V8.05a   COMPUTER2                                                            04/25/2008 17:59:14 PAGE 5   

 241   4                                                 Open_write_bit();
 242   4                                                 Write_ds1302(2,Rs_buf[1]);       
 243   4                                                 Close_write_bit();
 244   4                                                 }

⌨️ 快捷键说明

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