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

📄 38k.lst

📁 51的红外接收程序
💻 LST
字号:
C51 COMPILER V6.12  38K                                                                    01/01/2003 15:02:43 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE 38K
OBJECT MODULE PLACED IN .\38k.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\38k.c DEBUG OBJECTEXTEND

stmt level    source

   1          /*******************************************************
   2          38K载波接收程序 T1产生波特率 T0用于精确定时            *
   3          数据格式  起始位(9ms 高 4.5ms 低)+8位数据              *
   4          (0.560ms 高  0.565 低:0    1.685ms 高 0.565ms 低:1)   *
   5          write by wisdom           2008-8                       *
   6          *******************************************************/
   7          #include <AT89X51.h> 
   8          
   9          #define IR_IN P3_4
  10          unsigned char IR_Data;
  11          
  12          //#define _MHz_ 11.0592
  13          
  14          
  15          void Init_INT0(void)
  16          {
  17   1      	IT0=1;    	//INT0为负边沿触发, (1:负边沿触发,0:低电平触发)
  18   1      	EX0=1;    	//外部中断INT0开, (1:开,      0:关    )
  19   1      	EA=1;    	//开所有中断
  20   1      }
  21          
  22          
  23          //T0 精确定时   T1产生波特率  初始化串口
  24          void Init_Timer(void)
  25          {
  26   1      	TMOD=0x21;		//T0 mode 1      T1 mode 2 
  27   1      	SCON=0x50;		//mode 1 8位   允许接受
  28   1      	PCON|=0x80;		//smod=1    波特率=2^SMOD/32 * fosc/(12*(256-X)
  29   1      	TH1=250;                    //256-11.0592/12.0/9600/16*1000000;
  30   1      	TL1=TH1;
  31   1      	TR1=1;
  32   1      }
  33          
  34          
  35          void Delay10ms(void)
  36          {
  37   1      		TH0=220;				//(65536-us/12*11.0592)/256; 
  38   1      		TL0=0;					//(65536-us/12*11.0592)%256;
  39   1      		TR0=1;
  40   1      		while(!TF0);
  41   1      		TF0=0;
  42   1      }
  43          
  44          void Delay0_8ms(void)
  45          {
  46   1      
  47   1      }
  48          
  49          
  50          void main(void)
  51          {
  52   1      	Init_INT0();
  53   1      	Init_Timer();
  54   1      	IR_IN=1;			//set IR_IN as i
  55   1      
C51 COMPILER V6.12  38K                                                                    01/01/2003 15:02:43 PAGE 2   

  56   1      	while(1)
  57   1      	{
  58   2      		TI=0;
  59   2      		SBUF=IR_Data;
  60   2      		while(!TI);
  61   2      		TI=0;
  62   2      		Delay10ms();
  63   2      	}
  64   1      }
  65          
  66          
  67          //-----------------------------------------------------------------------
  68          //INT0 ISR
  69          void INT0_ISR(void) interrupt IE0_VECTOR using 1
  70          {
  71   1      	unsigned char i;
  72   1      	EA=0;
  73   1      
  74   1      	IR_Data=0;
  75   1      	for(i=0;i<4;i++)
  76   1      	{
  77   2      		Delay0_8ms();
  78   2      		if(IR_IN==1)			//0.8ms后位1,不是起始位
  79   2      			{
  80   3      				i=5;
  81   3      				break;
  82   3      			}
  83   2      		else if(i==3)			//3.2ms后,判断是起始位
  84   2      		{
  85   3      			while(IR_IN==1);
  86   3      		}
  87   2      	}
  88   1      	for(i=0;i<8;i++)
  89   1      	{
  90   2      		Delay0_8ms();
  91   2      		IR_Data=IR_Data<<1;
  92   2      		if(IR_IN==1)
  93   2      			IR_Data=IR_Data|0x01;			//接收1
  94   2      		else
  95   2      			IR_Data=IR_Data & 0xFE;			//接收0
  96   2      	}
  97   1      	EA=1;
  98   1      }
  99          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    133    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   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 + -