📄 disp2008.c
字号:
#include <C8051F330.h>
#include<absacc.h>
#include<intrins.h>
#include<math.h>
#include<ctype.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit p02=P0^2;
sbit p03=P0^3;
sbit p06=P0^6;
sbit p07=P0^7;
sbit p10=P1^0;//clk
sbit p11=P1^1;//data
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
sbit ACC0=ACC^0;
bit t0_bit;
bit kmode;
bit kup;
bit kdown;
bit kenter;
bit KP_bit;
bit ua_bit;
bit dis;
bit id ;
bit dist;
bit ybao;
bit ua_bit;
bit r=0;
bit dd=0;
xdata uchar dispbuf[6];
xdata uchar subbuf[6];//{0x86};//={1,2,2,9,0,0};
xdata uchar subbuf1[6];
xdata uchar subbuf2[6];
uchar c=0;
uchar code dispTab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uint d=5000;
void delay (uint t) ///1ms
{uint i;
uint j;
uint k;
for (i=t;i--;i>0)
for (j=77;j--;j>0)
for(k=9;k--;k>0)
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
disp()
{ uint i;
uint j;
for (i=0;i<6;i++)
{
_nop_();
c=dispbuf[i];
_nop_();
for(j=0;j<8;j++){
ACC=c;
p11=0;
_nop_();
if(ACC0==0) //led2
{ p10=0;
}
else //led1
{
p10=1;
}
_nop_();
p11=1;
c>>=1;
ACC=c;
c=ACC;
} ////
}///
}
dispPr() //disp id
{ //uint i;
//for(i=0;i<6;i++){
dispbuf[5]=dispTab[subbuf[6]];
dispbuf[4]=dispTab[subbuf[5]];
dispbuf[3]=dispTab[subbuf[4]];
dispbuf[2]=dispTab[subbuf[3]];
dispbuf[1]=dispTab[subbuf[2]];
dispbuf[0]=dispTab[subbuf[1]];
disp();//}
//delay (1) ;
}
void dispsredu()
{
if(dis)
{
d=d-1;
//if(d>=5)
//{d=d-5;}
//if(d>0&&d<5)
//{d=0;}
if(d<=0)
{// break;
dispbuf[5]=dispTab[0];
dispbuf[4]=dispTab[0];
dispbuf[3]=dispTab[0];
dispbuf[2]=dispTab[0];
dispbuf[1]=dispTab[0];
dispbuf[0]=dispTab[0];
disp();
IE = 0x00;
}
if(d>0){
//subbuf[6]=d/100000;
//subbuf[5]=(d-subbuf[6]*100000)/10000;
subbuf[4]=d/1000;
subbuf[3]=(d-subbuf[4]*1000)/100;
subbuf[2]=(d-subbuf[4]*1000-subbuf[3]*100)/10;
subbuf[1]=d-subbuf[4]*1000-subbuf[3]*100-subbuf[2]*10;
dispbuf[5]=dispTab[0];
dispbuf[4]=dispTab[0];
dispbuf[3]=dispTab[subbuf[4]];
dispbuf[2]=dispTab[subbuf[3]];
dispbuf[1]=dispTab[subbuf[2]];
dispbuf[0]=dispTab[subbuf[1]];
d=subbuf[4]*1000+subbuf[3]*100+subbuf[2]*10+subbuf[1];
disp();
}
}
}
void disptime ()
{
dispbuf[5]=dispTab[subbuf[6]];
dispbuf[4]=dispTab[subbuf[5]];
dispbuf[3]=dispTab[subbuf[4]];
dispbuf[2]=dispTab[subbuf[3]];
dispbuf[1]=dispTab[subbuf[2]];
dispbuf[0]=dispTab[subbuf[1]];
disp();
}
void kproce(uchar kvalue)
{if((kvalue&0x04)==0)
kmode=1;
if((kvalue&0x08)==0)
kup=1;
if((kvalue&0x010)==0)
kdown=1;
if((kvalue&0x020)==0)
kenter=1;
}
uchar key()
{
uchar kvalue;
uchar tmp;
P1|=0x3c;
kvalue=P1;
if(kvalue==0xff)
return(0);
delay(10);
kvalue=P1;
kvalue|=0xc3;
if(kvalue==0xff)
return(0);
for(;;)
{
tmp=P1;
if((tmp|0xc3)==0xff)
break;
}
return(kvalue);
}
void timer_init()
{
TMOD=0x21 ; //T1方式2,T0方式1
TCON=0x50;
CKCON=0x00 ; //系统频 /12
IP =0x02 ;
TH1=0x96 ; // 9600HZ
TL1=0x96; //
TH0=0xf7 ; //1ms
TL0=0xe0;
}
void ua_init()
{
SCON0=0x10; //波特率可编程的8位UART
}
main()
{ //int *Point;
// int temp;
// uchar kvalue;
PCA0MD &=0xBF;
XBR0 = 0x01;
XBR1 = 0x40; //enable crossbar
OSCICN = 0x83; // 24.5M
P0MDIN = 0xBE; // 0.0,0.6, analog
P0SKIP = 0X43;
P1SKIP = 0x03; // p1.0 clk,p1.1 data
P0MDOUT = 0x10 ; //P0.4推挽方式(TX)(漏极开路加上拉) 0.3,0.4, //10 enable 0.4
P1MDOUT = 0xFF;
P2MDOUT = 0xFF;
IE = 0x92; //EA,ET0.ES0,
// IP = 0x10;
timer_init();
ua_init();
p16=0;
p17=1;
// id=1;
dis=0;
//dispbuf[0]=0xc0;
//dispbuf[1]=0xc0;
//dispbuf[2]=0xf9;
//dispbuf[3]=0x99;
//TI0=1;
dispbuf[5]=dispTab[0];
dispbuf[4]=dispTab[0];
dispbuf[3]=dispTab[5];
dispbuf[2]=dispTab[0];
dispbuf[1]=dispTab[0];
dispbuf[0]=dispTab[0];
disp();
while(1){
//if(id)//&&dis)
//{
//if(r)
// {
// delay(100);
// p17=0;
// delay(500);
// p17=1;
// delay(100);
// p17=0;
// p17=1;
//delay(500);
/// p17=1;
// }
//dispPr() ;
//delay(100);//dis=0;
//}
if (ybao) //
{
p17=0;
//dispPr() ;
dispsredu() ;
//SBUF0=d;
dis=0;
}
//if(dist){
//delay(100);
//disptime ();
//}
}
}
void t0_isp() interrupt 1
{ dis=1;
TH0=0xf8; //1ms
TL0=0x90;
}
void ua_isp() interrupt 4
{ uchar f ;
if(RI0)
{
RI0=0;
f=SBUF0;
if(f==0x33){
ybao=1;
ES0=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -