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

📄 hd7279.lst

📁 此代码是运用KEILC51语言编写的关于高低频率测量的高效代码,具有极大的实用性.
💻 LST
字号:
C51 COMPILER V6.02  HD7279                                                                 09/10/2005 18:52:20 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE HD7279
OBJECT MODULE PLACED IN .\hd7279.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\hd7279.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #define _HD7279_C_Def
   2          #include "hd7279.h"
   3          
   4          void write7279(unsigned char cmd, unsigned char dta);
   5          unsigned char read7279(unsigned char command);
   6          void send_byte( unsigned char out_byte);
   7          unsigned char receive_byte(void);
   8          void long_delay(void);
   9          void short_delay(void);
  10          
  11          
  12          //向HD7279发送纯指令
  13          //cmd: 指令
  14          void SendInstructTo7279(unsigned char cmd)
  15          {
  16   1        clk_HD7279 = 0;
  17   1        _nop_();
  18   1        _nop_();
  19   1        cs_HD7279 = 0;
  20   1        send_byte (cmd);
  21   1        long_delay();
  22   1        cs_HD7279 = 1;
  23   1      }
  24          //bitNo:0~7, 要设置那一位LED
  25          //data: 该位LED要显示的数据, 格式为: DP|X|X|X|d3|d2|d1|d0 ,其中DP为小数点, X=无影响 , d0~d3为数据
  26          //transMode: 0=译码方式0; 1=译码方式1;others=不译码
  27          unsigned char SetupLedData(unsigned char bitNo, unsigned char dat, unsigned char transMode)
  28          {
  29   1       if( bitNo > 7) return 0;
  30   1       if( transMode==0 )
  31   1         bitNo = bitNo | DECODE0;
  32   1       else if( transMode==1 )
  33   1         bitNo = bitNo | DECODE1;
  34   1       else
  35   1         bitNo = bitNo | UNDECODE;
  36   1      
  37   1       write7279(bitNo, dat);
  38   1       
  39   1       return 1;
  40   1      }
  41          //flashCon: d8|...|d1 , d1到d8分别对应数码管1-8, 0=闪烁, 1=不闪烁
  42          void Flash7279(unsigned char flashCon)
  43          {
  44   1        write7279(BLINKCTL, flashCon);
  45   1        return;
  46   1      }
  47          //hideCon: d8|...|d1 , d1到d8分别对应数码管1-8, 0=消隐, 1=显示
  48          void Hide7279(unsigned char hideCon)
  49          {
  50   1        write7279(ACTCTL, hideCon);
  51   1        return;
  52   1      }
  53          //conOn:  X|X|d6|...|d1, d0-d5范围为00H-3FH .从第1个数码管到第8个数码管,从G段到A,DP段 依次为每段编码.
  54          void SegOn7279(unsigned char conOn)
  55          {
C51 COMPILER V6.02  HD7279                                                                 09/10/2005 18:52:20 PAGE 2   

  56   1        write7279(SEGON, conOn);  
  57   1        return;
  58   1      }
  59          //conOff:  X|X|d6|...|d1, d0-d5范围为00H-3FH .从第1个数码管到第8个数码管,从G段到A,DP段 依次为每段编码.
  60          void SegOff7279(unsigned char conOff)
  61          {
  62   1        write7279(SEGOFF, conOff);
  63   1        return;
  64   1      }
  65          unsigned char Read7279KeyCode(void)
  66          {
  67   1        return read7279(CMD_READ);
  68   1      }
  69          
  70          //向HD7279发送数据
  71          void write7279(unsigned char cmd, unsigned char dta)
  72          {
  73   1        clk_HD7279 = 0;
  74   1        _nop_();
  75   1        _nop_();
  76   1        cs_HD7279 = 0;
  77   1        send_byte (cmd);
  78   1        send_byte (dta);
  79   1        long_delay();
  80   1        cs_HD7279 = 1;
  81   1      }
  82          unsigned char read7279(unsigned char command)
  83          {
  84   1        clk_HD7279 = 0;
  85   1        _nop_();
  86   1        _nop_();
  87   1        cs_HD7279 = 0;
  88   1        send_byte(command);
  89   1        return(receive_byte());
  90   1      }
  91          void send_byte( unsigned char out_byte)
  92          {
  93   1        unsigned char i;
  94   1        long_delay();
  95   1        for ( i=0;i<8;i++ )
  96   1        {
  97   2          if (out_byte & 0x80)  dat_HD7279 = 1;
  98   2          else                  dat_HD7279 = 0;
  99   2          _nop_();
 100   2          _nop_();
 101   2          clk_HD7279 = 1;
 102   2          short_delay();
 103   2          clk_HD7279 = 0;
 104   2          short_delay();
 105   2          out_byte = out_byte<<1;
 106   2        }
 107   1        dat_HD7279 = 0;
 108   1      }
 109          
 110          unsigned char receive_byte(void)
 111          {
 112   1        unsigned char i, in_byte;
 113   1        dat_HD7279 = 1; //
 114   1        long_delay();
 115   1        for ( i=0;i<8;i++ )
 116   1        {
 117   2          clk_HD7279 = 1;
C51 COMPILER V6.02  HD7279                                                                 09/10/2005 18:52:20 PAGE 3   

 118   2          short_delay();
 119   2          in_byte = in_byte << 1;
 120   2          if (dat_HD7279)
 121   2          {
 122   3            in_byte = in_byte|0x01;
 123   3          }
 124   2          clk_HD7279 = 0;
 125   2          short_delay();
 126   2        }
 127   1        dat_HD7279=0;
 128   1        
 129   1        long_delay();  
 130   1        cs_HD7279 = 1;
 131   1        return (in_byte);
 132   1      }
 133          void long_delay(void)
 134          {
 135   1        unsigned char i;
 136   1        for (i=0;i<0x30;i++)
 137   1        _nop_();
 138   1      }
 139          void short_delay(void)
 140          {
 141   1        unsigned char i;
 142   1        for (i=0;i<8;i++)
 143   1        _nop_();
 144   1      }


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


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

⌨️ 快捷键说明

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