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

📄 main.lst

📁 epson_u110打印头输纸步进电机驱动
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   MAIN                                                                  04/30/2006 10:52:20 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe main.c OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          #include <reg52.h>
   2          #include <string.h>
   3          #include <absacc.h>
   4          #define PAPERMOTOR_Data    XBYTE[0x4000]
   5          #define PRN_Control                XBYTE[0x4000]
   6          #define  uint   unsigned int
   7          #define  uchar  unsigned char
   8          uint code Pap_acdata[20] = {0x3266,0x2156,0x198f,0x1599,0x1302,0x1135,0xfc4,0xeb0,0xdd2,0xd08,
   9                                                                   0xc74,0xbe1,0xb60,0xaf1,0xa95,0xa39,0x9ef,0x9a5,0x95c,0x924};
  10          uint code Pap_dcdata[2] = {0xc06,0x1200};
  11          sbit HOME_Pin = P3^2;
  12          sbit Paper_Pin = P3^4;
  13          bit PrintDirect;
  14          bit homeflag;
  15          bit PAPERMOTOR_Flag;
  16          //bit CARRIGEMOTOR_Flag;
  17          //sbit Cut_A = P1^5;
  18          //sbit Cut_B = P1^6;
  19          sbit Sens = P1^7;
  20          sbit Mark_Pin = P3^5;
  21          uchar xdata  LOW_PRN_ControlState;
  22          void PAPERMOTOR_Init();
  23          void PAPERMOTOR_Hold();
  24          void PAPERMOTOR_Rush();
  25          void PAPERMOTOR_On();
  26          void PAPERMOTOR_Off();
  27          void CARRIGEMOTOR_Acce_Dece_11steps(uchar AC_DC);
  28          void LOW_PRN_InitDotTimer(uint T0_DATA);
  29          void PAPERMOTOR_SetStep(uchar Papermove_Direc);
  30          void PAPERMOTOR_Move(uchar Direc, uint Steps);
  31          
  32          
  33          void PAPERMOTOR_Init()
  34          {
  35   1              
  36   1              LOW_PRN_ControlState &= 0x33;
  37   1              LOW_PRN_ControlState |= 0xc0;
  38   1              PAPERMOTOR_Flag = 0;
  39   1      
  40   1      }
  41          
  42          void PH_Timer_Set(uint PH_DATA)
  43          {
  44   1              TH1 = -(PH_DATA/256);
  45   1              TL1 = -(PH_DATA%256);
  46   1              ET1 = 1;
  47   1              TR1 = 1;
  48   1      }
  49          
  50          /* void LOW_PRN_InitDotTimer(uint T0_DATA)
  51          {
  52                  TH0 = -T0_DATA/256;
  53                  TL0 = -T0_DATA%256;
  54                  ET0 = 1;
  55                  TR0 = 1;
C51 COMPILER V7.20   MAIN                                                                  04/30/2006 10:52:20 PAGE 2   

  56          }*/
  57          void PAPERMOTOR_Move(uchar Direc, uint Steps)
  58          {
  59   1              uint i,PAPERSteps;
  60   1              PAPERSteps = Steps;
  61   1              PAPERMOTOR_Flag = 0;
  62   1              PAPERMOTOR_On();
  63   1              if(PAPERSteps < 22)
  64   1              {
  65   2                      for(i=0;i<PAPERSteps;i++)
  66   2                      {
  67   3                              PAPERMOTOR_SetStep(Direc);
  68   3                              //LOW_PRN_InitDotTimer(0x3266);
  69   3      //                      while(!PAPERMOTOR_Flag);
  70   3                              PAPERMOTOR_Flag = 0;
  71   3                      }
  72   2              }
  73   1              else
  74   1              {
  75   2                      for(i=0;i<20;i++)
  76   2                      {
  77   3                              PAPERMOTOR_SetStep(Direc);
  78   3                      //      LOW_PRN_InitDotTimer(Pap_acdata[i]);
  79   3              //              while(!PAPERMOTOR_Flag);
  80   3                              PAPERMOTOR_Flag = 0;
  81   3                      }
  82   2                      for(i=0;i<(PAPERSteps-22);i++)
  83   2                      {
  84   3                              PAPERMOTOR_SetStep(Direc);
  85   3                      //      LOW_PRN_InitDotTimer(0x900);
  86   3                      //      while(!PAPERMOTOR_Flag);
  87   3                              PAPERMOTOR_Flag = 0;    
  88   3                      }
  89   2                      for(i=0;i<2;i++)
  90   2                      {
  91   3                              PAPERMOTOR_SetStep(Direc);
  92   3                      //      LOW_PRN_InitDotTimer(Pap_dcdata[i]);
  93   3                      //      while(!PAPERMOTOR_Flag);
  94   3                              PAPERMOTOR_Flag = 0;    
  95   3                      }
  96   2              }
  97   1              PAPERMOTOR_Off();
  98   1      }
  99          
 100          
 101          
 102          void PAPERMOTOR_SetStep(uchar Papermove_Direc)
 103          {
 104   1              uchar i;
 105   1              uchar temp;
 106   1              uchar PH_State[5] = {0x00,0x04,0x0c,0x08,0x00};
 107   1      
 108   1              temp = LOW_PRN_ControlState;
 109   1              temp &= 0x0c;
 110   1              if(Papermove_Direc)
 111   1              {
 112   2                      for(i=0;i<5;i++)
 113   2                      {
 114   3                              if(temp == PH_State[i])
 115   3                              {       
 116   4                                      temp = PH_State[i+1];
 117   4                                      break;
C51 COMPILER V7.20   MAIN                                                                  04/30/2006 10:52:20 PAGE 3   

 118   4                              }
 119   3                      }
 120   2              }
 121   1              else
 122   1              {
 123   2                      for(i=4;i>0;i--)
 124   2                      {
 125   3                              if(temp == PH_State[i])
 126   3                              {
 127   4                                      temp = PH_State[i-1];
 128   4                                      break;
 129   4                              }       
 130   3                      }
 131   2              }
 132   1              LOW_PRN_ControlState &= 0xf3;
 133   1              LOW_PRN_ControlState |= temp;
 134   1              PAPERMOTOR_Data = LOW_PRN_ControlState;
 135   1      }
 136          
 137          void PAPERMOTOR_On()
 138          {
 139   1              PAPERMOTOR_Hold();
 140   1              PAPERMOTOR_Rush();
 141   1      }
 142          
 143          void PAPERMOTOR_Off()
 144          {
 145   1              PAPERMOTOR_Rush();
 146   1              PAPERMOTOR_Hold();
 147   1      }
 148          
 149          void Delay_6ms()
 150          {
 151   1              uint i;
 152   1              for(i=0;i<0x0b33;i++);
 153   1      }
 154          
 155          void PAPERMOTOR_Hold()
 156          {
 157   1              LOW_PRN_ControlState &= 0x3f;
 158   1              LOW_PRN_ControlState |= 0x80;
 159   1              PAPERMOTOR_Data = LOW_PRN_ControlState;
 160   1              Delay_6ms();
 161   1      }
 162          
 163          void PAPERMOTOR_Rush()
 164          {
 165   1              LOW_PRN_ControlState &= 0x3f;
 166   1              PAPERMOTOR_Data = LOW_PRN_ControlState;
 167   1              Delay_6ms();
 168   1      }
 169          
 170          
 171          
 172          /*  void LOW_PRN_Findhome()
 173          {
 174                  uchar i;
 175                  CARRIGEMOTOR_Hold();
 176                  CARRIGEMOTOR_Rush();
 177                  if(!HOME_Pin)
 178                  {
 179                          PrintDirect = 0;
C51 COMPILER V7.20   MAIN                                                                  04/30/2006 10:52:20 PAGE 4   

 180                          CARRIGEMOTOR_Acce_Dece_11steps(1);
 181                          for(i=0;i<180;i++)
 182                          {
 183                                  CARRIGEMOTOR_PH_Set();
 184                                  PH_Timer_Set(0x05f2);
 185                                  while(!CARRIGEMOTOR_Flag);
 186                                  CARRIGEMOTOR_Flag = 0;  
 187                          }
 188                          CARRIGEMOTOR_Acce_Dece_11steps(0);
 189                  }
 190                  for(;;)
 191                  {
 192                          if(HOME_Pin)
 193                          {
 194                                  PrintDirect = 1;
 195                                  homeflag = HOME_Pin;
 196                          }       
 197                          else
 198                      {
 199                                  PrintDirect = 0;
 200                                  homeflag = HOME_Pin;
 201                          }
 202                          CARRIGEMOTOR_PH_Set();
 203                          PH_Timer_Set(0x2347);
 204                          while(!CARRIGEMOTOR_Flag);
 205                          CARRIGEMOTOR_Flag = 0;
 206                          if(homeflag == !HOME_Pin)
 207                                  break;
 208                  }
 209                  PrintDirect = 0;
 210                  CARRIGEMOTOR_Acce_Dece_11steps(1);
 211                  CARRIGEMOTOR_Acce_Dece_11steps(0);
 212                  CARRIGEMOTOR_Rush();
 213                  CARRIGEMOTOR_Hold();
 214                  PrintDirect = 1;
 215          }*/     
 216          
 217          void main()
 218          {
 219   1                 Sens = 1;
 220   1             PAPERMOTOR_Init();
 221   1             if(Sens)
 222   1             {
 223   2               PAPERMOTOR_SetStep(0);
 224   2              }
 225   1              //      for(;;)
 226   1              //      {
 227   1                      PRN_Control &= 0x3f;
 228   1                      PAPERMOTOR_Move(0, 20);
 229   1              //      }
 230   1              //      PAPERMOTOR_Off();
 231   1             
 232   1      }
 233          
 234          
 235          
 236          
 237          
 238          
C51 COMPILER V7.20   MAIN                                                                  04/30/2006 10:52:20 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION PAPERMOTOR_Init (BEGIN)
                                           ; SOURCE LINE # 33
                                           ; SOURCE LINE # 34
                                           ; SOURCE LINE # 36
0000 900000      R     MOV     DPTR,#LOW_PRN_ControlState
0003 E0                MOVX    A,@DPTR
0004 5433              ANL     A,#033H
0006 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 37
0007 44C0              ORL     A,#0C0H
0009 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 38
000A C200        R     CLR     PAPERMOTOR_Flag
                                           ; SOURCE LINE # 40
000C 22                RET     
             ; FUNCTION PAPERMOTOR_Init (END)

             ; FUNCTION _PH_Timer_Set (BEGIN)
                                           ; SOURCE LINE # 42
;---- Variable 'PH_DATA' assigned to Register 'R4/R5' ----
0000 AD07              MOV     R5,AR7
0002 AC06              MOV     R4,AR6
                                           ; SOURCE LINE # 43
                                           ; SOURCE LINE # 44
0004 EC                MOV     A,R4
0005 F4                CPL     A
0006 04                INC     A
0007 F58D              MOV     TH1,A
                                           ; SOURCE LINE # 45
0009 ED                MOV     A,R5
000A F4                CPL     A
000B 04                INC     A
000C F58B              MOV     TL1,A
                                           ; SOURCE LINE # 46
000E D2AB              SETB    ET1
                                           ; SOURCE LINE # 47
0010 D28E              SETB    TR1
                                           ; SOURCE LINE # 48
0012 22                RET     
             ; FUNCTION _PH_Timer_Set (END)

             ; FUNCTION _PAPERMOTOR_Move (BEGIN)
                                           ; SOURCE LINE # 57
0000 8F00        R     MOV     Direc,R7
;---- Variable 'Steps' assigned to Register 'R4/R5' ----
                                           ; SOURCE LINE # 58
                                           ; SOURCE LINE # 60
0002 8C00        R     MOV     PAPERSteps,R4
0004 8D00        R     MOV     PAPERSteps+01H,R5
                                           ; SOURCE LINE # 61
0006 C200        R     CLR     PAPERMOTOR_Flag
                                           ; SOURCE LINE # 62
0008 120000      R     LCALL   PAPERMOTOR_On
                                           ; SOURCE LINE # 63
000B C3                CLR     C
000C E500        R     MOV     A,PAPERSteps+01H
000E 9416              SUBB    A,#016H
0010 E500        R     MOV     A,PAPERSteps
0012 9400              SUBB    A,#00H
C51 COMPILER V7.20   MAIN                                                                  04/30/2006 10:52:20 PAGE 6   

0014 5019              JNC     ?C0003
                                           ; SOURCE LINE # 64
                                           ; SOURCE LINE # 65
0016 E4                CLR     A

⌨️ 快捷键说明

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