📄 iread.lst
字号:
C51 COMPILER V7.06 IREAD 07/31/2006 11:11:55 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE IREAD
OBJECT MODULE PLACED IN IRead.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IRead.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*------------------------------------------------------------------------------
2 ; Copyright (C) 2006 WangChanghong INTEGRATED PRODUCTS, INC.
3 ; All rights reserved.
4 ; MCU:AT89s52 ,晶体频率:12MHz
5 : 作者:汪长洪
6 : 时间:2006年07月31日
7 : 地点:威海
8 ;-----------------------------ZyTemp红外测温仪程序-----------------------------*/
9 #include <reg52.h>
10 #define uchar unsigned char
11 #define uint unsigned int
12 /*----------------------------------工程说明--------------------------------------
13 ; 工程名称: ZyTemp.Uv2
14 ; 功能描述: 测量环境温度和目标温度,并用键盘控制显示温度值,
15 ; 按K1,显示目标温度
16 ; 按K2,显示环境温度
17 ; IDE环境: Keil uVision3 V3.31
18 ; 硬件连接: VCC-------VCC
19 ; P1.0------Data
20 ; P1.2------Clk
21 ; P1.4------ACK
22 ; GND-------GND
23 ;------------------------------------定义接口------------------------------------*/
24 sbit TN_Data = P1^0;
25 sbit TN_Clk = P1^2;
26 sbit TN_ACK = P1^4;
27 sbit key_1 = P2^2;
28 sbit key_2 = P2^3;
29
30 /*-----------------------------------变量列表------------------------------------*/
31 unsigned char code keytab_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,
-0x8e,0x89};//H: 0x89;//L: 0x87;//P: 0x8a;//Q: 0X98;
32 unsigned char code keytab_2[]={0xef,0xdf,0xbf,0x7f};
33 uchar ReadData[5],iShow[5];
34
35 /*-----------------------------------函数列表------------------------------------*/
36 void display_1(uchar i,uchar num); //定位显示单个字符
37 void display_2(void); //定位显示四个字符
38 void TN_ReadData(uchar Flag); //读数据
39 void TN_GetData(void); //计算数据
40
41 /*----------------------------------主程序入口-----------------------------------*/
42 void main()
43 {
44 1 TN_ACK=1;
45 1 while(1)
46 1 {
47 2 if(!key_1)
48 2 {
49 3 TN_ACK=0;
50 3 TN_ReadData(0x4c); //目标温度的第一个字节为0x4c
51 3 }
52 2 else if(!key_2)
53 2 {
54 3 TN_ACK=0;
C51 COMPILER V7.06 IREAD 07/31/2006 11:11:55 PAGE 2
55 3 TN_ReadData(0x66); //环境温度的第一个字节为0x66
56 3 }
57 2
58 2 if((ReadData[0]==0x4c)&&(ReadData[4]==0x0d)) //每帧的最后一个字节为0x0d
59 2 {
60 3 TN_GetData();
61 3 display_2();
62 3 }
63 2 else if((ReadData[0]==0x66)&&(ReadData[4]==0x0d)) //每帧的最后一个字节为0x0d
64 2 {
65 3 TN_GetData();
66 3 display_2();
67 3 }
68 2 }
69 1 }
70
71 /*------------------------------定位显示单个字符-------------------------------*/
72 void display_1(uchar i,uchar num)
73 {
74 1 P0=keytab_1[i];
75 1 P2=keytab_2[num];
76 1 }
77
78 /*------------------------------定位显示四个字符-------------------------------*/
79 void display_2(void)
80 {
81 1 uchar kk;
82 1 display_1(iShow[3]&0x0f,3); //显示十位
83 1 for(kk=200;kk>0;kk--); //延时
84 1 display_1(iShow[2]&0x0f,2); //显示个位
85 1 for(kk=200;kk>0;kk--); //延时
86 1 display_1(iShow[1]&0x0f,1); //显示小数第一位
87 1 for(kk=200;kk>0;kk--); //延时
88 1 display_1(iShow[0]&0x0f,0); //显示小数第二位
89 1 for(kk=200;kk>0;kk--); //延时
90 1 }
91
92 /*------------------------------------读数据-------------------------------------*/
93 void TN_ReadData(uchar Flag)
94 {
95 1 uchar i,j,k;
96 1 bit BitState=0;
97 1 for(k=0;k<7;k++) //每次发七帧
98 1 {
99 2 for(j=0;j<5;j++) //每帧五个字节
100 2 {
101 3 for(i=0;i<8;i++)
102 3 {
103 4 while(TN_Clk);
104 4 BitState= TN_Data;
105 4 ReadData[j]=ReadData[j]<<1;
106 4 ReadData[j]=ReadData[j]|BitState;
107 4 while(!TN_Clk);
108 4 }
109 3 }
110 2
111 2 if(ReadData[0]==Flag) k=8;
112 2 }
113 1 TN_ACK=1;
114 1 }
115
116 /*-----------------------------------计算数据------------------------------------*/
C51 COMPILER V7.06 IREAD 07/31/2006 11:11:55 PAGE 3
117 void TN_GetData(void)
118 {
119 1 int Temp;
120 1 Temp=(ReadData[1]<<8)|ReadData[2];
121 1 Temp = Temp/16 - 273.15;
122 1 Temp=Temp*100; //温度值乘100,以方便计算小数点后两位
123 1 iShow[4]=Temp/10000; //计算温度值的百位数
124 1 iShow[3]=(Temp/1000); //计算温度值的十位数
125 1 iShow[3]=iShow[3]%10;
126 1 iShow[2]=(Temp/100); //计算温度值的个位数
127 1 iShow[2]=iShow[2]%10;
128 1 iShow[1]=(Temp/10); //计算温度值的小数点后第一位数
129 1 iShow[1]=iShow[1]%10;
130 1 iShow[0]=(Temp); //计算温度值的小数点后第二位数
131 1 iShow[0]=iShow[0]%10;
132 1 }
133
134
135
136
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 335 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 2
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 + -