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

📄 4.3.4.lst

📁 单片机C编程实例
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   4_3_4                                                                 12/13/2007 12:52:34 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 4_3_4
OBJECT MODULE PLACED IN 4.3.4.OBJ
COMPILER INVOKED BY: D:\Edaexe\Keilu3\UV3 8.05\C51\BIN\C51.EXE 4.3.4.c DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>                              /*函数定义*/
   2          void long_delay(void);                          //长延时
   3          void short_delay(void);                         //短延时
   4          void delay10ms(unsigned char);                  //延时10ms
   5          void write7279(unsigned char, unsigned char);   //写入HD7279
   6          unsigned char read7279(unsigned char);          //读HD7279
   7          void send_byte(unsigned char);                  //发送一个字节
   8          unsigned char receive_byte(void);               //接收一个字节
   9          /*****************变量及I/O口定义**********************/
  10          unsigned char digit[5];
  11          unsigned char key_number, j, k;
  12          unsigned int tmr;
  13          unsigned long wait_cnter;
  14          sbit cs=P2^3;                                   //cs连接P1.4
  15          sbit clk=P2^0;                                  //clk连接P1.5
  16          sbit dat=P2^1;                                  //dat连接P1.2
  17          sbit key=P2^2;                                  //key连接P1.3
  18          
  19          /****** ***********HD7279A指令定义*********************/
  20          #define CMD_RESET 0xa4                          //复位指令
  21          #define CMD_TEST 0xbf                           //测试指令
  22          #define DECODE0 0x80                            //方式0译码指令
  23          #define DECODE1 0xc8                            //方式1译码指令
  24          #define CMD_READ 0x15                           //读键盘指令
  25          #define UNDECODE 0x90                           //不译码指令
  26          #define RTL_CYCLE 0xa3                          //循环左移指令
  27          #define RTR_CYCLE 0xa2                          //循环右移指令
  28          #define RTL_UNCYL 0xa1                          //左移指令
  29          #define RTR_UNCYL 0xa0                          //右移指令
  30          #define ACTCTL 0x98                             //消隐控制指令
  31          #define SEGON 0xe0                              //段点亮指令
  32          #define SEGOFF 0xc0                             //段关闭指令
  33          #define BLINKCTL 0x88                           //闪烁控制指令
  34          
  35          /********************主程序*********************************/
  36          void main()
  37          {
  38   1              while (1)
  39   1              {
  40   2                      for (tmr=0;tmr<0x2000;tmr++);   //上电延时
  41   2                      send_byte(CMD_RESET);               //复位HD7279A
  42   2      /*************闪烁指令指令及键盘接口测试程序,将用户***************************/
  43   2                      send_byte(CMD_TEST);            //测试指令
  44   2                      for (j=0;j<3;j++)                   //延时约3
  45   2                      {
  46   3                              delay10ms(100);
  47   3                      }
  48   2                      send_byte(CMD_RESET);           //清除显示
  49   2      /**********************************************
  50   2      测试指令演示程序将用户按键的键码显示出来,如果10秒内无按键或者按S0键进入下一步演示
  51   2      **********************************************/
  52   2                      wait_cnter=0;
  53   2                      key_number=0xff;
  54   2                      write7279(BLINKCTL,0xfc);       //第1、2两位设为闪烁显示
  55   2                      write7279(UNDECODE,0X08);       //在第1位显示下划线'_'
C51 COMPILER V8.02   4_3_4                                                                 12/13/2007 12:52:34 PAGE 2   

  56   2                      write7279(UNDECODE+1,0x08);     //在第2位显示下划线 '_'
  57   2                      do
  58   2                      {
  59   3                              if (!key)               //如果有键按下
  60   3                              {
  61   4                                      key_number=read7279(CMD_READ);          //读出键码
  62   4                                      write7279(DECODE1+1,key_number/16);     //在第2位显示键码高8位
  63   4                                      write7279(DECODE1,key_number&0x0f);     //在第1位显示键码低8位
  64   4                                      while (!key);                           //等待按键按下
  65   4                                      wait_cnter=0;
  66   4                              }
  67   3                              wait_cnter++;
  68   3                      } while (key_number!=0 && wait_cnter<0x30000);  
  69   2                                                               //如果按键为'0'和超时则进入下一步演示
  70   2                      write7279(BLINKCTL,0xff);       //清除闪烁设置
  71   2      /****************快速计数演示程序***************************/
  72   2                      for (j=0;j<5;j++)               //计数初始值为00000
  73   2                      {                       
  74   3                              digit[j]=0;
  75   3                              write7279(DECODE0+j,digit[j]);
  76   3                              write7279(DECODE0+5,0x0e);              //显示P
  77   3                      }
  78   2                      while (digit[4]<2)              //如果计数到20000就停止
  79   2                      {
  80   3                              digit[0]++;
  81   3                              if (digit[0]>9)
  82   3                              {
  83   4                                      digit[0]=0;
  84   4                                      digit[1]++;
  85   4                                      if (digit[1]>9)
  86   4                                      {
  87   5                                              digit[1]=0;
  88   5                                              digit[2]++;
  89   5                                              if (digit[2]>9)
  90   5                                              {
  91   6                                                      digit[2]=0;
  92   6                                                      digit[3]++;
  93   6                                                      if (digit[3]>9)
  94   6                                                      {
  95   7                                                              digit[3]=0;
  96   7                                                              digit[4]++;
  97   7                                                              if (digit[4]>9)
  98   7                                                              {
  99   8                                                                      digit[4]=0;
 100   8                                                              }
 101   7                                                      }
 102   6                                              }
 103   5                                      }
 104   4                              }
 105   3                              write7279(DECODE0,digit[0]);
 106   3                              if (digit[0]==0)
 107   3                              {
 108   4                                      write7279(DECODE0+1,digit[1]);
 109   4                                      if (digit[1]==0)
 110   4                                      {
 111   5                                              write7279(DECODE0+2,digit[2]);
 112   5                                              if (digit[2]==0)
 113   5                                              {
 114   6                                                      write7279(DECODE0+3,digit[3]);
 115   6                                                      if (digit[3]==0)
 116   6                                                      {
 117   7                                                              write7279(DECODE0+4,digit[4]);
C51 COMPILER V8.02   4_3_4                                                                 12/13/2007 12:52:34 PAGE 3   

 118   7                                                      }
 119   6                                              }
 120   5                                      }
 121   4                              }
 122   3                      }
 123   2                      delay10ms(150);
 124   2                      send_byte(CMD_RESET);           //清除显示
 125   2      /************下载数据但不译码指令测试程序***************/
 126   2                      write7279(UNDECODE+7,0x49);     //在第8位按不译码方式显示一字符'三'
 127   2                      delay10ms(80);
 128   2      /***********循环左右移测试'三'字向右移动23次,再向左移动23次*******************/
 129   2                      for (j=0;j<23;j++)
 130   2                      {
 131   3                              send_byte(RTR_CYCLE);   //循环右移23次
 132   3                              delay10ms(12);
 133   3                      }
 134   2                      for (j=0;j<23;j++)
 135   2                      {
 136   3                              send_byte(RTL_CYCLE);   //循环左移23次
 137   3                              delay10ms(12);
 138   3                      }
 139   2      /***********译码方式0及左移指令测试程序*******************/
 140   2                      for (j=0;j<16;j++)

⌨️ 快捷键说明

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