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

📄 hd7279a.lst

📁 // This is a demo program for 7279a // It is test for 500R circuit // This is a demo for HD7279A
💻 LST
字号:
C51 COMPILER V7.08   HD7279A                                                               02/13/2006 09:55:21 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE HD7279A
OBJECT MODULE PLACED IN HD7279A.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE HD7279A.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          // This is a demo program for 7279a
   2          // It is test for HY500R circuit
   3          // This is a demo for HD7279A
   4          // Last change :27,Jan,06
   5          //**************************************** 
   6          #include <reg51.h>
   7          #include "hd7279a.h"
   8          
   9          // 数据类型定义
  10          #define uchar unsigned char
  11          #define uint unsigned int
  12          #define ulong unsigned long
  13          
  14          
  15          //变量及IO口定义
  16          uchar digit[5];
  17          uchar key_number, j, k;
  18          uint delay;
  19          ulong wait_cnter;
  20          sbit cs_7279=P1^4; 
  21          sbit clk=P1^7; 
  22          sbit dat=P1^6; 
  23          sbit key=P2^7; 
  24          sbit SPEAKER    =   P1^3; 
  25          
  26          
  27          /***************主函数***********************/
  28          main()
  29          {
  30   1              delay10ms(5);   // 上电延时
  31   1      
  32   1              while (1)
  33   1              {
  34   2              SPEAKER=0;
  35   2              for (delay=0;delay<0x2000;delay++); // 加电延时
  36   2                      send_byte(RESET_7279); // 复位7279A
  37   2                      delay10ms(2);
  38   2              //******************************************
  39   2              // test demo
  40   2              //******************************************
  41   2              send_byte(TEST_7279); // 测试指令,全亮并闪烁
  42   2              for (j=0;j<3;j++) // 延时约3秒
  43   2              {
  44   3                      delay10ms(100);
  45   3              }
  46   2              send_byte(RESET_7279); // 复位,清除显示
  47   2              
  48   2              
  49   2              write7279(DECODE1+0,0x00);
  50   2      write7279(DECODE1+1,0x01);
  51   2      write7279(DECODE1+2,0x02);
  52   2      write7279(DECODE1+3,0x03);
  53   2      write7279(DECODE1+4,0x04);
  54   2      write7279(DECODE1+5,0x05);
  55   2      write7279(DECODE1+6,0x06);
C51 COMPILER V7.08   HD7279A                                                               02/13/2006 09:55:21 PAGE 2   

  56   2      write7279(DECODE1+7,0x07);
  57   2      //ite7279(DECODE1+0,8);
  58   2      
  59   2              //*********************************************
  60   2              //译码方式1及右移指令测试
  61   2              //*********************************************
  62   2      //      for (j=0;j<16;j++)
  63   2      //      {
  64   2              //      send_byte(RTR_UNCYL); // 不循环右移指令
  65   2      //              write7279(DECODE1+7,j);
  66   2                      // 译码方式0指令,显示在第8位
  67   2                      delay10ms(50);
  68   2      //      }
  69   2              delay10ms(1500);
  70   2              //*********************************************
  71   2              }
  72   1      }
  73                  // 写指令--------------------------
  74                  void write7279(uchar cmd, uchar dta)
  75                  {
  76   1                      send_byte (cmd);
  77   1                      send_byte (dta);
  78   1              }
  79                  // 读数据--------------------------
  80                  uchar read7279(uchar cmd)
  81                  {
  82   1                      send_byte(cmd);
  83   1                      return(receive_byte());
  84   1              }
  85                  // 发送一个字节
  86                  void send_byte(uchar sbyte)
  87                  {
  88   1                      uchar i;
  89   1                      cs_7279=0;        
  90   1                      long_delay();
  91   1                      for (i=0;i<8;i++)
  92   1                      {
  93   2                              if (sbyte&0x80)
  94   2                              {
  95   3                                      dat=1;          // 第8位为1则置发送的第一个电平为高
  96   3                              }
  97   2                              else
  98   2                              {
  99   3                                      dat=0;
 100   3                              }
 101   2                              clk=1;              // 在上升沿写入
 102   2                              short_delay();
 103   2                              clk=0;
 104   2                              short_delay();   
 105   2                              sbyte=sbyte*2;      // 左移一位
 106   2                      }
 107   1                      dat=0;                  // 发送完一个字节后置数据线为0,输出状态
 108   1              }
 109                  
 110                  // 接收一个字节
 111                  uchar receive_byte(void)
 112                  {
 113   1                      uchar i, ibyte;
 114   1                      dat=1;                  // 设为输入状态
 115   1                      long_delay();
 116   1                      for (i=0;i<8;i++)
 117   1                      {
C51 COMPILER V7.08   HD7279A                                                               02/13/2006 09:55:21 PAGE 3   

 118   2                              clk=1;
 119   2                              short_delay();
 120   2                              ibyte=ibyte*2;      // 左移一位
 121   2                              if (dat)
 122   2                              {
 123   3                                      ibyte=ibyte|0x01;
 124   3                              }
 125   2                              clk=0;
 126   2                              short_delay();
 127   2                      }
 128   1                      dat=0;
 129   1                      return (ibyte);
 130   1              }
 131                  
 132                  // 处理按键
 133                  void key_process(void)
 134                  {
 135   1                 // add code here
 136   1              }
 137                  
 138                  // delay 160us
 139                  void long_delay(void)
 140                  {
 141   1                      uchar i;
 142   1                      for (i=0;i<0x30;i++);
 143   1              }
 144                  
 145                  // delay 33us
 146                  void short_delay(void)  
 147                  {
 148   1                      uchar i;
 149   1                      for (i=0;i<8;i++);
 150   1              }
 151                  
 152                  // *********************延时n*10ms **********************
 153                  void delay10ms(uchar ms)
 154                  {
 155   1                      uchar i;
 156   1                      uint j;
 157   1              
 158   1                      for (i=0;i<ms;i++)
 159   1                      {
 160   2                      for(j=0;j<0x390;j++)
 161   2                              {
 162   3                                      if(!key)             // 有按键则先处理按键中断
 163   3                                      {
 164   4                                              key_process();
 165   4                                      }
 166   3                              }
 167   2                      }
 168   1      }


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

C51 COMPILER V7.08   HD7279A                                                               02/13/2006 09:55:21 PAGE 4   


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

⌨️ 快捷键说明

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