📄 ad.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define _rrca_() CY = ACC & 0x01 //产生RRC A指令
#define _rlca_() CY = ACC & 0x80 //产生RLC A指令
sbit bADcs=P1^4;
sbit bADcl=P1^5;
sbit bADda=P1^6;
sbit flag=P1^7;
/*bit choose=0;*/
unsigned char data1;
unsigned char count;
unsigned char cycle;
void initcom()
{
SCON = 0x50 ;
TMOD |= 0x20 ;
PCON |= 0x80 ;
TH1 = 0xF3;
TL1=0xF3;
IE |= 0x90 ; //4800
TR1 = 1 ;
}
void ad()
{
flag=1;
count = 0;
bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.
bADcl = 0;
bADda = 1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平.
bADcl = 1;
bADcl = 0;//pulse 1 down
// bADda = 1;
bADcl = 1; bADcl = 0;//pulse 2 down
/*if(choose == 0)*/
bADda = 0;
/*else
bADda = 1; */
bADcl = 1; bADcl = 0;//pulse 3 down
for(cycle = 8; cycle > 0; cycle-- )
{
bADda = 1;
bADcl = 1; bADcl = 0;//pulse
CY = bADda;
_rlca_(); //RRC A
}
data1= ACC;
for(cycle = 8; cycle > 0; cycle-- )
{
bADda = 1;
bADcl = 1; bADcl = 0;//pulse
CY = bADda;
_rrca_(); //RLC A
}
if( ACC == data1 )
{
flag= 0;
}
bADcs = 1;//当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束
}
void send()
{
SBUF=data1;
while(!TI);
TI=0;
}
main()
{
initcom();
while(1){
ad();
send();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -