• 大小: 14.02 KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-12-02
  • 语言: 其他
  • 标签: 38k  红外  

资源简介

这是一段简单的代码,用单片机输出38k信号,驱动红外发射二极管,红外接收装置可以接收,实验成功。

资源截图

代码片段和文件信息

/*********************************************************
Project             : Tm/Rh Measurement
Chip type           : sst89e58
Program type        : Application
Clock frequency     : 11.0592MHz
;**********************************************************/
#include 
#include 

/*===============变=量=类=型=标=识=宏=定=义===============*/
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define ENABLE EA=1 //使能全局中断
#define DISABLE EA=0 //关闭全局中断
#define Timer0Run TR0=1 //启动T0
#define Timer0Stop TR0=0 //关闭T0
#define Timer1Run TR1=1 //启动T1
#define Timer1Stop TR1=0 //关闭T1
#define UartRxdEn REN=1; //串口允许接收
#define UartRxdDis REN=0; //串口禁止接收

#define LedDataPort     P0 //Led数据端口
#define LedCntPort   P2 //Led控制端口

#define Nop() _nop_()
#define Tm 20

/*===================控=制=引=脚=定=义===================*/

/*===================全=局=变=量=定=义===================*/
//共阳数码管译码表
uchar  code LedCode[]={0xc00xf90xa40xb00x990x920x820xf8
       0x800x900x880x830xc60xa10x860x8e
   0xbf};
//6位显示缓冲
static uchar DispString[]={0x100x100x100x100x100x10};

static uchar RxdIntCnt =0; //Rxd中断次数

/*=================系=统=标=志=位=定=义===================*/

/*==================系=统=函=数=声=明=====================*/
//中断初始化
void IntInit(void);

//延时函数
void Delayms(uchar t);
void Delayus(uchar t);

/*========================主=函=数========================*/
void main()
{
uchar ij=0;
Delayms(10);
IntInit(); //初始化中断

while(1)
{
j=0xfb;
for(i=0;i<6;i++)
{
LedDataPort=LedCode[DispString[i]]; //显示代码送数据端口
LedCntPort=j; //选择显示位置
j<<=1;
j|=0x01;
Delayms(2);
}
}
}
/*==================中=断=初=始=化=程=序==================*/
/*==========================================================
;系统中断初始化IntInit(void)
;输入参数:无
;输出参数:无
;函数说明:程序退出时,各中断以使能
==========================================================*/
void IntInit(void)
{
//初始化T1(用作波特率发生器)
TMOD=0x20; //T0方式1T1方式2

//初始化串行口
SCON=0x50; //串口方式1REN=1;
TH1=0xfd; //9600bps
TL1=0xfd;
Timer1Run; //启动T1

IE=0x10; //ES=1
//使能全局中断
ENABLE;
}

void UartRxdService(void) interrupt 4 using 1
{
RI=0;
switch(RxdIntCnt)
{
case 0:
if(SBUF==0xff) RxdIntCnt++;
break;
case 1:
if(SBUF==0xa5) RxdIntCnt++;
break;
case 2:
     RxdIntCnt++;
DispString[0]=SBUF;
break;
case 3:
     RxdIntCnt++;
DispString[1]=SBUF;
break;
case 4:
     RxdIntCnt++;
DispString[2]=SBUF;
break;
case 5:
     RxdIntCnt++;
DispString[3]=SBUF;
break;
case 6:
     RxdIntCnt++;
DispString[4]=SBUF;
break;
case 7:
     RxdIntCnt=0;
DispString[5]=SBUF;
break;
default:
break;
}
}

/*======================延=时=程=序=======================*/
/*==========================================================
;毫秒级延时程序Delayms(uchar

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2307  2011-02-21 02:00  38k单片机红外发送\38k

     文件        199  2011-02-21 02:00  38k单片机红外发送\38k.hex

     文件         58  2011-02-21 02:00  38k单片机红外发送\38k.lnp

     文件       4774  2011-02-21 02:00  38k单片机红外发送\38k.M51

     文件       1281  2011-02-21 02:05  38k单片机红外发送\38k.Opt

     文件       7123  2011-02-21 02:00  38k单片机红外发送\38k.plg

     文件       2176  2011-02-21 02:05  38k单片机红外发送\38k.Uv2

    .......         0  2011-02-21 00:06  38k单片机红外发送\38k_Uv2.Bak

     文件       3762  2011-02-20 23:24  38k单片机红外发送\Rx.c

     文件        542  2011-02-21 02:00  38k单片机红外发送\send38k.c

     文件       1790  2011-02-21 02:00  38k单片机红外发送\send38k.LST

     文件       1867  2011-02-21 02:00  38k单片机红外发送\send38k.OBJ

     文件       6376  2005-03-22 15:22  38k单片机红外发送\STARTUP.A51

     文件      14048  2011-02-21 02:00  38k单片机红外发送\STARTUP.LST

     文件        749  2011-02-21 02:00  38k单片机红外发送\STARTUP.OBJ

     目录          0  2011-02-21 02:05  38k单片机红外发送

----------- ---------  ---------- -----  ----

                47052                    16


评论

共有 条评论