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

📄 dds.lst

📁 本系统的控制部分是以89C51为核心
💻 LST
字号:
C51 COMPILER V8.04   DDS                                                                   10/31/2006 11:10:06 PAGE 1   


C51 COMPILER V8.04, COMPILATION OF MODULE DDS
OBJECT MODULE PLACED IN E:\03440136\资料会总9.7\程序9.7\7279C发送接收程序\DDS.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE E:\03440136\资料会总9.7\程序9.7\7279C发送接收程序\DDS.C DB SB OE OT(0)

line level    source

   1          //用于MCS51的C语言例子程序
   2          //这是用于7279A评估板的C51子程序
   3          #include<reg51.h>
   4          //#include<at89x55>
   5          
   6          //***函数定义***
   7          void long_delay(void); //***长延时***
   8          void short_delay(void); //***短延时***
   9          void delay10ms(unsigned char); //延时10MS
  10          void write7279(unsigned char, unsigned char);// 写入到HD7279
  11          unsigned char read7279(unsigned char);// 从HD7279读出
  12          void send_byte(unsigned char); //发送一个字节
  13          unsigned char receive_byte(void); //接收一个字节
  14          
  15          //**定义变量及I/O口**
  16          
  17          unsigned char digit[5];
  18          unsigned char key_number, j, k;
  19          unsigned int tmr,sum=0;
  20          unsigned char  cnter=1;
  21          
  22          sbit cs=P1^0; // cs at P1.0
  23          sbit clk=P1^1; // clk 连接于P1.1
  24          sbit dat=P1^2; // data 连接于P1.2
  25          sbit key=P1^3; // key 连接于P1.3
  26          
  27           //****** HD7279A指令 ******
  28          #define CMD_RESET 0xa4  //复位(清除)指令
  29          #define CMD_TEST 0xbf   //测试指令
  30          #define DECODE0 0x80
  31          #define DECODE1 0xc8
  32          #define CMD_READ 0x15
  33          #define UNDECODE 0x90
  34          #define RTL_CYCLE 0xa3
  35          #define RTR_CYCLE 0xa2
  36          #define RTL_UNCYL 0xa1
  37          #define RTR_UNCYL 0xa0
  38          #define ACTCTL 0x98
  39          #define SEGON 0xe0
  40          #define SEGOFF 0xc0
  41          #define BLINKCTL 0x88
  42          
  43          //***主程序***
  44          void main()
  45          {
  46   1        while(1)
  47   1        {
  48   2       for (tmr=0;tmr<0x2000;tmr++); //上电延时
  49   2      send_byte(CMD_RESET); // 复位HD7279A
  50   2        while (1)
  51   2          {
  52   3            if (!key) //如果有键按下
  53   3              {
  54   4               key_number=read7279(CMD_READ);//读出键码
  55   4               P0=key_number;
C51 COMPILER V8.04   DDS                                                                   10/31/2006 11:10:06 PAGE 2   

  56   4               //sum=sum+cnter*key_number;
  57   4               //cnter=cnter*10;
  58   4               write7279(DECODE1+7,key_number&0x0F);//显示键码
  59   4               send_byte(RTL_CYCLE); // 循环左移23次
  60   4               delay10ms(12);
  61   4               while (!key); //等待按键放开
  62   4               cnter+=1;
  63   4               }
  64   3            }
  65   2      cnter=0;
  66   2        }
  67   1      }
  68          
  69          //**********************************************
  70          //****写****
  71          void write7279(unsigned char cmd, unsigned char dta)
  72          {
  73   1      send_byte (cmd);
  74   1      send_byte (dta);
  75   1      }
  76          
  77          //*********读出********
  78          unsigned char read7279(unsigned char command)
  79          {
  80   1      send_byte(command);
  81   1      return(receive_byte());
  82   1      }
  83          
  84          //***发送***
  85          void send_byte( unsigned char out_byte)
  86          {
  87   1      unsigned char i;
  88   1      cs=0;
  89   1      long_delay();
  90   1      for (i=0;i<8;i++)
  91   1        {
  92   2        if (out_byte&0x80)
  93   2          {dat=1;}
  94   2        else
  95   2         {dat=0;}
  96   2        clk=1;
  97   2        short_delay();
  98   2        clk=0;
  99   2        short_delay();
 100   2        out_byte=out_byte*2;
 101   2        }
 102   1      dat=0;
 103   1      }
 104          
 105          //***接收***
 106          unsigned char receive_byte(void)
 107          {
 108   1        unsigned char i, in_byte;
 109   1        dat=1;             //设为输入状态
 110   1        long_delay();
 111   1        for (i=0;i<8;i++)
 112   1        {
 113   2        clk=1;
 114   2        short_delay();
 115   2        in_byte=in_byte*2;
 116   2        if (dat)
 117   2          {in_byte=in_byte|0x01;}
C51 COMPILER V8.04   DDS                                                                   10/31/2006 11:10:06 PAGE 3   

 118   2        clk=0;
 119   2        short_delay();
 120   2        }
 121   1      dat=0;
 122   1      return (in_byte);
 123   1      }
 124          
 125          //***长延时***
 126          void long_delay(void)
 127          {
 128   1      unsigned char i;
 129   1      for (i=0;i<0x30;i++);
 130   1      }
 131          
 132          //***短延时***
 133          void short_delay(void)
 134          {
 135   1      unsigned char i;
 136   1      for (i=0;i<8;i++);
 137   1      }
 138          // ********************* 延时n*10ms **********************
 139          void delay10ms(unsigned char time)
 140          {
 141   1      unsigned char i;
 142   1      unsigned int j;
 143   1      for (i=0;i<time;i++)
 144   1      {
 145   2      for(j=0;j<0x390;j++)
 146   2      {
 147   3      if (!key)
 148   3      {
 149   4      //key_int();
 150   4      }
 151   3      }
 152   2      }
 153   1      }
C51 COMPILER V8.04   DDS                                                                   10/31/2006 11:10:06 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


receive_byte . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  in_byte. . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
_write7279 . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  cmd. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  dta. . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
digit. . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0000H  5
cnter. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0005H  1
long_delay . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
short_delay. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
key_number . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0006H  1
dat. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0092H  1
clk. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0091H  1
_send_byte . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  out_byte . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
key. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0093H  1
tmr. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0007H  2
_delay10ms . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  time . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0001H  1
  j. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_INT    0002H  2
cs . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0090H  1
sum. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0009H  2
j. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000BH  1
k. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000CH  1
_read7279. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  command. . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0000H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    271    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26    ----
   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 + -