📄 lighttalk2.c
字号:
#include "LightTalk2.h"
void iniLeds()
{
LEDS0DDR = 0xff;
LEDS1DDR = 0xff;
LEDS0VAL = 0xff;
LEDS1VAL = 0xff;
CTRLDDR = 0xff;
CTRLPORT = 0xff;
}
void ledsTurnOn(INT2CHAR witch)
{ _ledsAnode_High(LEDS0);
_ledsAnode_High(LEDS1);
LEDS0VAL = witch.i8[0];
LEDS1VAL = witch.i8[1];
}
/*
tmp |= val.i8 & 0x01;
tmp |= val.i8 & 0x02;
tmp |= val.i8 & 0x04;
tmp |= val.i8 & 0x08;
tmp |= val.i8 & 0x10;
tmp |= val.i8 & 0x20;
tmp |= val.i8 & 0x40;
tmp |= val.i8 & 0x80;
*/
/*
程序功能:解包,整型值至双字节型,偶数位合成一个字节,奇数位合成一个字节
入口参数:整型数 val
出口参数:INT2CHAR结构体变量。整型至双字节
*/
INT2CHAR valUnPack(unsigned int val)
{ char i;
unsigned char bit2Char = 0 ;
unsigned int bitShift = 0 ;
INT2CHAR tmp;
tmp.i16=0;
bitShift = val;
for(i = 0; i < 8*sizeof(bit2Char); i++)
{ bit2Char >>= 1;
if(0x0001 & bitShift)/* 奇数 */
{
bit2Char |=0x80;
}else
{
// bit2Char |=0x00;
}
bitShift >>= 2;
}
tmp.i8[0] = bit2Char;
bit2Char =0;
bitShift = val;
for(i = 0; i < 8*sizeof(bit2Char); i++)
{ bit2Char >>= 1;
if(0x0002 & bitShift)/* 偶数 */
{
bit2Char |=0x80;
}else
{
// bit2Char |=0x00;
}
bitShift >>= 2;
}
tmp.i8[1] = bit2Char;
return(tmp);
}
/*
程序功能:打包,把奇数位,偶数位字节合成一个整型数
入口参数:INT2CHAR结构体val,低字节奇数位,高字节偶数位
出口参数:整型
*/
unsigned int valPack(INT2CHAR val)
{ char i;
unsigned char bitShift = val.i8[0];
unsigned int bit2int0 = 0,bit2int1 = 0;
for(i = 0;i < 8*sizeof(bitShift) ;i++ )
{ bit2int0 >>= 2 ;
if(bitShift & 0x01)
{
bit2int0 |=0x8000;
}else
{
// bit2int0 |=0x0000;
}
bitShift >>= 1 ;
}
bitShift = val.i8[1];
for(i = 0;i < 8*sizeof(bitShift) ;i++ )
{ bit2int1 >>= 2 ;
if(bitShift & 0x01)
{
bit2int1 |= 0x4000;
}else
{
// bit2int1 |= 0x0000;
}
bitShift >>= 1 ;
}
return( bit2int0 | bit2int1 );
}
void ledsSelect(char sel)
{
CTRLPORT &=~(1 << sel);
}
/*
软串口
*/
void suart_Byte(unsigned char input)
{
unsigned char i=8;
_suartBit1(); //发送结束位
_runTimer0_TimeUS(SUART_DPS);
_waitTimer0OV();
_suartBit0();//TXD=(bit)0; //发送启始位
_runTimer0_TimeUS(SUART_DPS);
_waitTimer0OV();
//发送8位数据位
while(i--)
{
if(input&0x01)
{
_suartBit1();
}
else
{
_suartBit0();
} //先传低位
_runTimer0_TimeUS(SUART_DPS);
_waitTimer0OV();
input=input>>1;
}
//发送校验位(无)
_suartBit1(); //发送结束位
_runTimer0_TimeUS(SUART_DPS);
_waitTimer0OV();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -