📄 adconv._c
字号:
#include <iom16v.h>
#define CS 0
#define CLK 1
#define DIO 2
#define KEY 3
void SETB(unsigned char k)
{//这里的PORTB根据自己的程序修改
PORTB=PORTB|(1<<k);
}
void CLRS(unsigned char l)
{//这里的PORTB根据自己的程序修改
PORTB=PORTB&~(1<<l);
}
//初始化显示时Data=0xA4,position=0xFF
//Data为显示数据,position为数据显示位置
//Data为10进制或16进制数,只能一位一位发送
//position为1-8的数字
void Display(unsigned char Data,unsigned char position)
{
unsigned char DataPos=~0;
unsigned char num=~0;
unsigned char wait=~0;
unsigned char datanum=~0;
unsigned int transdata=~0;
unsigned int iToDIO=~0;
unsigned char cToDIO=~0;
DDRB=0xFF;
SETB(KEY);
SETB(CS);
SETB(DIO);
datanum=2;
CLRS(CS);
if(Data!=0xA4)
{
DataPos=0xC8+position-1;
transdata=DataPos;
transdata=transdata<<8;
transdata=transdata+Data;
while(datanum--)
{
wait=25;
while(wait--)
{;}
for(num=0;num<8;num++)
{
iToDIO=transdata&0x8000;
transdata=transdata<<1;
if(iToDIO==0x0000)
{
CLRS(DIO);
}
else
{
SETB(DIO);
}
SETB(CLK);
wait=4;
while(wait--)
{;}
CLRS(CLK);
wait=4;
while(wait--)
{;}
}
}
}
else
{
wait=25;
while(wait--);
for(num=0;num<8;num++)
{
cToDIO=Data&0x80;
Data=Data<<1;
if(cToDIO==0x00)
{
CLRS(DIO);
}
else
{
SETB(DIO);
}
SETB(CLK);
wait=4;
while(wait--);
CLRS(CLK);
wait=4;
while(wait--);
}
}
SETB(CS);
}
unsigned int ADC_Conv(void)
{
unsigned int temp1,temp2;
temp1=(unsigned int)ADCL;
temp2=(unsigned int)ADCH;
temp2=(temp2<<8)+temp1;
return temp2;
}
unsigned int count,i;
unsigned int j;
void main()
{
ADMUX=0x00;
ADCSR=0xE6;
Display(0xA4,0xff);
while(1)
{
count=20000;
while(count--);
i=ADC_Conv();
for(j=0;j<4;j++)
{
Display(i%10,j+1);
if(i!=0)
{
i=i/10;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -