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

📄 xxx.lst

📁 一个红外线的源程序,可以在KEIL下编译通过,而且是C中潜入汇编,内含红外的资料文档
💻 LST
字号:
C51 COMPILER V6.12  XXX                                                                    08/17/2007 13:03:45 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE XXX
OBJECT MODULE PLACED IN .\xxx.OBJ
COMPILER INVOKED BY: C:\Keil612\C51\BIN\C51.EXE .\xxx.c DEBUG OBJECTEXTEND SRC(.\xxx.SRC) 

stmt level    source

   1          #include <AT89X51.H>
   2          
   3          unsigned int disp[10] = {0x3f,0x30,0x6d,0x79,0x72,0x5b,0x5f,0x31,0x7f,0x7b};
   4                            		  //0,    1,   2   3    4    5    6    7    8    9 
   5          unsigned char i,j,k,ge,shi,hong; 
   6          
   7          void displed()             //主程序温度显示函数
   8          {
   9   1      	ge=hong%10;
  10   1       	 shi=hong/10;
  11   1       	P0=disp[ge];
  12   1          P2=0x40;
  13   1          for(i=0; i<10; i++)    //延时部分
  14   1          for(j=0; j<100; j++)
  15   1      	{;}
  16   1      	//P2=0;
  17   1          P0=disp[shi];
  18   1          P2=0x80;
  19   1          for(i=0; i<10; i++)    //延时部分
  20   1          for(j=0; j<100; j++)
  21   1      	{;}
  22   1      }
  23          
  24          main()
  25          {
  26   1      
  27   1      	EA =1;
  28   1       	IT0 =1;
  29   1       	EX0=1 	;
  30   1      
  31   1          
  32   1      	while(1)
  33   1      	{
  34   2      	//	hong=P1;
  35   2      		displed();
  36   2      	}
  37   1      }
  38          
  39          ////////////////////把接受并转换好的二进制码存入入P1中/////////////////////
  40          
  41           void int0_int(void) interrupt 0	
  42           { 
  43   1         #pragma asm 
  44   1         jmp xxx
  45   1      YS1: MOV R4,#20 ;延时子程序1,精确延时882微秒
  46   1      D1: MOV R5,#20
  47   1      DJNZ R5,$
  48   1      DJNZ R4,D1 
  49   1      RET
  50   1      YS2: MOV R4,#10 ;延时子程序2,精确延时4740微秒
  51   1      D2: MOV R5,#235
  52   1      DJNZ R5,$
  53   1      DJNZ R4,D2 
  54   1      RET
  55   1      YS3: MOV R4,#2;延时程序3,精确延时1000微秒
C51 COMPILER V6.12  XXX                                                                    08/17/2007 13:03:45 PAGE 2   

  56   1      D3:MOV R5,#248
  57   1      DJNZ R5,$
  58   1      DJNZ R4,D3
  59   1      RET
  60   1      xxx:
  61   1      CLR EA ;暂时关闭CPU的所有中断请求
  62   1      MOV R6,#10
  63   1      SB: ACALL YS1;调用882微秒延时子程序
  64   1      JB P3.2,EXIT;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
  65   1      DJNZ R6, SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序 
  66   1      ;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
  67   1      JNB P3.2, $ ;等待高电平避开9毫秒低电平引导脉冲
  68   1      ACALL YS2 ;延时4.74毫秒避开4.5毫秒的结果码
  69   1      
  70   1      MOV R7,#26;忽略前26位系统识别码 
  71   1      
  72   1      JJJJA:JNB P3.2,$;等待地址码第一位的高电平信号
  73   1      LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
  74   1      MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
  75   1      JNC UUUA;如果为0就跳转到UUUA
  76   1      LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
  77   1      UUUA: DJNZ R7,JJJJA
  78   1      
  79   1      MOV R1,#1AH ;设定1AH为起始RAM区
  80   1      MOV R2,#2;接收从1AH到1BH的2个内存,用于存放操作码和操作反码 
  81   1      PP: MOV R3,#8;每组数据为8位 
  82   1      
  83   1      JJJJ: JNB P3.2,$;等待地址码第一位的高电平信号
  84   1      LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
  85   1      MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
  86   1      JNC UUU;如果为0就跳转到UUU
  87   1      LCALL YS3;检测到高电平1的话延时1毫秒等待脉冲高电平结束
  88   1      UUU: MOV A,@R1;将R1中地址的给A
  89   1      RRC A;将C中的值0或1移入A中的最低位
  90   1      MOV @R1,A;将A中的数暂时存放在R1数值的内存中
  91   1      DJNZ R3,JJJJ;接收满8位换一个内存
  92   1      INC R1;对R1中的值加1,换下一个RAM
  93   1      DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在1AH/1BH中
  94   1      
  95   1      MOV A,1AH
  96   1      CPL A;对1AH取反后和1BH比较
  97   1      CJNE A,1BH,EXIT;如果不等表示接收数据发生错误,放弃
  98   1      
  99   1      MOV hong,1AH;将按键的键值通过P1口的8个LED显示出来!
 100   1      //SETB P3.5;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
 101   1      LCALL YS2
 102   1      LCALL YS2
 103   1      LCALL YS2
 104   1      //CLR P3.5;蜂鸣器停止
 105   1      EXIT: SETB EA ;允许中断
 106   1      //RETI ;退出解码子程序
 107   1      
 108   1      
 109   1        #pragma endasm 
 110   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    295    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V6.12  XXX                                                                    08/17/2007 13:03:45 PAGE 3   

   DATA SIZE        =     26    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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