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

📄 key_disp.lst

📁 MCU51-JZ01单片机开发板实验例程
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.50   KEY_DISP                                                              12/06/2006 14:10:24 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE KEY_DISP
OBJECT MODULE PLACED IN key_disp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key_disp.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          /*******************************************************************************
   3          *  标题:  DS18B20温度检测程序            
   4          *  文件:  key_disp.C                                                              
   5          *  日期:  2006-12-6                                                             
   6          *  版本:  1.0                                                                                             
             -                 
   7          
   8          ********************************************************************************
   9          *  描述: 温度采样时间间隔为442ms;                                              *
  10          *        按S6键显示第一通道温度值;按S14键显示第二通道温度值                   *
  11          *        按S5键轮流显示第一通道和第二通道的温度值;按S13键清除显示             *
  12          *******************************************************************************/
  13          #include "reg51.h"  
  14          #include "stdio.h"
  15          #define uchar unsigned char
  16          #define uint unsigned int
  17          //**************************** 函数声明 ******************************
  18          void long_delay(void);                       // 延时50us
  19          void short_delay(void);                      // 延时8us
  20          void delay1ms(unsigned int);                 // 延时10MS
  21          void write7279(unsigned char, unsigned char);// 写入到HD7279
  22          unsigned char read7279(unsigned char);       // 从HD7279读出
  23          void send_byte(unsigned char);               // 发送一个字节
  24          unsigned char receive_byte(void);            // 接受一个字节
  25          unsigned char key_read();                    // 读键码
  26          void  key_serve(void);                       // 键盘服务程序
  27          
  28          void ini_uart(void);
  29          void UartSent(uchar);
  30          
  31          void tmp1 (void);
  32          void tm1reset (void);
  33          bit tmp1read (void);
  34          unsigned char tmp1read2 (void);
  35          void tmp1write (unsigned char);
  36          void tmp1change(void);
  37          unsigned char ReadRom1();
  38          
  39          void tmp2 (void);
  40          void tm2reset (void);
  41          bit tmp2read (void);
  42          unsigned char tmp2read2 (void);
  43          void tmp2write (unsigned char);
  44          void tmp2change(void);
  45          void tmp2 (void);
  46          unsigned char ReadRom2(void);
  47          
  48          //************************* 变量及I/O口定义 **************************
  49          sbit clk = P2^4;                             // clk连接于P2.4
  50          sbit dat = P2^3;                             // dat连接于P2.3
  51          sbit key = P2^2;                             // key连接于P2.2
  52          
  53          sbit DQ1 = P1^1;
  54          sbit DQ2 = P1^6;
C51 COMPILER V7.50   KEY_DISP                                                              12/06/2006 14:10:24 PAGE 2   

  55          
  56          uchar key_number;
  57          uchar key_6;
  58          uchar key_14;
  59          uchar key_5;
  60          uchar data Family_Code;
  61          
  62          uchar Offset;
  63          uchar Templ;                                                                    // 温度值的变量;
  64          uchar bdata Temph;
  65          sbit flag = Temph^7;                            // 结果为负和正的标志位。
  66          //**************************  HD7279A指令  ****************************
  67          #define CMD_RESET 0xa4                       // 复位指令
  68          #define CMD_TEST 0xbf                        // 测试指令
  69          #define DECODE0 0x80                         // 下载数据且按方式0译码
  70          #define DECODE1 0xc8                         // 下载数据且按方式1译码
  71          #define CMD_READ 0x15                        // 读键盘数据指令
  72          #define UNDECODE 0x90                        // 下载数据但不译码
  73          #define RTL_CYCLE 0xa3                       // 循环左移指令
  74          #define RTR_CYCLE 0xa2                       // 循环右移指令
  75          #define RTL_UNCYL 0xa1                       // 左移指令
  76          #define RTR_UNCYL 0xa0                       // 右移指令
  77          #define ACTCTL 0x98                          // 消隐控制
  78          #define SEGON 0xe0                           // 段点亮指令
  79          #define SEGOFF 0xc0                          // 段关闭指令
  80          #define BLINKCTL 0x88                        // 闪烁控制
  81          
  82          //***************************** main **********************************
  83          void main(void)
  84          {
  85   1       
  86   1          ini_uart();
  87   1          P0 = 0;
  88   1          delay1ms(20);                            //上电延时20ms
  89   1          send_byte(CMD_RESET);                    //清除显示   
  90   1          while (1)                     
  91   1          {
  92   2             
  93   2               if(!key) 
  94   2               {
  95   3                    key_read();
  96   3                    key_serve(); 
  97   3               }                 
  98   2          }
  99   1               
 100   1      }
 101          //************************** 子程序 **********************************
 102          void write7279(unsigned char cmd, unsigned char dta)
 103          {
 104   1           send_byte (cmd);
 105   1           send_byte (dta);
 106   1      }
 107          unsigned char read7279(unsigned char command)
 108          {
 109   1           send_byte(command);
 110   1           return(receive_byte());
 111   1      }
 112          //========================= 单字节发送程序 ============================
 113          void send_byte( unsigned char out_byte)
 114          {
 115   1           unsigned int i;
 116   1           long_delay();                             // 延时50us
C51 COMPILER V7.50   KEY_DISP                                                              12/06/2006 14:10:24 PAGE 3   

 117   1           for (i=0;i<8;i++)
 118   1           {
 119   2                if (out_byte&0x80)
 120   2                {
 121   3                    dat = 1;                         // dat输出置"1"
 122   3                }
 123   2                else
 124   2                {
 125   3                    dat = 0;                         // dat输出置"0"
 126   3                }    
 127   2                clk = 1;                             // clk输出置"1"
 128   2                short_delay();
 129   2                clk = 0;                             // clk输出置"0"
 130   2                short_delay();
 131   2                out_byte<<=1;                        // 逻辑左移1位,右侧补0
 132   2           }
 133   1           dat = 0;                                  // dat输出置"0"
 134   1      }
 135          
 136          //========================== 单字节接收程序 ===========================
 137          unsigned char receive_byte(void)
 138          {
 139   1           unsigned char in_byte;
 140   1           unsigned char i;
 141   1           dat = 1;                                  // 设为输入状态
 142   1           long_delay();
 143   1           for (i=0;i<8;i++)
 144   1           {
 145   2                clk = 1;                             // clk输出置"1"
 146   2                short_delay();
 147   2                in_byte<<=1;                         // 逻辑左移1位,右侧补0
 148   2                
 149   2                
 150   2                if (dat)                             // 读dat输入,若为"1"
 151   2                {
 152   3                     in_byte=in_byte|0x01;
 153   3                }
 154   2                
 155   2                clk = 0;                             // clk输出置"0"
 156   2                short_delay();
 157   2           }
 158   1           dat = 0;                                  // 设置dat输出"0";
 159   1           return (in_byte);
 160   1      }
 161          
 162          //============================ 延时94us ===============================
 163          void long_delay(void)          
 164          {
 165   1           unsigned char i;
 166   1           for (i=0;i<0x0A;i++);
 167   1      }
 168          
 169          //============================ 延时25us ================================
 170          void short_delay(void)
 171          {
 172   1           unsigned char i;      
 173   1           for (i=0;i<2;i++); 
 174   1      }              
 175          
 176          // **************************** n*1ms *********************************
 177          void delay1ms(unsigned int time)
 178          {
C51 COMPILER V7.50   KEY_DISP                                                              12/06/2006 14:10:24 PAGE 4   

 179   1           unsigned int i;
 180   1           unsigned int j;
 181   1      
 182   1           for (i=0;i<time;i++)
 183   1           {
 184   2                for(j=0;j<0xC0;j++);       
 185   2           }

⌨️ 快捷键说明

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