📄 main.c
字号:
#include <C8051F310.H>
#include <intrins.h>
sbit daclk = P3^4;
sbit da = P2^7;
sbit convn = P2^6;
sbit csn = P2^5;
sbit busyn = P2^4;
sbit led1 = P2^3; //right
sbit led2 = P2^2;
sbit led3 = P2^1;
sbit led4 = P1^7; //left
sbit RL1 = P0^6;
sbit RL2 = P0^5;
sbit sw = P0^7;
sbit key1 = P3^1;
sbit key2 = P3^2;
sbit key3 = P3^3;
code char table[16] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void display(char buf,char num)
{
char i;
led1=led2=led3=led4=1;
if(buf>0x0f)
{
buf = 0x0;
}
i = table[buf];
P1 = i;
switch(num)
{
case 0:
led4 = 0;
break;
case 1:
led3 = 0;
break;
case 2:
led2 = 0;
break;
case 3:
led1 = 0;
break;
default:
led1=led2=led3=led4=1;
break;
}
}
void ad_init()
{
csn = 0;
daclk =0 ;
da = 1;
convn = 1;
busyn = 1;
}
void ad_conv()
{
csn = 0;
daclk = 0;
da = 1;
busyn = 1;
convn = 0;
_nop_;
_nop_;
convn = 1;
}
int read_ad()
{
char i,j;
int tmp=0;
for(i = 0;i<16;i++)
{
tmp=tmp<<1;
daclk = 1;
_nop_;
_nop_;
_nop_;
_nop_;
daclk = 0;
if(da)
{
//tmp=tmp|(0x0001<<i);
tmp=tmp+1;
}
_nop_;
// _nop_;
// _nop_;
// tmp=tmp<<1;
}
// tmp=tmp<<1;
return(tmp);
}
void sys_init()
{
sw = 1;
key1 = key2 = key3 = 1;
led1 = led2 = led3 = led4 = 1;
RL1 = 0;
RL2 = 0;
}
void T2buf(int t,char* buf)
{
*buf = (t>>12)&0x000f;
*(buf+1) = (t>>8)&0x000f;
*(buf+2) = (t>>4)&0x000f;
*(buf+3) = t&0x000f;
}
void delay()
{
char i,j;
for(i=0;i<4;i++)
for(j = 0;j<20;j++);
}
void main()
{
char dbuf[4]={0,1,2,3};
char ledn=0;
char dly =0;
char Flag_Ad = 0;
char Flag_Key1 = 0;
char Flag_Key2 = 0;
char Flag_Key3 = 0;
int Temp=0;
int Tbuf[10];
long Tsum =0;
char Tnum = 0;
char num=0;
char keynum1=0;
char keynum2=0;
char keynum3=0;
XBR1 = 0x40;
PCA0MD = 0X00; //CLOSE WDT
P3MDOUT = 0X10;
P0MDOUT = 0X60;
P2MDOUT = 0X60;
ad_init();
sys_init();
while(1)
{
if(busyn)
{
if(Flag_Ad==0)
{
ad_conv();
Flag_Ad = 1;
}
else
{
//if(++Tnum>=100)
{
Tnum=0;
Temp = read_ad();
Flag_Ad = 0;
}
}
}
//--------------------------------------
if(!key1)
{
if(++keynum1>=1)
{
keynum1 = 0;
Flag_Key1 = 1;
}
}
else if(!key2)
{
if(++keynum2>=1)
{
keynum2 = 0;
Flag_Key2 = 1;
}
}
else if(!key3)
{
if(++keynum3>=1)
{
keynum3 = 0;
Flag_Key3 = 1;
}
}
//----------------------------------------
if(Flag_Key1 && key1)
{
RL1 = 0;
RL2 = 0;
Flag_Key1 = 0;
}
else if(Flag_Key2 && key2)
{
RL1 = 1;
RL2 = 0;
Flag_Key2 = 0;
}
else if(Flag_Key3 && key3)
{
RL1 = 0;
RL2 = 1;
Flag_Key3 = 0;
}
//----------------------------------------
display(dbuf[ledn],ledn);
dly++;
if(dly>=10)
{
dly = 0;
ledn ++;
if(ledn >= 4)
{
ledn = 0;
if(++num>=50)
{
num=0;
T2buf(Temp,dbuf);
}
}
}
delay();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -