📄 main.c
字号:
/*
;************************************************************************************************************
;* 北京知天行科技有限公司
;* 研 发 部
;*
;* http://www.zt-training.com
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------
;*
;* 文件名称 : MAIN.c
;* 文件功能 : 所有应用程序的头文件均加在此文件中
;* 补充说明 :
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : ARM7开发小组
;* 修改日期 : 2004/04/25
;* 版本声明 : V1.0.1
;*-------------------------------------------- 历史版本信息 -------------------------------------------------
;* 文件作者 : ARM7开发小组
;* 创建日期 : 2004/04/20
;* 版本声明 : v1.0.0
;*-----------------------------------------------------------------------------------------------------------
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/
#include "..\inc\config.h"
/*
*************************************************************************************************************
- 函数名称 : Main(void)
- 函数说明 : 系统的主程序入口
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
unsigned int iiccount=4;
unsigned int iGetAck=0;
unsigned char key=0;
void __irq IRQ_I2C2(void)
{
if((iiccount--)==0) //如果数据写完
{
rIICSTAT=0xd0; //停止主设备发送传输
rIICCON=0xaf; //恢复 IIC 操作
Delay(1); //等待,直到停止条件起效
}
// while (rIICSTAT & 0x01);
rIICCON=0xaf; //释放 IIC 总线操作
rI_ISPC = BIT_IIC;
}
unsigned char Receive()
{
unsigned KeyValue1=0;
unsigned KeyValue2=0;
// unsigned KeyValue3=0;
// rPCONF = 0x827EA;
// rPUPF = 0x03;
rIICCON = 0xaf;
//rIICDS = 0x80; //07/10/05
rIICDS = 0x71;
rIICSTAT= 0xf0;
Delay(2);
//while(rIICSTAT&0x01);
// rIICDS = 0x10; //07/10/05
rIICDS = 0x01;
rIICCON = 0xaf;
Delay(2);
// while(rIICSTAT&0x01);
// rIICCON = 0xaf;
//
//rIICDS = 0x80; //07/10/05
rIICDS = 0x71;
rIICSTAT= 0xb0;
// rIICSTAT= 0xD0; //07/10/05
rIICCON = 0xaf;
Delay(2);
//while(rIICSTAT&0x01);
// rIICCON = 0x2f;
// Delay(2);
rIICCON = 0xaf;
// rIICCON = 0x2f;
Delay(2);
KeyValue1=rIICDS;
rIICCON = 0x2f;
Delay(2);
// rIICCON = 0xaf;
KeyValue2=rIICDS;
// rIICCON = 0xaf ;
// Delay(2);
// rIICCON = 0xaf;
// KeyValue3=rIICDS;
//rIICCON = 0x2f ;
// Delay(10);
//
// KeyValue3=rIICDS;
rIICSTAT= 0x90;
rIICCON = 0xaf;
Delay(6);
return KeyValue1;
}
unsigned char key1=0;
void __irq IRQ_Iint0(void)
{
// if((iiccount--)==0) //如果数据写完
// {
// rIICSTAT=0xd0; //停止主设备发送传输
// rIICCON=0xaf; //恢复 IIC 操作
// Delay(1); //等待,直到停止条件起效
// }
// while (rIICSTAT & 0x01);
// rIICCON=0xaf; //释放 IIC 总线操作
key1=Receive();
rI_ISPC = BIT_EINT0;
}
void Init0_Init()
{
if (( rINTPND & BIT_EINT0) )
{
rI_ISPC = BIT_EINT0;
}
rINTMSK = ~(BIT_GLOBAL | BIT_EINT0 );
// pISR_IIC = (unsigned int)IRQ_I2C1; // 设置I2C中断向量地址
pISR_EINT0 = (unsigned int)IRQ_Iint0;
}
void SendData(unsigned char addr,unsigned char data,unsigned char data1)
{
iiccount = 4;
rIICCON = 0xaf; // 使能I2C中断 enable ACK generation IICCLK=Fmclk/16
// rIICDS = 0x80;
rIICDS = 0x70; //write slave address to IICDS
rIICSTAT = 0xF0; //主设备发送模式,产生起始条件,使能发送/接收
Delay(1);
rIICCON = 0xaf;
rIICDS = addr;
Delay(1);
rIICCON = 0xaf;
rIICDS = data;
Delay(1);
rIICCON = 0xaf;
rIICDS = data1;
Delay(1);
rIICCON = 0xaf;
rIICSTAT = 0xD0;
}
/*
void SendData(unsigned char addr1,unsigned char addr2,unsigned char data)
{
iGetAck=0;
// rIICCON = 0xaf; // 使能I2C中断 enable ACK generation IICCLK=Fmclk/16
// rIICDS = 0x80;
rIICDS = addr1; //write slave address to IICDS
rIICSTAT = 0xF0; //主设备发送模式,产生起始条件,使能发送/接收
Delay(5);
// while(iGetAck==0);
iGetAck=0;
rIICDS = addr2;
rIICCON = 0xaf;
Delay(5);
// while(iGetAck==0);
iGetAck=0;
rIICDS = data;
rIICCON = 0xaf;
Delay(5);
// while(iGetAck==0);
iGetAck=0;
rIICSTAT = 0xd0;
rIICCON = 0xaf;
Delay(5);
}
*/
void I2C_Init()
{
if (( rINTPND & BIT_IIC) )
{
rI_ISPC = BIT_IIC;
}
rINTMSK = ~(BIT_GLOBAL | BIT_IIC );
// pISR_IIC = (unsigned int)IRQ_I2C1; // 设置I2C中断向量地址
pISR_IIC = (unsigned int)IRQ_I2C2;
}
void Main()
{
Target_Init();
Init0_Init();
//I2C_Init();
// SendData(0x07,0x60,0xc0);
//SendData(0x07,0x61,0x41);
// SendData(0x10,0x6e,0x6E);
SendData(0x07,0x60,key);
while(1)
{
key=Receive();
//Delay(5);
/**8
//SendData(0x10,0x6e,0x6E);
switch(key)
{
case 1:
SendData(0x07,0x60,0x00);
SendData(0x07,0x61,0x03);
SendData(0x07,0x62,0x09);
SendData(0x07,0x63,0x00);
SendData(0x07,0x64,0x07);
SendData(0x07,0x65,0x00);
SendData(0x07,0x66,0x00);
SendData(0x07,0x67,0x02);
Delay(5000);
SendData(0x07,0x60,0x01);
SendData(0x07,0x61,0x05);
SendData(0x07,0x62,0x00);
SendData(0x07,0x63,0x00);
SendData(0x07,0x64,0x00);
SendData(0x07,0x65,0x01);
SendData(0x07,0x66,0x03);
SendData(0x07,0x67,0x00);
break;
//case 2;
// case 3;
default:
break;
}
***/
/* SendData(0x07,0x60,0x00);
SendData(0x07,0x61,0x03);
SendData(0x07,0x62,0x09);
SendData(0x07,0x63,0x00);
SendData(0x07,0x64,0x07);
SendData(0x07,0x65,0x00);
SendData(0x07,0x66,0x00);
SendData(0x07,0x67,0x02);
Delay(5000);
SendData(0x07,0x60,0x01);
SendData(0x07,0x61,0x05);
SendData(0x07,0x62,0x00);
SendData(0x07,0x63,0x00);
SendData(0x07,0x64,0x00);
SendData(0x07,0x65,0x01);
SendData(0x07,0x66,0x03);
SendData(0x07,0x67,0x00);
Delay(5000);
//SendData(0x70,0x10,0x6E);
*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -