?? 4路ad轉換編碼后經過io口輸出程序.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 + -