📄 ad0809.c
字号:
#include <AT89X52.H>
unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
unsigned char dispbuf[8]={10,10,10,10,10,10,10,10};
unsigned char code channel[8]={0x8c,0x9c,0xac,0xbc,0xcc,0xdc,0xec,0xfc};
unsigned char dispcount;
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
//unsigned char channel=0xbc; //1011 1100,ABC=110选择第三通道同时使ST=0,OE=0输出数据线呈高阻状态,EOC=1。
unsigned char d=3;
unsigned char getdata;
long int i;
unsigned char f=0;
void main(void)
{
TMOD=0x11;
TH0=(65536-4000)/256;
TL0=(65536-4000)%256;
TH1=(65535-15535)/256;
TL1=(65536-15535)%256;
TR0=1;
ET0=1;
ET1=1;
TR1=1;
EA=1;
P3=channel[d];
while(1)
{
ST=0;
ST=1;
ST=0;
while(EOC==0);
OE=1;
getdata=P0;
OE=0;
i=getdata*196;
dispbuf[5]=i/10000;
i=i%10000;
dispbuf[6]=i/1000;
i=i%1000;
dispbuf[7]=i/100;
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-6000)/256;
TL0=(65536-6000)%256;
P2=0xff;
P1=dispcode[dispbuf[dispcount]];
P2=dispbitcode[dispcount];
if(dispcount==5)
{
P1=P1|0x80;
}
dispcount++;
if(dispcount==8)
{
dispcount=0;
}
if(f==50)f=0;
else f++;
if(d==7)d=0;
d++;
}
/*void t1() interrupt 3 using 0
{
if(f<50)f=f+1;
f=0;
TH1=(65535-15535)/256;
TL1=(65536-15535)%256;
if(d<7)d=d+1;
d=1;
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -