📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 06/01/2008 12:34:31 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: D:\ElectronicTools\KeilC51\C51\BIN\C51.EXE C_H\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) O
-BJECT(main.obj)
line level source
1 #include "Includes.h"
2
3 unsigned char datTem[2]={0x00,0x00}; //温度值储存 datTem[1]高8位 datTem[0]低8位
4 unsigned char IIC_Adress=0; //AT24C04的内部地址
5 unsigned char key=0; //键盘扫描键值
6 unsigned char uart_receive_date=0; //串口接收数据
7
8 unsigned char code uart_transmit[]={"uart transmit"};
9 unsigned char code spi_transmit[]={"SPI transmit"};
10
11 void send_char_uart( unsigned char date); //串口发送
12 void com_init(); //串口初始化
13 /*********************LCD初始化后显示"hello"****************************************/
14 void hello(void)
15 {
16 1 unsigned char X[15]={"Hello all right"},a=0x80,i;
17 1 WriteCommandLCM(0x01,1);
18 1 for(i=0;i<15;i++,a++){
19 2 display_lcm(X[i],a);
20 2 Delay_Xms(5); Delay_Xms(5);
21 2 }
22 1 for(i=0;i<200;i++){
23 2 Delay_Xms(5); Delay_Xms(5);
24 2 }
25 1 WriteCommandLCM(0x01,1);
26 1 }
27 /***************显示温度************/
28 void temp_view(unsigned char *ddate)
29 {
30 1 unsigned int temp1=0,temp0=0,a,b,c,g,h,i,j,z;
31 1 if((ddate[0]==0xFF)&&(ddate[1]==0xFF)){ ddate[0]=0;ddate[1]=0;}
32 1 z=ddate[1]&0xF0;
33 1 if(z>0) //正负温度符号判断显示
34 1 display_lcm('-',0xc0);
35 1 else
36 1 display_lcm('+',0xc0);
37 1 if(z==0){ //正温度处理
38 2 temp1= ((ddate[1]&0x0F)<<4)+((ddate[0]&0xF0)>>4);
39 2 temp0=(ddate[0]&0x0F)*625;
40 2 }
41 1 else { //负温度处理
42 2 temp1= (((~ddate[1])&0x0F)<<4)+(((~ddate[0]+8)&0xF0)>>4);
43 2 temp0=((~ddate[0]+1)&0x0F)*625;
44 2 }
45 1 a=(temp1%1000)/100;
46 1 display_lcm(a+'0',0xc1);
47 1 b=(temp1%100)/10;
48 1 display_lcm(b+'0',0xc2);
49 1 c=(temp1%10)/1;
50 1 display_lcm(c+'0',0xc3);
51 1
52 1 display_lcm('.',0xc4); // 显示小数点
53 1
54 1 g=(temp0%10000)/1000;
C51 COMPILER V8.02 MAIN 06/01/2008 12:34:31 PAGE 2
55 1 display_lcm(g+'0',0xc5);
56 1 h=(temp0%1000)/100;
57 1 display_lcm(h+'0',0xc6);
58 1 i=(temp0%100)/10;
59 1 display_lcm(i+'0',0xc7);
60 1 j=(temp0%10)/1;
61 1 display_lcm(j+'0',0xc8);
62 1 key=keyscan();
63 1 }
64
65 /****************保存温度'A'***********/
66 void save_temp(void)
67 {
68 1 unsigned char save_string[]={"save temp"};
69 1 unsigned char judge,i=5;
70 1
71 1 diaplay_string(save_string,9);
72 1 if(IIC_Adress>=255) IIC_Adress=0;
73 1 retry: judge=IICWrite(IIC_Adress,datTem,2);
74 1 if(judge==0&&i>0) {i--; goto retry;}
75 1 IIC_Adress+=2;
76 1 key=0;
77 1 key=keyscan();
78 1 WriteCommandLCM(0x01,1);
79 1 }
80 /*********************查看记录串口发送********/
81 void view_uart(void)
82 {
83 1 unsigned char baiwei=0,gewei=0,shiwei=0;
84 1 unsigned int shifen=0,baifen=0,qianfen=0,wanfen=0;
85 1
86 1 baiwei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%1000/100)+48;
87 1 shiwei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%100/10)+48;
88 1 gewei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%10/1)+48;
89 1 shifen=(((datTem[0]&0x0F)*625)%10000/1000)+48;
90 1 baifen=(((datTem[0]&0x0F)*625)%1000/100)+48;
91 1 qianfen=(((datTem[0]&0x0F)*625)%100/10)+48;
92 1 wanfen=(((datTem[0]&0x0F)*625)%10/1)+48;
93 1
94 1 key=keyscan();
95 1 diaplay_string(uart_transmit,13);
96 1 send_char_uart(baiwei);
97 1 send_char_uart(shiwei);
98 1 send_char_uart(gewei);
99 1 send_char_uart('.');
100 1 send_char_uart(shifen);
101 1 send_char_uart(baifen);
102 1 send_char_uart(qianfen);
103 1 send_char_uart(wanfen);
104 1 send_char_uart(' ');
105 1 WriteCommandLCM(0x01,1);
106 1 }
107 /**************查看记录'B'***************/
108 void over_record(void)
109 {
110 1 unsigned char view_string[]={"view records"};
111 1 unsigned int record_adress=0;
112 1 unsigned char j,judge1;
113 1
114 1 do{ diaplay_string(view_string,12);
115 2 if(uart_receive_date!=0) display_lcm(uart_receive_date,0x8f);
116 2 key=0;
C51 COMPILER V8.02 MAIN 06/01/2008 12:34:31 PAGE 3
117 2 key=keyscan();
118 2 retry1: judge1=IICRead(datTem,record_adress,2);
119 2 key=keyscan();
120 2 if(judge1==0&&j>0) {j--; goto retry1;}
121 2 key=keyscan();
122 2 temp_view(datTem);
123 2 key=keyscan();
124 2 if(key=='C'){ key=0;
125 3 if(record_adress>=256) record_adress=0;
126 3 record_adress+=2; }
127 2 if(uart_receive_date=='C'){ uart_receive_date=0;
128 3 if(record_adress>=256) record_adress=0;
129 3 record_adress+=2; }
130 2 key=keyscan();
131 2 if(key=='D'){ key=0;
132 3 if(record_adress<=0) record_adress=256;
133 3 record_adress-=2;
134 3 }
135 2 if(uart_receive_date=='D'){ uart_receive_date=0;
136 3 if(record_adress<=0) record_adress=256;
137 3 record_adress-=2;
138 3 }
139 2 if(key=='G') { key=0;view_uart();}
140 2 if(uart_receive_date=='G'){ uart_receive_date=0;view_uart();}
141 2 key=keyscan();
142 2 if(key=='E'){ WriteCommandLCM(0x01,1); break;}
143 2 if(uart_receive_date=='E') {WriteCommandLCM(0x01,1);break; }
144 2 }while(key!='E');
145 1 }
146 /****************自动保存温度'F'***********/
147 void auto_save_temp(void)
148 {
149 1 unsigned int i;
150 1 unsigned char auto_save_string[]={"auto save temp"};
151 1
152 1 do{
153 2 diaplay_string(auto_save_string,14);
154 2 if(uart_receive_date!=0) display_lcm(uart_receive_date,0x8f);
155 2 key=0;
156 2 for(i=0;i<1000;i++){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -