📄 adc0832.lst
字号:
C51 COMPILER V7.06 ADC0832 03/25/2008 14:08:22 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ADC0832
OBJECT MODULE PLACED IN adc0832.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\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 sbit CS=P1^6;//定义数模转换器硬件对应引脚
7 sbit CLK=P1^3;
8 sbit DO=P1^4;
9 sbit DI=P1^5;
10
11 bit ADFlag;
12
13 unsigned char code DIS[]={0xf7,0xfb,0xfd}; //定义数码管位码
14 unsigned char code Datatab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//7段数码管段码表
15 data unsigned char Display[3];//定义临时存放数码管数值
16
17 void Init_Timer1(void)
18 {
19 1 TMOD |= 0x10;
20 1 TH1=0xff; /* Init value */
21 1 TL1=0x00;
22 1 //PT1=1; /* 优先级 */
23 1 EA=1; /* interupt enable */
24 1 ET1=1; /* enable timer1 interrupt */
25 1 TR1=1;
26 1 }
27
28 unsigned char ReadADC(unsigned char channel)
29 {
30 1 unsigned char i,j;
31 1 unsigned char Temp=0;
32 1 channel=channel+5;
33 1 CS =0; //按照资料进行时序操作
34 1 for(i=0;i<3;i++) //输入指令,包含通道选择
35 1 {
36 2 CLK=0;
37 2 _nop_();
38 2 DI=channel;
39 2 channel>>=1;
40 2 _nop_();
41 2 CLK=1;
42 2 }
43 1 CLK=0;
44 1 _nop_();
45 1 CLK=1;
46 1 for(j=0;j<8;j++) //处理读入8位数据
47 1 {
48 2 CLK=0;
49 2 _nop_();
50 2 Temp=(Temp<<1)|DO;
51 2 _nop_();
52 2 CLK=1;
53 2 }
54 1 CS=1;
55 1 return(Temp); //返回转换值
C51 COMPILER V7.06 ADC0832 03/25/2008 14:08:22 PAGE 2
56 1
57 1 }
58
59
60 void Timer1_isr(void) interrupt 3 using 1//定时器1执行数码管动态扫描
61 {
62 1
63 1 static unsigned char count,j;
64 1 TH1=0xfb; /* Init value */
65 1 TL1=0x00;
66 1 j++;
67 1 if(j==200) {j=0;ADFlag=1;}
68 1 P0=Display[count];
69 1 P2=DIS[count];
70 1 count++;
71 1 if(count==3)
72 1 count=0;
73 1
74 1
75 1 }
76
77 main()
78 {
79 1 unsigned char ADtemp;//定义中间变量
80 1 // unsigned char temp;
81 1 Init_Timer1();
82 1
83 1
84 1 while(1)
85 1 {
86 2 if(ADFlag) //定时采集输入模拟量
87 2 {
88 3
89 3 ADFlag=0;
90 3 ADtemp=ReadADC(2);
91 3 Display[0]=Datatab[((ADtemp-5)/50)]&0x7f;//处理电压显示
92 3 Display[1]=Datatab[((ADtemp-5)%50)/10];
93 3 Display[2]=Datatab[((ADtemp-5)%50)%10];
94 3 }
95 2 }
96 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 197 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
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 + -