扩展adc2
stc89c52上測試
#include<AT89X52.H> #include<stdio.h> #define uchar unsigned char #define uint unsigned intsbit st=P2^4;//A/D轉換控制 sbit ale=P2^3;//通道控制 sbit oe=P2^5;//輸出控制 sbit eoc=P3^7;//轉換結束標志 sbit addr_a=P2^0; sbit addr_b=P2^1; sbit addr_c=P2^2;void delay(uchar x) {uint a,b;for(a=x;a>0;a--)for(b=110;b>0;b--); } void init()//初始化printf環境 {EA=1;?? ???? //中斷總允許TMOD=0x21;?? ?//定時器1模式2,自動重裝,為串口提供波特率TH1=0xfd;?? ?//晶振11.0592MHZ,波特率9600?? ??? 。9600 n 8 1TL1=0xfd;TR1=1;?? ???? //開啟定時器1PCON=0X00;?? ?//波特率不倍增SCON=0X50;?? ?//串行口方式1 ,10位異步收發ES=1;?????? //串口中斷允許?? ? }void main() {uchar tmp;init();//初始化printf環境while(1){addr_a=0;?? ?? //輸出地址信號addr_b=0;addr_c=0;ale=1;?? ?? //輸出地址鎖存信號delay(1);ale=0;st=1;?? ?//輸出轉換開始信號st=0;delay(1);//等待轉換結束if(eoc==1)//讀取轉換結束標志,查詢方式{oe=1;?? ?//輸出oe信號,讀取數據delay(1);?? ?tmp=P0;oe=0;delay(1);}ES=0;//串口中斷禁止TI=1; //發送中斷標志? 手動置1printf("tmp=%f\n",(float)(tmp/255.0*5.0));while(!TI);?? ?//如果TI==0則死等TI=0;ES=1;//串口中斷允許} }
#include<AT89X52.H> #include<stdio.h> #define uchar unsigned char #define uint unsigned intsbit st=P2^4;//A/D轉換控制 sbit ale=P2^3;//通道控制 sbit oe=P2^5;//輸出控制 sbit eoc=P3^7;//轉換結束標志 sbit addr_a=P2^0; sbit addr_b=P2^1; sbit addr_c=P2^2;void delay(uchar x) {uint a,b;for(a=x;a>0;a--)for(b=110;b>0;b--); } void init()//初始化printf環境 {EA=1;?? ???? //中斷總允許TMOD=0x21;?? ?//定時器1模式2,自動重裝,為串口提供波特率TH1=0xfd;?? ?//晶振11.0592MHZ,波特率9600?? ??? 。9600 n 8 1TL1=0xfd;TR1=1;?? ???? //開啟定時器1PCON=0X00;?? ?//波特率不倍增SCON=0X50;?? ?//串行口方式1 ,10位異步收發ES=1;?????? //串口中斷允許?? ? }void main() {uchar tmp;init();//初始化printf環境while(1){addr_a=0;?? ?? //輸出地址信號addr_b=0;addr_c=0;ale=1;?? ?? //輸出地址鎖存信號delay(1);ale=0;st=1;?? ?//輸出轉換開始信號st=0;delay(1);//等待轉換結束if(eoc==1)//讀取轉換結束標志,查詢方式{oe=1;?? ?//輸出oe信號,讀取數據delay(1);?? ?tmp=P0;oe=0;delay(1);}ES=0;//串口中斷禁止TI=1; //發送中斷標志? 手動置1printf("tmp=%f\n",(float)(tmp/255.0*5.0));while(!TI);?? ?//如果TI==0則死等TI=0;ES=1;//串口中斷允許} }
轉載于:https://www.cnblogs.com/-song/archive/2011/12/20/3331895.html
總結
- 上一篇: java通用DAO
- 下一篇: [转载]内容首页设计经验