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

📄 main.lst

📁 实现几个控制的同步的AT24C512的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   MAIN                                                                  06/20/2007 14:37:47 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\main.c DEBUG OBJECTEXTEND

line level    source

   1          
   2          /*通过音乐频谱来切换动画*/
   3          /*包含的库文件*/
   4          #pragma small
   5          #pragma CODE DEBUG SYMBOLS OBJECTEXTEND
   6          //#include "..\includes\TypeDef.h"
   7          #include <reg52.h>
   8          #include <stdio.h>
   9          #include <stdlib.h>
  10          #include <math.h>
  11          //#include <tdp.h>
  12          #include <string.h>
  13          #define  uchar  unsigned  char
  14          #define  ulint  unsigned  long int
  15          #define  uint   unsigned  int
  16          /***********************************************/
  17          static data uchar cc[16];
  18          #define  adress_num 0x02//分控总数
  19          #define  row 16//有多少行
  20          #define  list 16 //一行有多少个像素;
  21          #define  tset  1          //数码管RGB排列情况
  22                                                    //0是RGB  RGB  RGB
  23                                //1是RGBx RGBx RGBx
  24                                                    //2是xRGB xRGB xRGB
  25          uint dpara,c_in,corx,corx1;           //延迟的最小单位时间
  26          uchar code color_data[8]={0,4,2,1,6,5,3,7};//黑,红,绿,蓝,黄,紫,青,白//阳码
  27          //uchar code color_data[8]={7,3,5,6,1,2,4,0};//黑,红,绿,蓝,黄,紫,白//阴码
  28          uchar code color_data01[6]={4,6,2,3,1,5};
  29          uchar data adress;
  30          uchar  adress_ack=1;
  31          /*********************************************************************
  32                        颜色组合 数组
  33          *********************************************************************/
  34          uchar  code color_data333[28]={4,4,4,4,6,6,6,6,2,2,2,2,3,3,3,3,1,1,1,1,5,5,5,5 ,7,7,7,7};                                                               
  35           #define  length   24  //       颜色数组 的列数
  36           #define  width   0        //           颜色数组 的行数
  37          /*********************************************************************/
  38          #define  wbyte    list/8//一行要用多少个字节来表示字色
  39          #define KEY P1
  40          uint ts;
  41          uint r_in;           //延迟的最小单位时间
  42          uint t_in;           //延迟的最小单位时间
  43          static data uchar rbuf[16];
  44          
  45                                    /*定义颜色控制端口*/
  46          sbit   DQ_595=P1^3;/*蓝线 HS74HC595的数据输入*/
  47          sbit   CLK_595=P1^2;/*绿线  HS74HC595的时钟*/
  48          sbit   STB_595=P1^1;/*红线  HS74HC595的数据锁存*/
  49          sbit   EN_595=P1^0;/*黄线  HS74HC595的数据使能*/
  50          sbit   RE_DE=P3^3;/*MAX487的收发器控制,当RE_DE=1时当前487处于接收状态 当RE_DE=0时当前487处于发送状态*/
  51           
  52          /*********************延时函数*************
  53          函数原型:void dely(ulint timepara);
  54          功    能:延时等待,参数timepara为延时时间*/
  55          void delay(ulint timepara)
C51 COMPILER V8.02   MAIN                                                                  06/20/2007 14:37:47 PAGE 2   

  56          { ulint mpara=0;
  57   1              do
  58   1          {
  59   2              mpara=mpara+1;
  60   2              }
  61   1              while (mpara!=timepara);
  62   1      }
  63          /*********************延时函数*************
  64          函数原型:void dely(ulint timepara);
  65          功    能:延时等待,参数timepara为延时时间*/
  66          void delays(ulint timepara)
  67          {ulint i;
  68   1              for(i=0;i<timepara;i++)
  69   1              {
  70   2                ts=1; 
  71   2                delay(dpara*ts);//12M ---207---0.010S=10ms
  72   2              }
  73   1      }
  74          
  75          
  76          
  77          /*********************串口中断初始化*************/
  78          /*设置串行口工作方式1,定时器1作为波特率发生器
  79          波特率设置为  2400 ;*/
  80          void comm (void)
  81          {TMOD=0x20;/*设置定时器T1工作方式2*/
  82   1       //TL1=0xff;/*定时器计数初值,1152Bps波特率 115.2KBps*/
  83   1       //TH1=0xff;/*定时器重装值*/
  84   1      TL1=0xfd;/*定时器计数初值,9600Bps波特率 115.2KBps*/
  85   1      TH1=0xfd;/*定时器重装值*/
  86   1       EA=1;/*允许总的中断*/
  87   1       ES=1;/*允许串行中断*/
  88   1      PCON=0x00;/*波特率不倍增*/
  89   1       //PCON |=0x80;/*波特率倍增*/
  90   1       SCON=0x50;/*设置串口工作方式1,REN = 1 允许接收*/
  91   1       TR1=0x01;/*定时器开始工作*/
  92   1      }
  93          //---------------------------------------------------
  94          //函数名称:UART_init()
  95          //函数功能:串口中断初始化
  96          //---------------------------------------------------
  97          /*
  98          void UART_init()
  99          {
 100          //初始化串行设置
 101          SCON=0x50;        //选择串口工作方式为1,打开接受允许
 102          PCON=0x00;        //波特率提高一倍
 103          TMOD=0x20;        //定时器1工作在方式2
 104          
 105          TH1=0xfd;
 106          TL1=0xfd;
 107           
 108          EA=1;
 109          ES=1;
 110          PS=1;
 111           
 112          ET1=0;
 113          TR1=1;
 114          }
 115          */
 116          
 117          
C51 COMPILER V8.02   MAIN                                                                  06/20/2007 14:37:47 PAGE 3   

 118          
 119          
 120          void gen(void)
 121          {  
 122   1         ES=0;/*关闭串行中断*/
 123   1         STB_595=1;//关闭指示灯
 124   1         dpara=207;
 125   1         delays(10);
 126   1         STB_595=0;//打开指示灯
 127   1         dpara=207;
 128   1         delays(10);
 129   1         ES=1;/*关闭串行中断*/
 130   1      }
 131          
 132          /*接收一个字符
 133          void recv_byte(uchar recv)
 134           {        RE_DE=1;//当前487处于接收状态 
 135                while(RI==0);//等待接收数据
 136                    RI=0;//清除接收标志位 
 137                    recv=SBUF;
 138                  }*/
 139          
 140          
 141          /*发送一个字符*/
 142          void send_byte(uchar send)
 143           {       RE_DE=0;/*当前487处于发送状态*/
 144   1           SBUF=send;
 145   1                while(TI==0); /*等待发送完毕*/
 146   1                TI=0;/*清除发送中断标志*/
 147   1              }
 148          
 149          //--------------------------------------------------
 150          //函数名称:send_1_bit(uchar send)
 151          //函数功能:
 152          //--------------------------------------------------
 153          
 154          /*void send_1_bit(uchar send)
 155          {
 156           RE_DE=0;
 157           SBUF=send;
 158           while(TI==0)
 159           TI=0;
 160          }*/
 161          //--------------------------------------------------
 162          //函数名称:recev_1_bit()
 163          //函数功能:
 164          //--------------------------------------------------
 165          void recev_1_bit(uchar recev)
 166          {
 167   1      RE_DE=1;
 168   1      while(RI==0);
 169   1      RI=0;
 170   1      recev=SBUF;
 171   1      }
 172           //调速度函数oid ts_key(void)
 173            //调速度函数
 174          void ts_key(void)
 175          {
 176   1       ts=KEY&0xF0;//保留高4位,去掉低4位
 177   1       ts=ts>>4;
 178   1       if (ts==0||ts==15){ts=1;}
 179   1       }
C51 COMPILER V8.02   MAIN                                                                  06/20/2007 14:37:47 PAGE 4   

 180          /****主程序*******************/
 181          void main(void)
 182          {
 183   1      
 184   1      uchar i;
 185   1      uchar sb[4]={0xe5,0xe5,0x02,0x03};
 186   1      
 187   1      dpara=207;
 188   1      delays(500);
 189   1      //RE_DE=0;/*当前487处于发送状态*/ 
 190   1      //UART_init();
 191   1      comm();
 192   1      IE0=1;      //开外部中断允许
 193   1      IT0=0;      //电平触发方式
 194   1      strat:
 195   1      EN_595=0;
 196   1      ES=0;/*关闭串行中断*/
 197   1      EA=1;/*开启总中断*/
 198   1      STB_595=0;//打开指示灯
 199   1      for(adress=1;adress<adress_num+1;adress++)
 200   1      {adress_ack=1;
 201   2        for(i=0;i<4;i++)
 202   2           {
 203   3            send_byte(sb[i]);//发送控制字
 204   3           }
 205   2        send_byte(adress);//发送分控地址
 206   2      }
 207   1      //gen();
 208   1      ES=0;EA=0;/*关闭串行中断及总中断*/
 209   1      /*dpara=207;
 210   1      delays(2);*/
 211   1      STB_595=1;//关闭指示灯
 212   1      goto strat;
 213   1      }
 214          
C51 COMPILER V8.02   MAIN                                                                  06/20/2007 14:37:47 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _delay (BEGIN)
                                           ; SOURCE LINE # 55
0000 8F00        R     MOV     timepara+03H,R7
0002 8E00        R     MOV     timepara+02H,R6
0004 8D00        R     MOV     timepara+01H,R5
0006 8C00        R     MOV     timepara,R4
                                           ; SOURCE LINE # 56
0008 E4                CLR     A
0009 F500        R     MOV     mpara+03H,A
000B F500        R     MOV     mpara+02H,A
000D F500        R     MOV     mpara+01H,A
000F F500        R     MOV     mpara,A
0011         ?C0003:
                                           ; SOURCE LINE # 58
                                           ; SOURCE LINE # 59
0011 E500        R     MOV     A,mpara+03H
0013 2401              ADD     A,#01H
0015 F500        R     MOV     mpara+03H,A
0017 E4                CLR     A
0018 3500        R     ADDC    A,mpara+02H
001A F500        R     MOV     mpara+02H,A
001C E4                CLR     A
001D 3500        R     ADDC    A,mpara+01H
001F F500        R     MOV     mpara+01H,A
0021 E4                CLR     A
0022 3500        R     ADDC    A,mpara
0024 F500        R     MOV     mpara,A
                                           ; SOURCE LINE # 60
                                           ; SOURCE LINE # 61
0026 AF00        R     MOV     R7,timepara+03H
0028 AE00        R     MOV     R6,timepara+02H
002A AD00        R     MOV     R5,timepara+01H
002C AC00        R     MOV     R4,timepara
002E AB00        R     MOV     R3,mpara+03H
0030 AA00        R     MOV     R2,mpara+02H
0032 A900        R     MOV     R1,mpara+01H
0034 F8                MOV     R0,A
0035 C3                CLR     C
0036 120000      E     LCALL   ?C?ULCMP
0039 70D6              JNZ     ?C0003
                                           ; SOURCE LINE # 62
003B 22                RET     
             ; FUNCTION _delay (END)

             ; FUNCTION L?0028 (BEGIN)
0000 750000      R     MOV     dpara,#00H
0003 7500CF      R     MOV     dpara+01H,#0CFH
0006 7F0A              MOV     R7,#0AH
0008 7E00              MOV     R6,#00H
000A         L?0029:
000A 7D00              MOV     R5,#00H
000C 7C00              MOV     R4,#00H
             ; FUNCTION _delays (BEGIN)
                                           ; SOURCE LINE # 66
000E 8F00        R     MOV     timepara+03H,R7
0010 8E00        R     MOV     timepara+02H,R6
0012 8D00        R     MOV     timepara+01H,R5
0014 8C00        R     MOV     timepara,R4
                                           ; SOURCE LINE # 67
C51 COMPILER V8.02   MAIN                                                                  06/20/2007 14:37:47 PAGE 6   

                                           ; SOURCE LINE # 68
0016 E4                CLR     A
0017 F500        R     MOV     i+03H,A
0019 F500        R     MOV     i+02H,A
001B F500        R     MOV     i+01H,A
001D F500        R     MOV     i,A
001F         ?C0005:
001F AF00        R     MOV     R7,timepara+03H
0021 AE00        R     MOV     R6,timepara+02H
0023 AD00        R     MOV     R5,timepara+01H
0025 AC00        R     MOV     R4,timepara
0027 AB00        R     MOV     R3,i+03H
0029 AA00        R     MOV     R2,i+02H
002B A900        R     MOV     R1,i+01H
002D A800        R     MOV     R0,i
002F C3                CLR     C
0030 120000      E     LCALL   ?C?ULCMP

⌨️ 快捷键说明

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