📄 dtt-110.c
字号:
000,000,000,
};
Uchar code Ptab4[][3]= {
000,000,000,
255,000,000,
000,000,000,
000,255,000,
000,000,000,
000,000,255,
000,000,000,
255,255,000,
000,000,000,
255,000,255,
000,000,000,
000,255,255,
000,000,000,
255,255,255,
};
Uchar code Ptab5[][3]= {
255,000,000,
000,255,000,
000,000,255,
255,255,000,
255,000,255,
000,255,255,
255,255,255,
000,255,000,
000,000,255,
255,000,255,
255,000,000,
000,000,000,
000,255,000,
000,000,000,
000,000,255,
000,000,000,
255,000,000,
000,000,000,
000,255,000,
000,000,000,
000,000,255,
000,000,000,
255,255,000,
000,000,000,
255,000,255,
000,000,000,
000,255,255,
000,000,000,
255,255,255,
};
void Progrun(void) {
Uchar i;
if(Program<=7){ //固定七色
for(i=0; i<3; i++){
dmxdat[i] = Ptab1[Program][i];
dmxdat[3] = Maxout;
}
return;
}
if(Program==8){ //自动七色
for(i=0; i<3; i++){
dmxdat[i] = Ptab1[Step+1][i];
dmxdat[3] = Maxout;
}
dmxdat[4] = Fadetime;
Uspeed = Speed;
Step++;
if(Step>=7)Step=0;
return;
}
if(Program==9){ // Auto R G B;
for(i=0; i<3; i++){
dmxdat[i] = Ptab1[Step+1][i];
dmxdat[3] = Maxout;
}
dmxdat[4] = Fadetime;
Uspeed = Speed;
Step++;
if(Step>=3)Step=0;
return;
}
if(Program==10){ //Auto Roll R G B;
for(i=0; i<3; i++){
dmxdat[i] = Ptab1[Step+1][i];
dmxdat[3] = Maxout;
}
dmxdat[4] = 50;
Uspeed = 5;
Step++;
if(Step>=3)Step=0;
return;
}
if(Program==11){ // G B P
for(i=0; i<3; i++){
dmxdat[i] = Ptab2[Step][i];
dmxdat[3] = Maxout;
}
dmxdat[4] = Fadetime;
Uspeed = Speed;
Step++;
if(Step>=3)Step=0;
return;
}
if(Program==12){ // Flash R G B
for(i=0; i<3; i++){
dmxdat[i] = Ptab3[Step][i];
dmxdat[3] = Maxout;
}
dmxdat[4] = Fadetime;
Uspeed = Speed;
Step++;
if(Step>=6)Step=0;
return;
}
if(Program==13){ //Flash 7 color
for(i=0; i<3; i++){
dmxdat[i] = Ptab4[Step][i];
dmxdat[3] = Maxout;
}
dmxdat[4] = Fadetime;
Uspeed = Speed;
Step++;
if(Step>=14)Step=0;
return;
}
if(Program==14){ //Roll 7 Color
for(i=0; i<3; i++){
dmxdat[i] = Ptab1[Step+1][i];
dmxdat[3] = Maxout;
}
dmxdat[4] = 100;
Uspeed = 5;
Step++;
if(Step>=7)Step=0;
return;
}
if(Program==15){ //run all program
for(i=0; i<3; i++){
dmxdat[i] = Ptab5[Step][i];
dmxdat[3] = Maxout;
}
dmxdat[4] = Fadetime;
Uspeed = Speed;
Step++;
if(Step>=29)Step=0;
return;
}
}
Uchar Max(Uchar a,b){
Uint i;
i=a*b;
a=i;
b=i>>8;
if(b>0x80){
a=b+1;
return(a);
}
if(a>0x80){
a=b+1;
return(a);
}
return(a=b);
}
void Dmxrun(void) {
Uchar i;
if(Dmxmode==0){
for(i=0; i<3; i++){ dmxdat[i] = Ptab1[dmxdat[0]/32][i];}
return;
}
if(Dmxmode==1){
for(i=0; i<3; i++){ dmxdat[i] = Ptab1[dmxdat[0]/32][i];}
buf[3] = dmxdat[1];
return;
}
if(Dmxmode==2){
buf[0] = dmxdat[0];
buf[1] = dmxdat[1];
buf[2] = dmxdat[2];
buf[3] = 0;
return;
}
if(Dmxmode==3){
buf[0] = Max(dmxdat[0],dmxdat[3]);
buf[1] = Max(dmxdat[1],dmxdat[3]);
buf[2] = Max(dmxdat[2],dmxdat[3]);
buf[3] = 0;
return;
}
if(Dmxmode==4){
buf[0] = Max(dmxdat[0],dmxdat[3]);
buf[1] = Max(dmxdat[1],dmxdat[3]);
buf[2] = Max(dmxdat[2],dmxdat[3]);
buf[3] = dmxdat[4];
return;
}
}
void Faderun(unsigned char fade){ unsigned char i;
if(Fclock==1){Fclock=0;
if(fade==0){ for(i=0;i<3;i++){out[i]=buf[i];}return;}
for(i=0;i<3;i++){
if(out[i]==buf[i])goto fade_n;
if(out[i]<buf[i]){out[i]=(buf[i]-out[i])/(fade+1)+1+out[i];goto fade_n;}
if(out[i]>buf[i]){out[i]=out[i]-((out[i]-buf[i])/(fade+1)+1);}
fade_n:;
}
}
}
Uchar Timerchk(void) {
Uchar i,t;
Uchar sw = 0;
Uchar sec,min,hr;
reset_3w();
wbyte_3w(0xbf); //以多字节突发方式读取时钟数据
sec = BCD2HEX(rbyte_3w()); //秒
min = BCD2HEX(rbyte_3w()); //分
hr = BCD2HEX(rbyte_3w()); //小时
reset_3w();
for(i=0; i<8; i++){
t = Timer[i*3+0x02];
if(t > 0){
t = Timer[i*3+0x00];
if(hr >= t){
t = Timer[i*3+0x01];
if(min >= t){
sw = Timer[i*3+0x02];
goto next;
}
}
return(sw);
}
next:;
}
return(0);
}
Uint Tempchk(void){
Uint t1;
float tmep;
t1 = Readtemp();
tmep = t1*0.0625;
t1 = tmep;
return(t1);
}
void main(void) {
Delay400Ms();
LcdReset();
ePutstr(0,0," Welcome Use DTT-110 REV: 1.0");
Delay400Ms();
Delay400Ms();
Delay400Ms();
Delay400Ms();
TMOD = 0x21;
PCON = 0;
SCON = 0xc0;
T2CON= 0x34;
TH2 = 0xff;
TL2 = 0xfd;
RCAP2L=0xfd;
RCAP2H=0xff;
TR2 = 1;
TH1 = 178;
ET1 = 1;
TR1 = 1;
IT0 = 1;
EX0 = 1;
EA = 1;
Discmd =1;
Readset();
if('Y'==Checkdate())
cke: if(Password()=='N')goto cke;
Menu1 = 0;
Menu2 = 0;
while(1) {
if(Mode==0) {
I_O = 0;
REN = 1;
ES = 1;
M_s_com = 0x00;
Dmxrun();
goto common;
}
if(Mode==1) {
I_O = 0;
REN = 1;
ES = 1;
M_s_com = 0x55;
buf[0] = dmxdat[0];
buf[1] = dmxdat[1];
buf[2] = dmxdat[2];
buf[3] = dmxdat[3];
buf[4] = dmxdat[4];
}
if(Mode==2) {
I_O = 1;
REN = 0;
ES = 0;
if(Program < 8) {
Progrun();
goto mon;
}
if(Pclock == 1){
Pclock = 0;
Progrun();
}
mon: buf[0] = Max(dmxdat[0],dmxdat[3]);
buf[1] = Max(dmxdat[1],dmxdat[3]);
buf[2] = Max(dmxdat[2],dmxdat[3]);
buf[3] = dmxdat[4];
goto common;
}
if(Mode==3) {
I_O = 1;
REN = 0;
ES = 0;
if(Timerchk()==0){
buf[0] = 0;
buf[1] = 0;
buf[2] = 0;
buf[3] = 0;
goto common;
}
if(Timerchk()==1){
if(Pclock == 1){
Pclock = 0;
Progrun();
}
buf[0] = Max(dmxdat[0],dmxdat[3]);
buf[1] = Max(dmxdat[1],dmxdat[3]);
buf[2] = Max(dmxdat[2],dmxdat[3]);
buf[3] = dmxdat[4];
goto common;
}
if(Timerchk()==2){
buf[0] = 0;
buf[1] = 0;
buf[2] = 0;
buf[3] = 0;
}
}
common: if(Tclock==1){
Tclock = 0;
temp: if(Tempchk() > 75){
out[0] = 0;
out[1] = 0;
out[2] = 0;
ePutstr(0,0," Warning!!! ");
ePutstr(0,1,"Temperature Out ");
goto temp;
}
}
if(P2_3 == 0) {
out[0] = 0;
out[1] = 0;
out[2] = 0;
ePutstr(0,0," Warning!!! ");
ePutstr(0,1," Load Out 15A ");
goto common;
}
if(Display==0){
Setup();
Saveset();
}
PDisplay();
Faderun(buf[3]);
}
}
void SERI_DMX() interrupt 4 using 2{RI=0;
if (RB8==0){CHK_SIGN=0;if (SBUF!=0){DMX_SIGN=1;return;}
DMX_SIGN=0;ADDR_CON=0;RECDAT=0;return;}
else if (CHK_SIGN!=1){if (DMX_SIGN==0){
DMX_SIGN=1;
if (SBUF==M_s_com) {CHK_SIGN=1;Dconter=200;return;}
}
return; }
if(RECDAT==0){
ADDR_CON++;
if(ADDR_CON==Dmxaddr)goto rec; return;
}
rec:dmxdat[RECDAT]=SBUF;
RECDAT++;
if(RECDAT>=5)RECDAT=0;
}
void Saveset(void){
if (Wr == 1){
if (key_read == 0){
Wr = 0;
W_P = 0;
Write_addr(0);
Send(0x55);
Send(Mode);
Send(Dmxaddr);
Send(Dmxaddr>>8);
Send(Dmxmode);
Send(Program);
Send(Speed);
Send(Speed>>8);
Stop();
Delay5Ms();
Write_addr(0x08);
Send(Fadetime);
Send(Year);
Send(Month);
Send(Day);
Send(Timer[0]);
Send(Timer[1]);
Send(Timer[2]);
Send(Timer[3]);
Stop();
Delay5Ms();
Write_addr(0x10);
Send(Timer[4]);
Send(Timer[5]);
Send(Timer[6]);
Send(Timer[7]);
Send(Timer[8]);
Send(Timer[9]);
Send(Timer[10]);
Send(Timer[11]);
Stop();
Delay5Ms();
Write_addr(0x18);
Send(Timer[12]);
Send(Timer[13]);
Send(Timer[14]);
Send(Timer[15]);
Send(Timer[16]);
Send(Timer[17]);
Send(Timer[18]);
Send(Timer[19]);
Stop();
Delay5Ms();
Write_addr(0x20);
Send(Timer[20]);
Send(Timer[21]);
Send(Timer[22]);
Send(Timer[23]);
Send(Maxout);
Stop();
Delay5Ms();
W_P = 1;
}
}
}
void Readset(void) {
Uchar r;
Write_addr(0x00);
Start();
Send(0xa1);
if (Read() == 0x55){
Mode = Read();
Dmxaddr = Read();
Dmxaddr = Dmxaddr>>8 | Read();
Dmxmode = Read();
Program = Read();
Speed = Read();
Speed = Speed >>8 | Read();
Fadetime = Read();
Year = Read();
Month = Read();
Day = Read();
for (r=0; r<24; r++) {
Timer[r] = Read();
}
Maxout = Read();
}
Stop();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -