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

📄 4路ad转换编码后经过io口输出程序.txt

📁 4路AD转换后将结果存入寄存器
💻 TXT
字号:
//#include<reg51.h>
#include<STC12C5410AD.h>
#define uchar unsigned char
uchar ARRY1[4];

//定义寄存器
//sfr P1M0=0X91;
//sfr P1M1=0X92;
//sfr ADC_CONTR=0XC5;
//sfr ADC_DATA=0XC6;
//sfr ADC_LOW2=0XBE;
sbit P1_4=P1^4;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;
sbit P3_7=P3^7;


void main(void)
{ 
  uchar i,j,k; 
  int result;
  TMOD=0X01;
  TR0=1;
  while(1)
  { 
    ADC_CONTR=0X80;//开ADC电源
    TH0=(65536-240)/256;//延时720us
	TL0=(65536-240)%256;
	do{} while(!TF0);
	TF0=0;
    P1M0=0X01;
    P1M1=0X01;//设置p1^0--p1^3为AD输入口,p1^4-p1^7为I/O口
    ARRY1[4]=0X80,0X81,0X82,0X83;//存放控制字
    
 
    for(i=0;i<4;i++)
       {
           ADC_CONTR=ARRY1[i];
           TH0=(65536-240)/256;//延时720us
		   TL0=(65536-240)%256;
		   do{} while(!TF0);
		   TF0=0;
           ADC_DATA=0;
           ADC_LOW2=0;
           ADC_CONTR=ARRY1[i]|0x08;//开始转换
           while(ADC_CONTR&00010000)//判断转换是否完成,若完成即把结果取出赋给result
              {
               
				 ADC_CONTR=ADC_CONTR&0XEF;//FLAG位软件清零
                 
                 result=(0X03&i)*1024|ADC_DATA*4|(0X03&ADC_LOW2);
                 P3_7=0;
                 TH0=(65536-1600)/256;//每隔5ms发送一次
				 TL0=(65536-1600)%256;
				 do{} while(!TF0);
				 TF0=0;
                 for(k=0;k<2;k++)//连续发送2组相同编码
				 {  
				    int v;
					v=0X8000;
                    P3_7=1;
				    TH0=(65536-320)/256;//同步码,960us高电平
				    TL0=(65536-320)%256;
				    do{} while(!TF0);
				    P3_7=0;
					TF0=0;
					TH0=(65536-960)/256;//2880us低电平
				    TL0=(65536-960)%256;
				    do{} while(!TF0);
					TF0=0;
                    for(j=0;j<12;j++)//软件编码
                       {
                          if(result&v!=0)//若对应位为高电平
						  {
						     P3_7=1;
							 TH0=(65536-240)/256;//输出720us高电平
				             TL0=(65536-240)%256;
				             do{} while(!TF0);
							 TF0=0;
							 P3_7=0;
							 TH0=(65536-80)/256;//输出240us低电平
				             TL0=(65536-80)%256;
				             do{} while(!TF0);
							 TF0=0;
							 P3_7=1;
							 TH0=(65536-240)/256;//输出720us高电平
				             TL0=(65536-240)%256;
				             do{} while(!TF0);
							 TF0=0;
							 P3_7=0;
							 TH0=(65536-80)/256;//输出240us低电平
				             TL0=(65536-80)%256;
				             do{} while(!TF0);
							 TF0=0;
					    	}
                           else if(result&v==0)//若对应位为0
						   {
                             P3_7=1;
							 TH0=(65536-80)/256;//输出240us高电平
				             TL0=(65536-80)%256;
				             do{} while(!TF0);
							 TF0=0;
							 P3_7=0;
							 TH0=(65536-240)/256;//输出720us低电平
				             TL0=(65536-240)%256;
				             do{} while(!TF0);
							 TF0=0;
							 P3_7=1;
							 TH0=(65536-80)/256;//输出240us高电平
				             TL0=(65536-80)%256;
				             do{} while(!TF0);
							 TF0=0;
							 P3_7=0;
							 TH0=(65536-240)/256;//输出720us低电平
				             TL0=(65536-240)%256;
				             do{} while(!TF0);
							 TF0=0;
						   }
						   v=v>>1;//右移一位
                        }
					 }
               }
           
          
           P1M0=P1M0*2;//左移一位,打开下一通道转换
           P1M0=P1M1*2;
           
         }
    } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -