📄 stv.c
字号:
/*******************************************************************************
STV.C
Copyright (c) SmartASIC, Inc. All rights reserved.
*******************************************************************************/
#include <MTV230.H>
#define STV102 0xFE
/*==============================================================================
==============================================================================*/
void STV_Start(void) {
STV_SDA=1;
STV_SCL=1;
STV_SDA=0;
STV_SCL=0;
}
/*==============================================================================
==============================================================================*/
void STV_Stop(void) {
STV_SDA=0;
STV_SCL=1;
STV_SDA=1;
}
/*==============================================================================
==============================================================================*/
bit STV_Data_In(unsigned char bytedata) {
unsigned char i;
bit ack;
for(i=0; i<8; i++) {
STV_SDA=bytedata&0x80;
STV_SCL=1;
bytedata<<=1;
STV_SCL=0;
}
STV_SDA=1;
STV_SCL=1;
ack=STV_SDA;
STV_SCL=0;
STV_SDA=0;
return ack;
}
/*==============================================================================
==============================================================================*/
unsigned char STV_Data_Out(void) {
unsigned char i, bytedata;
STV_SDA=1;
for(i=0; i<8; i++) {
STV_SCL=1;
bytedata<<=1;
bytedata|=STV_SDA;
STV_SCL=0;
}
return bytedata;
}
/*==============================================================================
==============================================================================*/
void STV_Acknowledge(bit ack) {
STV_SDA=ack;
STV_SCL=1;
STV_SCL=0;
}
/*===========================================================================
===========================================================================*/
unsigned char STV_Byte_Read(unsigned char address) {
unsigned char bytedata=0;
Again:
STV_Start();
if(STV_Data_In(STV102))
goto Again;
if(STV_Data_In(address))
goto Again;
STV_Start();
if(STV_Data_In(STV102|1))
goto Again;
bytedata=STV_Data_Out();
STV_Acknowledge(1);
STV_Stop();
return bytedata;
}
/*===========================================================================
===========================================================================*/
void STV_Byte_Write(unsigned char address, unsigned char bytedata) {
Again:
STV_Start();
if(STV_Data_In(STV102))
goto Again;
if(STV_Data_In(address))
goto Again;
if(STV_Data_In(bytedata))
goto Again;
STV_Stop();
}
/*===========================================================================
===========================================================================*/
void STV_Gain(unsigned char rgb, unsigned char value) {
STV_Byte_Write(0xe8+rgb*2, value);//Gain
}
/*===========================================================================
===========================================================================*/
void STV_Offset(unsigned char rgb, unsigned char value) {
if(value>0x7f)
value=value-0x80;
else
value=value+0x80;
STV_Byte_Write(0xe9+rgb*2, value);//Offset
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -