📄 lib_22eb06_mc.c
字号:
/*
***********************************************************************
Embest Info&Tech Co., Ltd. All rights reserved.
www.embedinfo.com
***********************************************************************
---------------- file information -------------------------------------
file name: 22eb06_lib_modulecontrol.c
version : v0
author : peter pan / panqan@hotmail.com
panqian@embedinfo.com
begin : 2006-02-10
finish : 2006-02-10
define : lpc22eb06 module control to enable or disable the module
notes :
---------------- modify information -----------------------------------
version :
modify :
begin :
finish :
define :
-----------------------------------------------------------------------
*/
// (--------------------- compiler condition --------------------------
/*
#ifdef xxx
#define xxx
#endif
*/
// --------------------- compiler condition --------------------------)
/*-------------------------------------------------------------------*/
/* include files */
/*---------------------------------------------------------------- --*/
#include "lib_22eb06_mc.h"
/*-------------------------------------------------------------------*/
/* variable define */
/*-------------------------------------------------------------------*/
/*
INT32U XXXXXX;
*/
/*-------------------------------------------------------------------*/
/* extern function declare */
/*-------------------------------------------------------------------*/
/*--- define in XXX.c ---
extern void XXX();
*/
/*-------------------------------------------------------------------*/
/* extern variable declare */
/*-------------------------------------------------------------------*/
/*--- USED in XXX() ---
XXX SSS; // used inXXX()
*/
/*-------------------------------------------------------------------*/
/* function code */
/*-------------------------------------------------------------------*/
// 88 control
//(--------------------------------------------------------------------
/**********************************************************************
* name : display88_latch
* func : latch the spi send to 595 data used p2.19
* para : LATCH_EN
1: latch the send data
0: off the latch
* ret : xxxx
* glob : xxxx
* inc :
* author:
* date :
* modify:
* comment:
**********************************************************************/
INT32U display88_latch(display88_control LATCH_ENDIS)
{
INT32U i,j;
if (display88_latchen==LATCH_ENDIS)
{
//link to gpio p2.19
i = PINSEL2;
i &= (~P2__16_31__GPIO_PINSEL2_MASK);
i |= P2__16_31__GPIO_PINSEL2_VALUE;
PINSEL2 = i;
//set value 0
i = IOCLR2;
i |= GPIO2_19__88latch_IOXXX_VALUE;
IOCLR2 = i;
//set gpio p2.19 output
i = IODIR2;
i &= (~GPIO2_19__88latch_IOXXX_MASK);
i |= GPIO2_19__88latch_IOXXX_VALUE;
IODIR2 = i;
//set value 0
i = IOCLR2;
i |= GPIO2_19__88latch_IOXXX_VALUE;
IOCLR2 = i;
//set value 1
i = IOSET2;
i |= GPIO2_19__88latch_IOXXX_VALUE;
IOSET2 = i;
//set value 0
i = IOCLR2;
i |= GPIO2_19__88latch_IOXXX_VALUE;
IOCLR2 = i;
}
else
{
//link to gpio p2.19
i = PINSEL2;
i &= (~P2__16_31__GPIO_PINSEL2_MASK);
i |= P2__16_31__GPIO_PINSEL2_VALUE;
PINSEL2 = i;
//set gpio p2.19 input
i = IODIR2;
i &= (~GPIO2_19__88latch_IOXXX_MASK);
IODIR2 = i;
}
}
/**********************************************************************
* name : display88_outputen
* func : enable the display88 outputen
* para : OUTPUTEN
1: EN output
0: off output
* ret : xxxx
* glob : xxxx
* inc :
* author:
* date :
* modify:
* comment:
**********************************************************************/
INT32U display88_outputen(display88_control OUTPUTENDIS)
{
INT32U i,j;
if (display88_outen==OUTPUTENDIS)
{
//link to gpio p2.18
i = PINSEL2;
i &= (~P2__16_31__GPIO_PINSEL2_MASK);
i |= P2__16_31__GPIO_PINSEL2_VALUE;
PINSEL2 = i;
//set gpio p2.18 output
i = IODIR2;
i &= (~GPIO2_18__88EN_IOXXX_MASK);
i |= GPIO2_18__88EN_IOXXX_VALUE;
IODIR2 = i;
//set value 0
i = IOCLR2;
i |= GPIO2_18__88EN_IOXXX_MASK;
// i &= (~GPIO2_18__88EN_IOXXX_MASK);
IOCLR2 = i;
}
else
{
//link to gpio p2.18
i = PINSEL2;
i &= (~P2__16_31__GPIO_PINSEL2_MASK);
i |= P2__16_31__GPIO_PINSEL2_VALUE;
PINSEL2 = i;
//set gpio p2.18 input
i = IODIR2;
i &= (~GPIO2_18__88EN_IOXXX_MASK);
IODIR2 = i;
}
}
/**********************************************************************
* name : display88
* func : do a minute cycle to display the data on module88
* para : display88_data
display_cycle:
* ret : xxxx
* glob : xxxx
* inc :
* author:
* date :
* modify:
* comment:
**********************************************************************/
INT32U display88(INT32U display_88_data, INT32U display_cycle)
{
INT32U i,j,k;
// INT32U display_88_data=0;
INT32U data_bit=1;
INT32U data_bit_d;
INT32U data_bit_value=0;
INT32U data_bit_value_d;
INT32U data_divisor=1;
INT32U data_10_n;
i=1;
for (;i<display_cycle;i++)
{
data_bit=1;
for (;data_bit<9;data_bit++)
{
switch (data_bit)
{
case 1:
data_10_n = 10;
data_divisor = 1;
data_bit_d = 0xEF; //b11101111
break;
case 2:
data_10_n = 100;
data_divisor = 10;
data_bit_d = 0xDF; //b11011111
break;
case 3:
data_10_n = 1000;
data_divisor = 100;
data_bit_d = 0xBF; //b10111111
break;
case 4:
data_10_n = 10000;
data_divisor = 1000;
data_bit_d = 0x7F; //B01111111
break;
case 5:
data_10_n = 100000;
data_divisor = 10000;
data_bit_d = 0xFE; //b11111110
break;
case 6:
data_10_n = 1000000;
data_divisor = 100000;
data_bit_d = 0xFD; //b11111101
break;
case 7:
data_10_n = 10000000;
data_divisor = 1000000;
data_bit_d = 0xFB; //b11111011
break;
case 8:
data_10_n = 100000000;
data_divisor = 10000000;
data_bit_d = 0xF7; //b11110111
break;
default:
break;
};
data_bit_value = (display_88_data % data_10_n) / data_divisor;
switch (data_bit_value)
{
case 0:
data_bit_value_d = D88_0;
break;
case 1:
data_bit_value_d = D88_1;
break;
case 2:
data_bit_value_d = D88_2;
break;
case 3:
data_bit_value_d = D88_3;
break;
case 4:
data_bit_value_d = D88_4;
break;
case 5:
data_bit_value_d = D88_5;
break;
case 6:
data_bit_value_d = D88_6;
break;
case 7:
data_bit_value_d = D88_7;
break;
case 8:
data_bit_value_d = D88_8;
break;
case 9:
data_bit_value_d = D88_9;
break;
default:
break;
};
//send the data to 88 bit?/enbit?
spi_data_send(spi_c0, data_bit_d);
spi_data_send(spi_c0, data_bit_value_d);
//latch 88
display88_latch(display88_latchen);
//EN 88
display88_outputen(display88_outen);
//time_dly(1);
}
for (j=0;j<40;j++);
display88_outputen(display88_outdis);
}
}
//--------------------------------------------------------------------)
// SPI extend module control
//(--------------------------------------------------------------------
/**********************************************************************
* name : spi_extend_latch
* func : latch the spi send to 595 data used p2.16
* para : LATCH_EN
1: latch the send data
0: off the latch
* ret : xxxx
* glob : xxxx
* inc :
* author:
* date :
* modify:
* comment:
**********************************************************************/
INT32U spi_extend_latch(ext_device_control latch_endis)
{
INT32U i,j;
if (ext_device_all_latchen==latch_endis)
{
//link to gpio p2.16
i = PINSEL2;
i &= (~P2__16_31__GPIO_PINSEL2_MASK);
i |= P2__16_31__GPIO_PINSEL2_VALUE;
PINSEL2 = i;
//set value 0
i = IOCLR2;
i |= GPIO2_16__ext_latch_IOxxx_V;
IOCLR2 = i;
//set gpio p2.16 output
i = IODIR2;
i &= (~GPIO2_16__ext_latch_IOxxx_M);
i |= GPIO2_16__ext_latch_IOxxx_V;
IODIR2 = i;
//set value 0
i = IOCLR2;
i |= GPIO2_16__ext_latch_IOxxx_M;
IOCLR2 = i;
//set value 1
i = IOSET2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -