C51 COMPILER V7.06 AD 04/10/2020 22:36:38 PAGE 1 C51 COMPILER V7.06, COMPILATION OF MODULE AD OBJECT MODULE PLACED IN ad.OBJ COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ad.c BROWSE DEBUG OBJECTEXTEND stmt level source 1 //拧动电位器,会在数码管的前三位显示0-255之间的数值。这就是把模拟电压转换成数字信号。 2 //有些拧动电位器后数码管数可能不会动态变化,请用户按下实验板上的S22复位按键可更新数据 3 //这种显象产生的原因是和AD芯片自身的一些特性有关。 4 #include 5 #include 6 #define uint unsigned int 7 #define uchar unsigned char 8 sbit adrd=P3^7; //IO口定义 9 sbit adwr=P3^6; 10 sbit diola=P2^5; 11 sbit dula=P2^6; 12 sbit wela=P2^7; 13 unsigned char j,k,adval; 14 15 void delay(unsigned char i) //延时程序 16 { 17 1 for(j=i;j>0;j--) 18 1 for(k=125;k>0;k--); 19 1 } 20 21 22 void main() // 主程序 23 { 24 1 25 1 while(1) 26 1 { 27 2 wela=1; 28 2 P0=0; //选通ADCS 29 2 adwr=0; //AD写入 30 2 _nop_(); 31 2 adwr=1; 32 2 P0=0xff; //关闭ADCS 33 2 delay(10); 34 2 wela=0; //关闭有AD片选信号锁存器的锁存端以防止在操作数码管时使AD的片选发生变化 35 2 delay(40); //需要注意的是ADC0804在写和读之间的时间间隔要足够长否则无法读出数据 36 2 wela=1; //重新打开有AD片选信号锁存器的锁存端 37 2 P1=0xff; //读取P1口之前先给其写全1 38 2 P0=0; //选通ADCS 39 2 adrd=0; //AD读使能 40 2 adval=P1; //AD数据读取赋给P1口 41 2 adrd=1; 42 2 P0=0xff; //关闭ADCS 43 2 adwr=0; 44 2 P1=adval; //同时把AD的值送八个发光二极显示 45 2 } 46 1 } MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 70 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 3 ---- IDATA SIZE = ---- ---- C51 COMPILER V7.06 AD 04/10/2020 22:36:38 PAGE 2 BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)