📄 电脑舞台灯具.txt
字号:
用【 小 | 中 | 大 】字体浏览
C51编程:电脑舞台灯具 [yizheng] [24次] 01-11-14 下午 06:55:13
#include<reg51.h>
#define unsigned char uchar
uchar Pro_r[]={0,100,228,2,20,4,50,5,228,228,0,100,1,228,
5,100,228,4,153,5,178,178,255,255,255;}
uchar Pro_d[]={0,25,228,0,25,228,0,25,228,0,25,228,0,25,228,
0,25,228,0,25,228,0,228,228,0,203,203,
1,25,0,25,228,0,25,228,0,25,228,0,25,228,
0,25,228,0,25,228,0,25,228,0,228,228,0,203,203,
1,25,0,25,228,0,25,228,0,25,228,0,25,228,
0,25,228,0,25,228,0,25,228,0,228,228,0,203,203,
1,25,0,25,228,0,25,228,0,25,228,0,25,228,
0,25,228,0,25,228,0,25,228,0,228,228,0,203,203,
1,25,0,25,228,0,25,228,0,25,228,0,25,228,
0,25,228,0,25,228,0,25,228,0,228,228,0,203,203,
1,25,0,25,228,0,25,228,0,25,228,0,25,228,
0,25,228,0,25,228,0,25,228,0,228,228,0,203,203,
1,25,0,25,228,0,25,228,0,25,228,0,25,228,
0,25,228,0,25,228,0,25,228,0,228,228,0,203,203,
1,25,0,25,228,0,25,228,0,25,228,0,25,228,
0,25,228,0,25,228,0,25,228,0,228,228,0,203,203,
1,228,228,1,203,203,255,255,255;}
unsigned char wz[6],zt[6],hm,ct,status,addr;
void timer0() interrupt 1
{uchar a,x;
if(ct!=0)--ct;
x=0;
while(x<6){
a=wz[x]&0x7f;
if(a!=0){
a=wz[x]&0x80;
if(a)zt[x]>>=1;
else zt[x]<<=1;
a=zt[x];
switch(x){
case 0:a&=0x0f;P0&=0xf0;P0|=a;break;
case 1:a&=0xf0;P0&=0x0f;P0|=a;break;
case 2:a&=0x0f;P1&=0xf0;P1|=a;break;
case 3:a&=0xf0;P1&=0x0f;P1|=a;break;
case 4:a&=0x0f;P2&=0xf0;P2|=a;break;
case 5:a&=0xf0;P2&=0x0f;P2|=a;break;
default : ; break;
}
--wz[x];
}
++x;
}
}
void serial() interrupt 4
{uchar a,x;
RI=0;
a=SBUF;
if(SM2==1){if(a==0x255||a==addr)SM2=0;}
else { if(a==0xff)sm2=1;
else {if(status==0){hm=a;status=1;}
else {wz[hm]=a;status=0;}
}
}
}
delay()
{uchar x,y,z;
for(x=255;x=0;--x){
for(y=255;y=0;--y){
for(z=255;z=0;--z)
}
}
}
void rst()
{uchar a,x;
x=0;
while(){
a=Pro_r[x];
if(a==0xff)break;
if(a>127){a&=0x7f;ct=a;while(ct);}
else {++x;wz[a]=Pro_r[x];}
++x;
}
}
void main()
{uchar x,a;
TMOD=0X20;SCON=0XE0;
EA=1;ET0=1;TR0=1;TR1=1;TH1=0XF3;
x=0;
while(x<6){zt[x]=0x11;++x;}
rst();
while(){
delay();
if(P0==0){
x=0;
while(){
a=Pro_d[x];
if(a==0xff)break;
if(P0!=0){rst();break;}
if(a>127){a&=0x7f;ct=a;while(ct);}
else {++x;wz[a]=Pro_d[x];}
++x;
}
}
else {addr=P0;addr=!addr;addr>>=2;ES=1;REN=0;
while(){
if(P0==0){
ES=0;REN=0;
rst();break;
}
}
}
}
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2002
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -