?? adc0832.lst
字號:
C51 COMPILER V7.06 ADC0832 08/25/2008 11:59:19 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 char code DIS[]={0xfd,0xfb,0xf7}; //定義數碼管位碼
15 unsigned char code Datatab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//7段數碼管段碼表
16 data unsigned char Display[3];//定義臨時存放數碼管數值
17
18 void Init_Timer1(void)
19 {
20 1 TMOD |= 0x10;
21 1 TH1=0xff; /* Init value */
22 1 TL1=0x00;
23 1 //PT1=1; /* 優先級 */
24 1 EA=1; /* interupt enable */
25 1 ET1=1; /* enable timer1 interrupt */
26 1 TR1=1;
27 1 }
28
29 unsigned char ReadADC(unsigned char channel)
30 {
31 1 unsigned char i,j;
32 1 unsigned char Temp=0;
33 1 channel <<=3;
34 1 channel |=3;
35 1 CS =0; //按照資料進行時序操作
36 1 for(i=0;i<3;i++) //輸入指令,包含通道選擇
37 1 {
38 2 CLK=0;
39 2 _nop_();
40 2 DI=channel;
41 2 channel>>=1;
42 2 _nop_();
43 2 CLK=1;
44 2 DI=0;
45 2 }
46 1 CLK=0;
47 1 _nop_();
48 1 CLK=1;
49 1 for(j=0;j<8;j++) //處理讀入8位數據
50 1 {
51 2 CLK=0;
52 2 _nop_();
53 2 Temp=(Temp<<1)|DO;
54 2 _nop_();
55 2 CLK=1;
C51 COMPILER V7.06 ADC0832 08/25/2008 11:59:19 PAGE 2
56 2 }
57 1 CS=1;
58 1 return(Temp); //返回轉換值
59 1
60 1 }
61
62
63 void Timer1_isr(void) interrupt 3 using 1//定時器1執行數碼管動態掃描
64 {
65 1
66 1 static unsigned char count,j;
67 1 TH1=0xfb; /* Init value */
68 1 TL1=0x00;
69 1 j++;
70 1 if(j==200) {j=0;ADFlag=1;}
71 1 P0=Display[count];
72 1 P2=DIS[count];
73 1 count++;
74 1 if(count==3)
75 1 count=0;
76 1
77 1
78 1 }
79
80 main()
81 {
82 1 unsigned char ADtemp;//定義中間變量
83 1 // unsigned char temp;
84 1 Init_Timer1();
85 1
86 1
87 1 while(1)
88 1 {
89 2 if(ADFlag) //定時采集輸入模擬量
90 2 {
91 3
92 3 ADFlag=0;
93 3 ADtemp=ReadADC(0);
94 3 Display[0]=Datatab[((ADtemp-5)/50)]&0x7f;//處理電壓顯示
95 3 Display[1]=Datatab[((ADtemp-5)%50)/10];
96 3 Display[2]=Datatab[((ADtemp-5)%50)%10];
97 3 }
98 2 }
99 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 205 ----
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 + -