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

📄 main.lst

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:33:05 PAGE 1   


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

stmt level    source

   1          #include <absacc.h>
   2          #include <intrins.h>
   3          #include <./Atmel/at89x51.h>
   4          
   5          //定义常量
   6          #define PrintStart 0x30
   7          #define PrintLen   0x10
   8          
   9          #define para8255Port_Mode 0
  10          #define para8255Port_A 1
  11          #define para8255Port_B 2
  12          #define para8255Port_C 3
  13          
  14          #define para8255reg_Mode  XBYTE[0x7FFF]
  15          #define para8255reg_PA  XBYTE[0x7FFC]
  16          #define para8255reg_PB  XBYTE[0x7FFD]
  17          #define para8255reg_PC  XBYTE[0x7FFE]
  18          
  19          //定义变量
  20          sfr para8255_Bus=0x80;
  21          unsigned char data *Print_ptr;
  22          
  23          bit print_on;
  24          bit RW_8255;
  25          
  26          unsigned char g_FirstByteAddr;
  27          unsigned char g_ByteNum;
  28          
  29          unsigned char g_ReadRegFor8255;
  30          unsigned char g_WriteRegFor8255;
  31          
  32          
  33          unsigned char CMD_8255;
  34          unsigned char PortX_8255;
  35          unsigned char ByteToBus;
  36          
  37          //函数声明
  38          void Print_fstByte(g_FirstByteAddr,g_ByteNum);
  39          void Print_aByte(void);
  40          void RdWt_8255(RW_8255,PortX_8255,ByteToBus);
  41          
  42          
  43          /*******************************************************
  44          功能:主函数
  45          描述:初始化、启动打印、进入空闲等待模式
  46          参数:无
  47          返回:无
  48          ********************************************************/
  49          main()
  50          {
  51   1      
  52   1        P1=0x00;
  53   1        P2=0x00;
  54   1        P3=0xFF;
  55   1        IE=0x80;
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:33:05 PAGE 2   

  56   1        print_on=0;
  57   1        g_FirstByteAddr = 0x30;
  58   1        g_ByteNum = 0x00;
  59   1        RdWt_8255(1,0,0xA4);//初始化8255
  60   1       
  61   1        while(1)
  62   1        {
  63   2           //此处添加其它程序,例如接收或等待打印命令;
  64   2           //确认打印,则print_on=1;
  65   2           if (print_on) 
  66   2                {
  67   3             EX1 = 1;       
  68   3             Print_fstByte(PrintStart,PrintLen); 
  69   3              };//end of if (print_on)    
  70   2      
  71   2      
  72   2         };//end of while(1)
  73   1      
  74   1      
  75   1      
  76   1      
  77   1      }
  78          
  79          /*******************************************************
  80          功能:RW_8255
  81          描述:读写8255
  82          参数:RW_8255:1表示写8255,0表示读8255
  83                PortX_8255:指示8255工作端口
  84                ByteToBus:要写的数据
  85          返回:如果RW_8255参数为0,则返回读结果g_ReadRegFor8255
  86          ********************************************************/
  87          void RdWt_8255(RW_8255,PortX_8255,ByteToBus)
  88          {  
  89   1        if(RW_8255)
  90   1        {
  91   2          switch(PortX_8255){
  92   3                                      case para8255Port_Mode:
  93   3                                              para8255reg_Mode = ByteToBus;
  94   3                                              break;
  95   3                                      case para8255Port_A:
  96   3                                              para8255reg_PA = ByteToBus;
  97   3                                              break;
  98   3                                      case para8255Port_B:
  99   3                          para8255reg_PB = ByteToBus;
 100   3                                               break;
 101   3                      case para8255Port_C:
 102   3                          para8255reg_PC = ByteToBus;                   
 103   3                          break;
 104   3                      default:
 105   3                                              para8255reg_PA = 0x00;
 106   3                                              para8255reg_PB = 0x00;
 107   3                                              para8255reg_PC = 0x00;
 108   3                                              break;  
 109   3                                                 };//end of switch(PortX_8255)                        
 110   2      
 111   2      
 112   2         }
 113   1        else
 114   1         {
 115   2              switch(PortX_8255){
 116   3                                      case para8255Port_Mode:
 117   3                                              g_ReadRegFor8255 = para8255reg_Mode;
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:33:05 PAGE 3   

 118   3                                              break;
 119   3                                      case para8255Port_A:
 120   3                                              g_ReadRegFor8255 = para8255reg_PA;
 121   3                                              break;
 122   3                                      case para8255Port_B:
 123   3                          g_ReadRegFor8255 = para8255reg_PB;
 124   3                                               break;
 125   3                      case para8255Port_C:
 126   3                          g_ReadRegFor8255 = para8255reg_PC;                  
 127   3                          break;
 128   3                      default:
 129   3                                              g_ReadRegFor8255 = 0x00;
 130   3                                              break;  
 131   3                                                 };//end of switch(PortX_8255)        
 132   2      
 133   2              };//end of if(RW_8255)
 134   1      
 135   1      }//end of this function
 136          
 137          /*******************************************************
 138          功能:Print_fstByte
 139          描述:打印第一个字节
 140          参数:g_FirstByteAddr,g_ByteNum
 141          返回:无
 142          ********************************************************/
 143          void Print_fstByte(g_FirstByteAddr,g_ByteNum)
 144          {  
 145   1        
 146   1          Print_ptr = g_FirstByteAddr;
 147   1          RdWt_8255(1,1,*Print_ptr);
 148   1          Print_ptr++;
 149   1          g_FirstByteAddr = *Print_ptr;
 150   1          RdWt_8255(1,1,0x0E);
 151   1              _nop_();
 152   1          RdWt_8255(1,1,0x0F);
 153   1              _nop_();
 154   1          g_ByteNum--;
 155   1              
 156   1      
 157   1      }//end of this function
 158          
 159          /*******************************************************
 160          功能:Print_aByte
 161          描述:通过中断打印一个字节
 162          参数:无
 163          返回:无
 164          ********************************************************/
 165          void Print_aByte(void)interrupt 2
 166          {  
 167   1        if(g_ByteNum!=0)
 168   1         {
 169   2          Print_ptr = g_FirstByteAddr;
 170   2          RdWt_8255(1,1,*Print_ptr);
 171   2          Print_ptr++;
 172   2          g_FirstByteAddr = *Print_ptr;
 173   2          RdWt_8255(1,1,0x0E);
 174   2              _nop_();
 175   2          RdWt_8255(1,1,0x0F);
 176   2              _nop_();
 177   2          g_ByteNum--;
 178   2          }
 179   1        else
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:33:05 PAGE 4   

 180   1         {
 181   2          print_on = 0;
 182   2              EX1 = 0;
 183   2          };
 184   1              
 185   1      
 186   1      }//end of this function


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    282    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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