📄 adc0832.lst
字号:
C51 COMPILER V7.06 ADC0832 09/04/2008 09:36:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ADC0832
OBJECT MODULE PLACED IN ADC0832.OBJ
COMPILER INVOKED BY: d:\Keil2\C51\BIN\C51.EXE ADC0832.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>//包含相应的头文件
2
3 #include<stdio.h>
4 #include<intrins.h>
5
6
7 sbit CS=P3^4;//定义数模转换器硬件对应引脚
8 sbit CLK=P3^5;
9 sbit DO=P3^6;
10 sbit DI=P3^7;
11
12 bit ADFlag;
13
14 unsigned int ADtemp;//定义中间变量
15
16 extern char data TimeNum[];
17 unsigned char code DIS[]={0xfd,0xfb,0xf7}; //定义数码管位码
18 unsigned char code Datatab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//7段数码管段码表
19 data unsigned char Display[3];//定义临时存放数码管数值
20
21 void disp (void);
22 void DelayMs(unsigned char ms);//delay Ms
23 void InitLcd();
24
25 void Init_Timer1(void)
26 {
27 1 TMOD |= 0x10;
28 1 TH1=0xff; /* Init value */
29 1 TL1=0x00;
30 1 //PT1=1; /* 优先级 */
31 1 EA=1; /* interupt enable */
32 1 ET1=1; /* enable timer1 interrupt */
33 1 TR1=1;
34 1 }
35
36 unsigned char ReadADC(unsigned char channel)
37 {
38 1 unsigned char i,j;
39 1 unsigned char Temp=0;
40 1 channel <<=3;
41 1 channel |=3;
42 1 CS =0; //按照资料进行时序操作
43 1 for(i=0;i<3;i++) //输入指令,包含通道选择
44 1 {
45 2 CLK=0;
46 2 _nop_();
47 2 DI=channel;
48 2 channel>>=1;
49 2 _nop_();
50 2 CLK=1;
51 2 DI=0;
52 2 }
53 1 CLK=0;
54 1 _nop_();
55 1 CLK=1;
C51 COMPILER V7.06 ADC0832 09/04/2008 09:36:16 PAGE 2
56 1 for(j=0;j<8;j++) //处理读入8位数据
57 1 {
58 2 CLK=0;
59 2 _nop_();
60 2 Temp=(Temp<<1)|DO;
61 2 _nop_();
62 2 CLK=1;
63 2 }
64 1 CS=1;
65 1 return(Temp); //返回转换值
66 1
67 1 }
68
69
70 void Timer1_isr(void) interrupt 3 using 1//定时器1执行数码管动态扫描
71 {
72 1
73 1 static unsigned char j;
74 1 TH1=0xfb; /* Init value */
75 1 TL1=0x00;
76 1 j++;
77 1 if(j==200) {j=0;ADFlag=1;}
78 1
79 1 }
80
81 main()
82 {
83 1 // unsigned char temp;
84 1 Init_Timer1();
85 1 InitLcd();//
86 1 DelayMs(15);
87 1
88 1
89 1 while(1)
90 1 {
91 2 if(ADFlag) //定时采集输入模拟量
92 2 {
93 3
94 3 ADFlag=0;
95 3 ADtemp=ReadADC(0);
96 3 ADtemp *=20;
97 3 //TimeNum[12]=Datatab[((ADtemp-5)/50)];//处理电压显示
98 3 //TimeNum[14]=Datatab[((ADtemp-5)%50)/10];
99 3 //TimeNum[15]=Datatab[((ADtemp-5)%50)%10];
100 3 disp ();
101 3 }
102 2 }
103 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 156 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -