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

📄 stc5410_ad.lst

📁 18B20程序,采用stc54C12单片机。ch452显示温度
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   STC5410_AD                                                           03/17/2009 20:35:48 PAGE 1   


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

line level    source

   1           
   2                          #pragma NOAREGS
   3                          #include <reg52.h>
   4                          #include <string.h>
   5                          #include<intrins.h> 
   6                          #include <stdlib.h>  //for exit() function
   7                          #include <ctype.h>   //for toupper() function
   8                          #include <math.h> 
   9                          #define uchar unsigned char
  10                          #define uint unsigned int
  11          //*******************************************************
  12                          double Temperature;
  13                          uchar temp_buff[9]; //存储读取的字节,read scratchpad为9字节,read rom ID为8字节
  14                          uchar *p;
  15                          sbit tem_A = P1^7;
  16                          bit  flag;
  17                          uchar tem10,tem1,tem_1,tem_11;
  18                     
  19                      bit  flag;
  20                          uchar polarity;
  21              //*****************************************************************
  22                  uchar LED_code_09[11]={0x7E,0x30,0x6D,0x79,0x33,0x5B,0x5F,0x70,0x7F,0x7B,0x00};
  23                  //****************************************************************************************************
  24                          /* 延时1uS子程序,主要用于2线接口,与单片机速度有关 */
  25                          #define  DELAY_1US  {_nop_();}
  26                          /* 2线接口的连接,与实际电路有关 */
  27                          sbit CH452_SCL=P2^0;
  28                          sbit CH452_SDA=P2^1;   // 如果使用真正的2线接口,那么SDA接中断引脚P3^3/INT1,用SDA直接做中断输出
  29                          /* 2线接口的位操作,与单片机有关 */
  30                          #define  CH452_SCL_SET  {CH452_SCL=1;}
  31                          #define  CH452_SCL_CLR  {CH452_SCL=0;}
  32                          #define  CH452_SDA_SET  {CH452_SDA=1;}
  33                          #define  CH452_SDA_CLR  {CH452_SDA=0;}
  34                          uchar  data_H,data_L;
  35                          uchar  display[13]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40,0x3E};//显示:0--9 
             -,"""-""V" 共阴
  36          
  37           //****************************************************************************************
  38          //*函 数 名:   delay                                                         **********
  39          //*功能描述:   毫秒延时                                                        **********
  40          //****************************************************************************************
  41          dealayms(int xxxx)
  42                                          {
  43   1                                              uint dlay ;
  44   1                                              //**************************************************************
  45   1                                              for(dlay=xxxx;dlay>0;dlay--);
  46   1                                       }
  47          //********************************************************************************************************
             -****
  48          void CH452_WrByte(uchar data_4B,uchar data_8B) //写一个字节数据  data_4B的低四位为数据(有效)
  49                   {
  50   1      
  51   1                                 uchar i;
  52   1                                 data_4B*=16;
  53   1                                 //****************************************************
C51 COMPILER V8.05a   STC5410_AD                                                           03/17/2009 20:35:48 PAGE 2   

  54   1                                 CH452_SDA_SET;   /*发送起始条件的数据信号*/
  55   1                                 CH452_SCL_SET;
  56   1                                 dealayms(100);
  57   1                                 CH452_SDA_CLR;   /*发送起始信号*/
  58   1                                 dealayms(100);
  59   1                                 CH452_SCL_CLR;   /*钳住I2C总线,准备发送或接收数据 */
  60   1                                 dealayms(100);
  61   1                                 //*****************************************************
  62   1                                 CH452_SDA_CLR;  //DA0=0
  63   1                                 CH452_SCL_SET;
  64   1                                 dealayms(100);
  65   1                                 CH452_SCL_CLR;
  66   1                                 //*****************************************************
  67   1                                 CH452_SDA_SET;  //DA1=1
  68   1                                 CH452_SCL_SET;
  69   1                                 dealayms(100);
  70   1                                 CH452_SCL_CLR;
  71   1                                 //*****************************************************
  72   1                                 CH452_SDA_SET;  //ADDR=1
  73   1                                 CH452_SCL_SET;
  74   1                                 dealayms(100);
  75   1                                 CH452_SCL_CLR;
  76   1                                 //*****************************************************
  77   1                                 for(i=0;i!=4;i++)      // 输出4位数据  D11-D8
  78   1                                               {
  79   2                                                if(data_4B&0x80) {CH452_SDA_SET;}
  80   2                                                else {CH452_SDA_CLR;}
  81   2                                                CH452_SCL_SET;
  82   2                                                data_4B<<=1;
  83   2                                                dealayms(100);
  84   2                                                dealayms(100);
  85   2                                                CH452_SCL_CLR;
  86   2                                                dealayms(100);
  87   2                                               }
  88   1                                 //*****************************************************
  89   1                                 CH452_SDA_CLR;    //R/W=0   表示继续写数据
  90   1                                 CH452_SCL_SET;
  91   1                                 dealayms(100);
  92   1                                 CH452_SCL_CLR;
  93   1                                 //*****************************************************
  94   1                                 CH452_SDA_SET;    //接受应答
  95   1                                 CH452_SCL_SET;
  96   1                                 dealayms(100);
  97   1                                 CH452_SCL_CLR;
  98   1                                 //*****************************************************
  99   1                                 for(i=0;i!=8;i++)      // 输出8位数据  D7-D0
 100   1                                               {
 101   2                                                if(data_8B&0x80) {CH452_SDA_SET;}
 102   2                                                else {CH452_SDA_CLR;}
 103   2                                                CH452_SCL_SET;
 104   2                                                data_8B<<=1;
 105   2                                                dealayms(100);
 106   2                                                dealayms(100);
 107   2                                                CH452_SCL_CLR;
 108   2                                                dealayms(100);
 109   2                                               }
 110   1                                 //**************************************************
 111   1                                 CH452_SCL_SET;
 112   1                                 CH452_SDA_SET;                                                                                                                                                                 
 113   1                                 dealayms(100);
 114   1                                 dealayms(100);
 115   1                }
C51 COMPILER V8.05a   STC5410_AD                                                           03/17/2009 20:35:48 PAGE 3   

 116          //****************************************************************************************************88
 117          //*******************************************************************************************************
 118          //显示函数
 119          void   Temp_display()
 120                    {
 121   1                              
 122   1      //*******************************************************************************************************/
 123   1                                       //**********************设置显示参数 四位显示
 124   1                                         data_H=0x03;                    //0x03表示显示4位
 125   1                                         data_L=0x40;
 126   1                                         CH452_WrByte(data_H,data_L);
 127   1                                       //**************************************************
 128   1                                         data_H=0x0B;                                //第1位显示
 129   1                                         data_L=display[polarity];
 130   1                                         CH452_WrByte(data_H,data_L);
 131   1                                         //**************************************************
 132   1                                         //**************************************************
 133   1                                         data_H=0x0A;                                //第2位显示
 134   1                                         data_L=display[tem10];
 135   1                                         CH452_WrByte(data_H,data_L);
 136   1                                         //**************************************************
 137   1                                         //**************************************************
 138   1                                         data_H=0x09;                                //第3位显示
 139   1                                         data_L=display[tem1]|0x80;                          //显示小数点
 140   1                                         CH452_WrByte(data_H,data_L);
 141   1                                         //**************************************************
 142   1                                         data_H=0x08;                                //第4位显示
 143   1                                         data_L=display[tem_1];                                 
 144   1                                         CH452_WrByte(data_H,data_L);
 145   1                                         //**************************************************
 146   1      //*******************************************************************************************************       
             -                           data_H=0x04;
 147   1                                 data_H=0x04;
 148   1                                 data_L=0x11;
 149   1                                 CH452_WrByte(data_H,data_L);
 150   1                                 dealayms(5);  
 151   1                                 }                            
 152           //*****************************************************************************************                            
 153                                          void delay(uint number)                          //毫秒延时
 154                                         {
 155   1                                for(;number!=0;number--);
 156   1                                     }
 157           //*****************************************************************************************
 158                     void serialset (void)           //串口设置
 159                          {
 160   1                      TMOD=0x21;  //定义串行口  (T1波特率发生器)
 161   1                      TL1=0xFA;   //波特率为9600
 162   1                      TH1=0xFA;
 163   1                      EA = 1; 
 164   1                      PCON=0x80;
 165   1                      ET1=0;
 166   1                      TR1=1;
 167   1                      TI=0;
 168   1                      ES=1;
 169   1                      SCON=0x50;
 170   1                      PS=1;        //串口中断优先级设置最高
 171   1                      }
 172                   //****************************************************************************************
 173                    void sendchar(unsigned int sendsign)//  //单字节发送子程序
 174                          {
 175   1                            ES=0;
 176   1                            SBUF=sendsign;
C51 COMPILER V8.05a   STC5410_AD                                                           03/17/2009 20:35:48 PAGE 4   

 177   1                            while(TI==0);
 178   1                            TI=0;
 179   1                            ES=1;
 180   1                      }
 181          //****************************************************************************************************88
 182          /************************************************************
 183                          *Function:延时处理
 184                          *parameter:
 185                          *Return:

⌨️ 快捷键说明

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