📄 视觉暂留.c
字号:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar num,a,b,c,temp_th=0x4c,temp_tl=0x00;
sbit den=P2^4;
sbit D0=P0^0;
sbit shien=P2^2;
sbit geen=P2^3;
uint code table[]={
19456,23645,27136,30090,32622,34816,36736,38430,39936,41283,
42496,43593,44591,45501,46336,47104,47813,48469,49079,49646,
50176,50671,51136,51572,51983,52370,52736,53082,53410,53721,
54016,54297,54565,54820,55063,55296,55519,55732,55936,56132,
56320,56501,56674,56842,57003,57158,57307,57452,57591,57726,
57856,57982,58104,58222,58336,58447,58554,58658,58760,58858,
58953,59046,59136,59224,59309,59392,59473,59552,59628,59703,
59776,59847,59916,59984,60050,60115,60178,60239,60300,60358,
60416,60472,60527,60581,60634,60685,60736,60785,60834,60881};
uint code table1[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
void delay(uint z) //延时程序
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
P2=0;
den=1;
D0=0;
a=0;
b=0;
c=0;
num=0;
TMOD=0x11;
TH0=0x35;
TL0=0xc1;
TH1=0x4c;
TL1=0x00;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void keyscan()
{
uchar n;
b=num+10;
P3=0xfb ;
n=P3;
if(n==0x7b)
{
delay(125);
n=P3;
if(n==0x7b)
{
TR0=!TR0;
TR1=!TR1;
den=!den;
while(!den)
{
shien=!shien;
P0=table1[b/10];
delay(1);
shien=!shien;
geen=!geen;
P0=table1[b%10];
delay(1);
geen=!geen;
P3=0xfb ;
n=P3;
n&=0xf0;
if(n!=0xf0)
{
delay(125);
n=P3;
if(n==0x7b)
{
TR0=!TR0;
TR1=!TR1;
den=!den;
P0=0xfe;
}
}
}
}
}
}
void main()
{
init();
while(1) keyscan();
}
void exter0() interrupt 1 using 1
{
TH0=0x35;
TL0=0xc1;
a++;
if(a==6)
{
a=0;
num++;
if(num==90) num=0;
temp_th=table[num]/256;
temp_tl=table[num]%256;
}
}
void exter1() interrupt 3 using 2
{
TH1=temp_th;
TL1=temp_tl;
D0=!D0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -