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

📄 c_isr.lst

📁 Cygnal C8051f系列单片机的flash存储器加密程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.07   C_ISR                                                                 01/20/2005 07:51:19 PAGE 1   


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

stmt level    source

   1          #include <c8051F320.h>                                  //c8051F320SFR的C51格式头文件
   2          //C51采用中断实现
   3          //-----------------------------------------------------------------------------
   4          // 全局常量
   5          //-----------------------------------------------------------------------------
   6          #define uchar unsigned char
   7          
   8          #define T2L_VAL 0xc0                                    //定时器2计时为4MS
   9          #define T2H_VAL 0xe0
  10          
  11          #define T3L_VAL 0xc0                                    //定时器3计时为20MS
  12          #define T3H_VAL 0x63
  13          
  14          //uchar seg[] = {0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x8c};
  15          //uchar un_dig[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb};
  16          uchar code seg[] = {0x81,0xcf,0x92,0x86,0xcc,0xa4,0xa0,0x8f,0x80,0x8c};
  17          uchar code un_dig[] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb};
  18          
  19          //-----------------------------------------------------------------------------
  20          // 全局变量
  21          //-----------------------------------------------------------------------------
  22          uchar dd,second_count,ring_tmr,second,minute,hour,tmr3_done;
  23          uchar disbuf[6];
  24          bit tmr2_done;
  25          
  26          sbit RED_LED = P0^7;
  27          sbit GREEN_LED = P1^0;
  28          sbit RING = P1^1;
  29          //-----------------------------------------------------------------------------
  30          // 函数原型
  31          //-----------------------------------------------------------------------------
  32          extern void lock (void);
  33          void SYSCLK_Init (void);
  34          void PORT_Init (void);
  35          void Timer2_Init (void);
  36          void Timer2_ISR (void);
  37          void Timer3_Init (void);
  38          void Timer3_ISR (void);
  39          uchar da_adjust(uchar da);
  40          //-----------------------------------------------------------------------------
  41          // MAIN Routine
  42          //-----------------------------------------------------------------------------
  43          void main (void)
  44          {
  45   1              PCA0MD &= ~0x40;
  46   1              lock ();
  47   1              SYSCLK_Init ();
  48   1              PORT_Init ();
  49   1              Timer2_Init ();
  50   1              Timer3_Init();
  51   1              dd=0;
  52   1              second_count=50;
  53   1              second = 0;
  54   1              minute = 0;
  55   1              hour = 0;
C51 COMPILER V7.07   C_ISR                                                                 01/20/2005 07:51:19 PAGE 2   

  56   1              EA = 1;
  57   1              PCA0CPH4 = 0;
  58   1              while (1)
  59   1              {
  60   2                      if (tmr2_done == 1&tmr3_done != 8)
  61   2                      {
  62   3                              PCA0CPH4 = 0;
  63   3                              tmr2_done = 0;
  64   3                              tmr3_done++;
  65   3                      }
  66   2              }
  67   1      }
  68          //-----------------------------------------------------------------------------
  69          // SYSCLK_Init
  70          //-----------------------------------------------------------------------------
  71          void SYSCLK_Init (void)
  72          {
  73   1              PCA0MD &= 0xb1;
  74   1              PCA0CPL4 = 255;
  75   1              PCA0MD |= 0x40;
  76   1              CLKMUL |= 0x80;
  77   1              CLKMUL |= 0xc0;
  78   1              CLKSEL |= 0x02;
  79   1      }
  80          //-----------------------------------------------------------------------------
  81          // PORT_Init
  82          //-----------------------------------------------------------------------------
  83          void PORT_Init (void)
  84          {
  85   1              XBR1 = 0xc0;                       
  86   1              P0MDOUT |= 0x80;                       
  87   1              P1MDOUT |= 0x01;
  88   1              P2MDOUT |= 0x00;
  89   1              RED_LED = 1;
  90   1              GREEN_LED = 0;
  91   1              RING = 1;
  92   1      }
  93          //-----------------------------------------------------------------------------
  94          // Timer2_Init
  95          //-----------------------------------------------------------------------------
  96          void Timer2_Init ()
  97          {
  98   1              TMR2L = T2L_VAL;
  99   1              TMR2H = T2H_VAL;
 100   1              TMR2RLL = T2L_VAL;
 101   1              TMR2RLH = T2H_VAL;                   
 102   1              ET2 = 1;
 103   1              TR2 = 1;
 104   1      }
 105          //-----------------------------------------------------------------------------
 106          // Timer3_Init
 107          //-----------------------------------------------------------------------------
 108          void Timer3_Init ()
 109          {
 110   1              TMR3L = T3L_VAL;
 111   1              TMR3H = T3H_VAL;
 112   1              TMR3RLL = T3L_VAL;
 113   1              TMR3RLH = T3H_VAL;
 114   1              EIE1 |= 0x80;
 115   1              TMR3CN = 0x04;
 116   1      }
 117          //-----------------------------------------------------------------------------
C51 COMPILER V7.07   C_ISR                                                                 01/20/2005 07:51:19 PAGE 3   

 118          // da_adjust
 119          //-----------------------------------------------------------------------------
 120          uchar da_adjust(uchar da)
 121          { 
 122   1              if((da&0x0f)>9) da+=0x06;
 123   1              if((da&0xf0)>0x90) da+=0x60;
 124   1              return (da);
 125   1      }
 126          //-----------------------------------------------------------------------------
 127          // Interrupt Service Routines
 128          //-----------------------------------------------------------------------------
 129          //-----------------------------------------------------------------------------
 130          // Timer2_ISR
 131          //-----------------------------------------------------------------------------
 132          void Timer2_ISR (void) interrupt 5
 133          {
 134   1              TF2H = 0;
 135   1              P1 |= 0xfc;
 136   1              P2=seg[disbuf[dd]];
 137   1              P1&=un_dig[dd];
 138   1              if(dd == 5) dd=0;
 139   1              else dd++;
 140   1              tmr2_done = 1;
 141   1      }
 142          //-----------------------------------------------------------------------------
 143          // Timer3_ISR
 144          //-----------------------------------------------------------------------------
 145          void Timer3_ISR (void) interrupt 14
 146          {
 147   1              TMR3CN &= 0x7F;
 148   1              if(second_count != 0) second_count--;
 149   1              else
 150   1              {
 151   2                      second_count = 50;
 152   2                      RING = 0;
 153   2                      GREEN_LED =~ GREEN_LED;
 154   2                      RED_LED =~ RED_LED;
 155   2                      if(second < 0x59)
 156   2                      {
 157   3                              second++;second = da_adjust(second);
 158   3                              ring_tmr = 5;
 159   3                      }
 160   2                      else
 161   2                      {
 162   3                              second = 0;
 163   3                          if(minute < 0x59)
 164   3                              {
 165   4                                      minute++;minute = da_adjust(minute);
 166   4                                      ring_tmr = 25;
 167   4                              }
 168   3                              else
 169   3                              {
 170   4                                      minute = 0;
 171   4                                      ring_tmr = 50;
 172   4                                      if(hour < 0x23)
 173   4                                      {
 174   5                                              hour++;
 175   5                                              hour = da_adjust(hour);
 176   5                                      }
 177   4                                      else hour = 0;
 178   4                              }
 179   3                      }
C51 COMPILER V7.07   C_ISR                                                                 01/20/2005 07:51:19 PAGE 4   

 180   2                      disbuf[0]=(hour&0xf0)>>4;
 181   2                      disbuf[1]=hour&0x0f;
 182   2                      disbuf[2]=(minute&0xf0)>>4;
 183   2                      disbuf[3]=minute&0x0f;
 184   2                      disbuf[4]=(second&0xf0)>>4;
 185   2                      disbuf[5]=second&0x0f;
 186   2              }
 187   1              if(ring_tmr != 0)
 188   1              {
 189   2                      ring_tmr--;
 190   2                      if(ring_tmr == 0) RING = 1;
 191   2              }
 192   1              tmr3_done = 0; 
 193   1      }
C51 COMPILER V7.07   C_ISR                                                                 01/20/2005 07:51:19 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 43
                                           ; SOURCE LINE # 44
                                           ; SOURCE LINE # 45
0000 53D9BF            ANL     PCA0MD,#0BFH
                                           ; SOURCE LINE # 46
0003 120000      E     LCALL   lock
                                           ; SOURCE LINE # 47
0006 120000      R     LCALL   SYSCLK_Init
                                           ; SOURCE LINE # 48
0009 120000      R     LCALL   PORT_Init
                                           ; SOURCE LINE # 49
000C 120000      R     LCALL   Timer2_Init
                                           ; SOURCE LINE # 50
000F 120000      R     LCALL   Timer3_Init
                                           ; SOURCE LINE # 51
0012 E4                CLR     A
0013 F500        R     MOV     dd,A
                                           ; SOURCE LINE # 52
0015 750032      R     MOV     second_count,#032H
                                           ; SOURCE LINE # 53
0018 F500        R     MOV     second,A
                                           ; SOURCE LINE # 54
001A F500        R     MOV     minute,A
                                           ; SOURCE LINE # 55
001C F500        R     MOV     hour,A
                                           ; SOURCE LINE # 56
001E D2AF              SETB    EA
                                           ; SOURCE LINE # 57
0020 F5FE              MOV     PCA0CPH4,A
0022         ?C0001:
                                           ; SOURCE LINE # 58
                                           ; SOURCE LINE # 59
                                           ; SOURCE LINE # 60
0022 300004      R     JNB     tmr2_done,?C0004
0025 7F01              MOV     R7,#01H
0027 8002              SJMP    ?C0005
0029         ?C0004:
0029 7F00              MOV     R7,#00H
002B         ?C0005:
002B E500        R     MOV     A,tmr3_done
002D 6408              XRL     A,#08H
002F 6004              JZ      ?C0006
0031 7E01              MOV     R6,#01H
0033 8002              SJMP    ?C0007
0035         ?C0006:
0035 7E00              MOV     R6,#00H
0037         ?C0007:
0037 EE                MOV     A,R6
0038 5F                ANL     A,R7
0039 60E7              JZ      ?C0001
                                           ; SOURCE LINE # 61
                                           ; SOURCE LINE # 62
003B E4                CLR     A
003C F5FE              MOV     PCA0CPH4,A
                                           ; SOURCE LINE # 63
003E C200        R     CLR     tmr2_done
                                           ; SOURCE LINE # 64
0040 0500        R     INC     tmr3_done
C51 COMPILER V7.07   C_ISR                                                                 01/20/2005 07:51:19 PAGE 6   

                                           ; SOURCE LINE # 65
                                           ; SOURCE LINE # 66
0042 80DE              SJMP    ?C0001
             ; FUNCTION main (END)

             ; FUNCTION SYSCLK_Init (BEGIN)
                                           ; SOURCE LINE # 71
                                           ; SOURCE LINE # 72
                                           ; SOURCE LINE # 73
0000 53D9B1            ANL     PCA0MD,#0B1H
                                           ; SOURCE LINE # 74
0003 75FDFF            MOV     PCA0CPL4,#0FFH
                                           ; SOURCE LINE # 75
0006 43D940            ORL     PCA0MD,#040H
                                           ; SOURCE LINE # 76
0009 43B980            ORL     CLKMUL,#080H
                                           ; SOURCE LINE # 77
000C 43B9C0            ORL     CLKMUL,#0C0H
                                           ; SOURCE LINE # 78
000F 43A902            ORL     CLKSEL,#02H
                                           ; SOURCE LINE # 79

⌨️ 快捷键说明

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