标题:
松翰SN8F5702红外发射的程序
[打印本页]
作者:
实习生1
时间:
2017-10-25 17:46
标题:
松翰SN8F5702红外发射的程序
刚学不喜勿碰.
单片机源程序如下:
#include "SN8F5702.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit LED=P1^2;
sbit K1=P1^3;
u8 code array[4]={0xff,0xff,0xff,0xff};
u8 key_shake,j,flag,start,i,a,succ,dat;
//key_shake°′¼üÏû¶¶ j°′¼ü2»Öظ′±äá¿ flag±ê¼Ç°′¼ü°′ÏÂ2Å·¢éä startÆô¶ˉ·¢éä a·¢Ëíμú¼¸¸öêy×é succ·¢éä3é1|±ê¼Ç datêy¾Y
u16 delay,delay_1,delay_2,time;
//delay·¢éäòyμ¼ÂëμÄÑóê± delay_1·¢éä¸ß1μÄÑóê± delay_2·¢éäμí0μÄÑóê± time·¢éäêy¾Y8¸ö×Ö½úμıäá¿
void Timer0Tnit()
{
TMOD|=0X01; //Ñ¡ÔñÎa¶¨ê±Æ÷0ģ꽣¬1¤×÷·½ê½1£¬½öóÃTR0′ò¿aÆô¶ˉ¡£
TH0=0Xff;
TL0=0X7f; //¸ø¶¨ê±Æ÷¸33õÖ죬¶¨ê±100us
ET0=1; //′ò¿a¶¨ê±Æ÷0ÖD¶ÏÔêDí
EAL=1; //′ò¿a×üÖD¶Ï
TR0=1; //′ò¿a¶¨ê±Æ÷
}
void key()//°′¼ü
{
if(!K1)
{
if(!j)
{
key_shake++;
if(key_shake>=250)
{
key_shake=0;
flag=1;
}
}
}
else
{
key_shake=0;
}
}
void Writeh()//·¢éä¸ß1
{
delay_1++;
if(delay_1>=5)
{
LED=0;
if(delay_1>=20)
{
delay_1=0;
succ=1;
}
}
else
{
LED=1;
}
}
void Writel()//·¢éäμí0
{
delay_2++;
if(delay_2>=5)
{
LED=0;
if(delay_2>10)
{
delay_2=0;
succ=1;
}
}
else
{
LED=1;
}
}
void Emiss()
{
if((dat&0x01)==0x01)//′ó×îμíλ¿aê¼·¢
{
Writeh();
}
else
{
Writel();
}
if(succ==1)
{
succ=0;
dat>>=1;
time++;
if(time>=8)
{
time=0;
a++;
dat=array[a];
if(a==5)
{
a=0;
dat=array[a];
flag=0;
start=0;
}
}
}
}
void EmissionInit()
{
switch(start)
{
case(0):
LED=1;
delay++;
if(delay>=90)
{
delay=0;
start=1;
LED=0;
}
break;
case(1):
LED=0;
delay++;
if(delay>=45)
{
delay=0;
start=2;
}
break;
case(2):
Emiss();
break;
}
}
void main()
{
CLKSEL = 0x06; // Fcpu = 32M/2 = 16M
CLKCMD = 0X69;
CKCON = 0X10; // Wait 2 Cycle From = 8M
//-----IO init -----//
P0M = 0xFf; //1111 111
P0 = 0x00;
P0UR = 0x00;
P1M = 0xF7; //1111 0111 ′ò¿a°′¼üIO¿ú½óêÕ
P1 = 0x00;
P1UR = 0x08;
P1W = 0x00;
P2M = 0xFf; //0000 0011
P2 = 0x00;
P2UR =0x00;
_nop_();
Timer0Tnit();
dat=array[a];
while(1);
}
void Timer0()interrupt ISRTimer0
{
TH0=0xff;
TL0=0x7f;
key();
if(flag==1)
{
EmissionInit();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1