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

📄 main.lst

📁 中颖单片机SH88F516例程
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  08/13/2009 16:42:46 PAGE 1   


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

line level    source

   1          /*********************************************************************************************************
             -******************************
   2          说明: 串口1拥有独立的波特率发生器,不需要占用定时器资源,在多机通讯时还具有自动硬件地址识别和帧出错检测
   3          功能。本程序代码可以很好的实现自动硬件地址识别和通讯功能,利用串口调试助手发送地址和数据命令,单片机接
   4          收有效命令后,将数据再发送到串口调试助手。操作注意点如下:发送十六进制数据55(55在程序中定义为硬件地址),
   5          选择偶校验(偶校验保证了输出第8位为1),发送后会返回十六进制数据55,说明地址匹配,下面可以任意发送数据
   6          (除了FF和AA)进行通讯,发送的数据都可以返回到串口调试助手,十六进制FF(偶校验为1)为系统默认的广播命令,
   7          十六进制AA为程序中定义的通讯结束命令,因而可以发送AA结束此次通讯。串口调试助手(serial V2.2.exe)在UART1文
   8          件夹中。
   9          要求:打开拨码开关J4,使串口1有效。
  10          **********************************************************************************************************
             -******************************/
  11          #include <sh88f516.h>
  12          
  13          unsigned char data RCV_num;
  14          bit flag1;
  15          void init();
  16          void SendChar(unsigned char value);
  17          
  18          main()
  19          {
  20   1              init();
  21   1                                              
  22   1          while(1)
  23   1              {        
  24   2                      if(flag1)
  25   2                      {
  26   3                              flag1 = 0;
  27   3                              SendChar(RCV_num);
  28   3                      }
  29   2              }
  30   1      
  31   1      }
  32          
  33          
  34          void init()
  35          {
  36   1      
  37   1              CLKCON = 0x00;                  //时钟设置 系统时钟=晶振频率   Fsys=16MHz
  38   1      
  39   1              SADDR1 = 0x55;          //多机通讯时的从机地址设置=0x55
  40   1              SADEN1 = 0xFF;                  //从机地址屏蔽设置
  41   1      
  42   1              SCON1 = 0xF0;               //工作在方式3 ,多机通讯模式
  43   1              SBRT1 = 0xFF;               //工作在方式3时,BAUDRATE=(1/16)*Fsys/(32768-SBRT[1:0])        Fsys=16MHz
  44   1              SBRT0 = 0x98;               //BAUDRATE=9600时, SBRT[1:0]=0x7F98,   SBRT1.7=1    -->     SBRT1=0xFF,      SBRT0 = 0x98;
  45   1              
  46   1              IEN1 = 0x04;                //ES1=1,不可位寻址
  47   1              EA = 1;                             //开启总中断
  48   1      
  49   1      }
  50          
  51          
  52          void UART1_RCV_INT() interrupt 9  using 3  //串口接收中断的中断号为9.
  53          {
C51 COMPILER V8.08   MAIN                                                                  08/13/2009 16:42:46 PAGE 2   

  54   1      
  55   1              IEN1 &= 0xFB;                                              //关闭串口1中断
  56   1              SCON1 &= 0xDF;                                             //SM12_TXCOL = 0;
  57   1      
  58   1              RCV_num = SBUF1;
  59   1      
  60   1      
  61   1              if(RCV_num==0xAA)                                          //收到0xAA就结束此次通讯
  62   1              {
  63   2                      SCON1 |= 0x20;                     //SM12_TXCOL = 1;
  64   2              }       
  65   1              
  66   1              flag1 = 1;
  67   1      
  68   1              RI1 = 0;                                                           //清除串口1中断标志位
  69   1              IEN1 |= 0x04;                                              //打开串口1中断
  70   1      }
  71          
  72          void SendChar(unsigned char value)
  73          {
  74   1              IEN1 &= 0xFB;               //ES1=0;            
  75   1              SBUF1=value;                        //写SBUF1,激活发送
  76   1              while(TI1==0);                          //等待转换结束
  77   1              TI1=0;                                          //清除发送标志位
  78   1              IEN1 |= 0x04;               //ES1=1;            
  79   1      }
  80          
  81          
  82          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     86    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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