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

📄 ht1621.lst

📁 红外线遥控Proteus仿真电路 发射接收程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V9.00   HT1621                                                                07/23/2011 16:32:29 PAGE 1   


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

line level    source

   1          // STC 12T系列单片机红外接收NEC解码程序。适用于市场上用量最大的HT6121/6122及其兼容的IC编码。
   2          // 使用外部中断0接收P3.2
   3          //
   4          #include <REGX52.H>
   5          #include <intrins.h>
   6          #define uchar unsigned char    
   7          #define uint  unsigned int  
   8          
   9          uchar code tab[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0X88,0X83,0XC6,0XA1,0X86,0X8E,0xFF};
  10          
  11          sbit    IR    = P3^2;            
  12          
  13          uchar   N[4];                            //识别码,操作码存放
  14          uchar   X1,X2,X3,X4;
  15          
  16          void XSQ(void);
  17          void YS(uchar time);
  18          
  19          /****************** 主函数 *******************/
  20          void main(void)
  21          {       
  22   1        X1=X2=X3=X4 = 0;
  23   1        
  24   1        IT0 = 1; 
  25   1        EX0 = 1;
  26   1        EA  = 1;
  27   1      
  28   1        while(1)
  29   1        {
  30   2         XSQ();
  31   2        }
  32   1      }
  33          
  34          /**********************数码管显示函数************************/
  35          void XSQ(void)
  36          { 
  37   1               P2_7=1;P0=tab[X1];P2_0=0;YS(1);        //识别码
  38   1           P2_0=1;P0=tab[X2];P2_1=0;YS(1);
  39   1           P2_1=1;P0=tab[16];P2_2=0;YS(1);
  40   1           P2_2=1;P0=tab[16];P2_3=0;YS(1);
  41   1           P2_3=1;P0=tab[16];P2_4=0;YS(1);
  42   1           P2_4=1;P0=tab[16];P2_5=0;YS(1);
  43   1           P2_5=1;P0=tab[X3];P2_6=0;YS(1);    //操作码
  44   1           P2_6=1;P0=tab[X4];P2_7=0;YS(1);
  45   1      }
  46          
  47          /********************** 外部中断函数************************/
  48          void exint0() interrupt 0 
  49          {        
  50   1         uint cnt;
  51   1         uchar i;
  52   1      
  53   1         EX0 = 0;
  54   1         cnt = 0;     
  55   1              
C51 COMPILER V9.00   HT1621                                                                07/23/2011 16:32:29 PAGE 2   

  56   1         while(!IR) cnt++;                               //记录引导码时间 
  57   1         if(cnt < 1000){EX0=1;return;}                   //9ms的计数值(12MHz:1000< cnt <1500)
  58   1              
  59   1         cnt = 0;                      
  60   1         while(IR) if(cnt++ > 400){EX0=1;return;}        //防卡死,超时保护(12MHz: > 300)    
  61   1         if(cnt < 200){EX0=1;return;}                    //(12MHz不分频: <260)       
  62   1      
  63   1         for(i=0; i<32; i++)                             //读取32位位码
  64   1             {
  65   2               cnt = 0;                                                                                                                                               
  66   2               while(!IR);                   
  67   2               while(IR) if(cnt++ > 200){EX0=1;return;}  //超时保护(12MHz:>=200)
  68   2               N[i/8] >>= 1;
  69   2               if(cnt>60) N[i/8] |= 0x80;                //0和1的计数界线(12MHz:< 109)    
  70   2             }
  71   1      
  72   1               if(N[0] == ~N[1] && N[2] == ~N[3])            //校验识别码,操作码     
  73   1                 {
  74   2                      X1 = N[0]/16;
  75   2                      X2 = N[0]%16;
  76   2                      X3 = N[2]/16;
  77   2                      X4 = N[2]%16;
  78   2                 }
  79   1      
  80   1              EX0 = 1;                 
  81   1      } 
  82          
  83          /***************************************************************
  84          函数功能:按键消抖    延时程序
  85          入口参数:1ms×time       (晶振=12MHz)
  86          ***************************************************************/
  87          void YS(uchar time)
  88          {
  89   1           uchar i,j;
  90   1               for(i=0; i<time; i++)
  91   1           for(j=0; j<247; j++)_nop_();
  92   1      } 
C51 COMPILER V9.00   HT1621                                                                07/23/2011 16:32:29 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 20
                                           ; SOURCE LINE # 21
                                           ; SOURCE LINE # 22
0000 E4                CLR     A
0001 F500        R     MOV     X4,A
0003 F500        R     MOV     X3,A
0005 F500        R     MOV     X2,A
0007 F500        R     MOV     X1,A
                                           ; SOURCE LINE # 24
0009 D288              SETB    IT0
                                           ; SOURCE LINE # 25
000B D2A8              SETB    EX0
                                           ; SOURCE LINE # 26
000D D2AF              SETB    EA
000F         ?C0001:
                                           ; SOURCE LINE # 28
                                           ; SOURCE LINE # 29
                                           ; SOURCE LINE # 30
000F 120000      R     LCALL   XSQ
                                           ; SOURCE LINE # 31
0012 80FB              SJMP    ?C0001
             ; FUNCTION main (END)

             ; FUNCTION XSQ (BEGIN)
                                           ; SOURCE LINE # 35
                                           ; SOURCE LINE # 36
                                           ; SOURCE LINE # 37
0000 D2A7              SETB    P2_7
0002 E500        R     MOV     A,X1
0004 900000      R     MOV     DPTR,#tab
0007 93                MOVC    A,@A+DPTR
0008 F580              MOV     P0,A
000A C2A0              CLR     P2_0
000C 7F01              MOV     R7,#01H
000E 120000      R     LCALL   _YS
                                           ; SOURCE LINE # 38
0011 D2A0              SETB    P2_0
0013 E500        R     MOV     A,X2
0015 900000      R     MOV     DPTR,#tab
0018 93                MOVC    A,@A+DPTR
0019 F580              MOV     P0,A
001B C2A1              CLR     P2_1
001D 7F01              MOV     R7,#01H
001F 120000      R     LCALL   _YS
                                           ; SOURCE LINE # 39
0022 D2A1              SETB    P2_1
0024 900000      R     MOV     DPTR,#tab+010H
0027 E4                CLR     A
0028 93                MOVC    A,@A+DPTR
0029 F580              MOV     P0,A
002B C2A2              CLR     P2_2
002D 7F01              MOV     R7,#01H
002F 120000      R     LCALL   _YS
                                           ; SOURCE LINE # 40
0032 D2A2              SETB    P2_2
0034 900000      R     MOV     DPTR,#tab+010H
0037 E4                CLR     A
0038 93                MOVC    A,@A+DPTR
C51 COMPILER V9.00   HT1621                                                                07/23/2011 16:32:29 PAGE 4   

0039 F580              MOV     P0,A
003B C2A3              CLR     P2_3
003D 7F01              MOV     R7,#01H
003F 120000      R     LCALL   _YS
                                           ; SOURCE LINE # 41
0042 D2A3              SETB    P2_3
0044 900000      R     MOV     DPTR,#tab+010H
0047 E4                CLR     A
0048 93                MOVC    A,@A+DPTR
0049 F580              MOV     P0,A
004B C2A4              CLR     P2_4
004D 7F01              MOV     R7,#01H
004F 120000      R     LCALL   _YS
                                           ; SOURCE LINE # 42
0052 D2A4              SETB    P2_4
0054 900000      R     MOV     DPTR,#tab+010H
0057 E4                CLR     A
0058 93                MOVC    A,@A+DPTR
0059 F580              MOV     P0,A
005B C2A5              CLR     P2_5
005D 7F01              MOV     R7,#01H
005F 120000      R     LCALL   _YS
                                           ; SOURCE LINE # 43
0062 D2A5              SETB    P2_5
0064 E500        R     MOV     A,X3
0066 900000      R     MOV     DPTR,#tab
0069 93                MOVC    A,@A+DPTR
006A F580              MOV     P0,A
006C C2A6              CLR     P2_6
006E 7F01              MOV     R7,#01H
0070 120000      R     LCALL   _YS
                                           ; SOURCE LINE # 44
0073 D2A6              SETB    P2_6
0075 E500        R     MOV     A,X4
0077 900000      R     MOV     DPTR,#tab
007A 93                MOVC    A,@A+DPTR
007B F580              MOV     P0,A
007D C2A7              CLR     P2_7
007F 7F01              MOV     R7,#01H
0081 020000      R     LJMP    _YS
             ; FUNCTION XSQ (END)

             ; FUNCTION exint0 (BEGIN)
0000 C0E0              PUSH    ACC
0002 C0D0              PUSH    PSW
0004 75D000            MOV     PSW,#00H
0007 C000              PUSH    AR0
0009 C004              PUSH    AR4
000B C005              PUSH    AR5

⌨️ 快捷键说明

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