⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.c

📁 单片机控制ADC0832实现电压的数字显示
💻 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 + -