版权人:周琪 2012年5月设计。下面呈现的一个实例代码。不解释,能看懂的朋友。可以QQ给我留言,愿交流
/********************************************************************/
//宏观声明
#include<STC12C5A.H>
#include <intrins.h>
#define nop() _nop_()
#define uchar unsigned char
#define uint unsigned int
/*
P3 Bit Registers (Mnemonics & Ports)
------------------------------------------------*/
sbit P3_0 = 0xB0;
sbit P3_1 = 0xB1;
sbit P3_2 = 0xB2;
sbit P3_3 = 0xB3;
sbit P3_4 = 0xB4;
sbit P3_5 = 0xB5;
sbit P3_6 = 0xB6;
sbit P3_7 = 0xB7;
/********************************************************************/
//EEPROM 声明文件
#define CMD_IDLE 0
#define CMD_READ 1
#define CMD_PROGRAM 2
#define CMD_ERASE 3
#define ENABLE_IAP 0x83
/********************************************************************/
//红外学习声明
uchar data IRcode[4],IRcode2[4];
uchar CodeTemp;
uchar i,j,k,p,studyi,num;
uchar IRS_STATE=0;
uchar idata key_ircode[30][4];
sbit IRsignal=P3^2;
sbit LED1=P1^6;
sbit LED2=P1^7;
/********************************************************************
sbit Skey=P2^7;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit key5=P2^4;
/********************************************************************/
//I2C声明文件
sbit SDA=P3^3;
sbit SCL=P3^7;
/********************************************************************/
uchar data keynum;
/********************************************************************/
//-----------------------------------------------------
//static bit OP; //红外发射管的亮灭
//static unsigned int count; //延时计数器
//static unsigned int endcount; //终止延时计数
static unsigned char Flag; //红外发送标志
char iraddr1; //十六位地址的第一个字节
char iraddr2; //十六位地址的第二个字节
sbit IR_SEND=P1^3;
uchar cnt;
uint value;
//------------------------------------------------------------
#define FOSC 11059200
#define T38KHz (FOSC / 4 / 37900)
/********************************************************************/
void Delay0_9ms(void)//0.9毫秒延迟
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 10;
j = 170;
do
{
while (--j);
} while (--i);
}
void Delay1ms(void)//1毫秒延迟
{
/*********************************************************************/
unsigned char i, j;
//宏观声明
#include<STC12C5A.H>
#include <intrins.h>
#define nop() _nop_()
#define uchar unsigned char
#define uint unsigned int
/*
P3 Bit Registers (Mnemonics & Ports)
------------------------------------------------*/
sbit P3_0 = 0xB0;
sbit P3_1 = 0xB1;
sbit P3_2 = 0xB2;
sbit P3_3 = 0xB3;
sbit P3_4 = 0xB4;
sbit P3_5 = 0xB5;
sbit P3_6 = 0xB6;
sbit P3_7 = 0xB7;
/********************************************************************/
//EEPROM 声明文件
#define CMD_IDLE 0
#define CMD_READ 1
#define CMD_PROGRAM 2
#define CMD_ERASE 3
#define ENABLE_IAP 0x83
/********************************************************************/
//红外学习声明
uchar data IRcode[4],IRcode2[4];
uchar CodeTemp;
uchar i,j,k,p,studyi,num;
uchar IRS_STATE=0;
uchar idata key_ircode[30][4];
sbit IRsignal=P3^2;
sbit LED1=P1^6;
sbit LED2=P1^7;
/********************************************************************
sbit Skey=P2^7;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
sbit key5=P2^4;
/********************************************************************/
//I2C声明文件
sbit SDA=P3^3;
sbit SCL=P3^7;
/********************************************************************/
uchar data keynum;
/********************************************************************/
//-----------------------------------------------------
//static bit OP; //红外发射管的亮灭
//static unsigned int count; //延时计数器
//static unsigned int endcount; //终止延时计数
static unsigned char Flag; //红外发送标志
char iraddr1; //十六位地址的第一个字节
char iraddr2; //十六位地址的第二个字节
sbit IR_SEND=P1^3;
uchar cnt;
uint value;
//------------------------------------------------------------
#define FOSC 11059200
#define T38KHz (FOSC / 4 / 37900)
/********************************************************************/
void Delay0_9ms(void)//0.9毫秒延迟
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 10;
j = 170;
do
{
while (--j);
} while (--i);
}
void Delay1ms(void)//1毫秒延迟
{
/*********************************************************************/
unsigned char i, j;
_nop_();
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
/********************************************************************/
void Delay4ms(void)//4毫秒延迟
{
unsigned char i, j;
i = 11;
j = 190;
do
{
while (--j);
} while (--i);
}
/********************************************************************/
void Delay4ms(void)//4毫秒延迟
{
unsigned char i, j;
_nop_();
_nop_();
_nop_();
i = 44;
j = 3;
do
{
while (--j);
} while (--i);
}
/********************************************************************
void Delay500us()//0.5毫秒延迟 //@11.0592MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 44;
j = 3;
do
{
while (--j);
} while (--i);
}
/********************************************************************
void Delay500us()//0.5毫秒延迟 //@11.0592MHz
{
unsigned char i, j;
i = 6;
j = 93;
do
{
while (--j);
} while (--i);
}
********************************************************************/
void Delay(void)// 普通延迟
{
uchar i,j,k;
for(i=200;i>0;i--)
for(j=200;j>0;j--)
for(k=3;k>0;k--);
}
/**************************************
j = 93;
do
{
while (--j);
} while (--i);
}
********************************************************************/
void Delay(void)// 普通延迟
{
uchar i,j,k;
for(i=200;i>0;i--)
for(j=200;j>0;j--)
for(k=3;k>0;k--);
}
/**************************************