📄 v.lst
字号:
C51 COMPILER V7.50 V 04/15/2009 17:14:17 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE V
OBJECT MODULE PLACED IN v.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE v.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include"absacc.h"
3 #define lcd_1602_DW XBYTE[0xfdff]
4 #define lcd_1602_CW XBYTE[0xfcff]
5 #define lcd_1602_CR XBYTE[0xfeff]
6 #define lcd_1602_DR XBYTE[0xffff]
7 #define lcd_line_1 0x00
8 #define lcd_line_2 0x40
9 #define LCD_ClEAR_SCREEN 0x01 //清屏
10 #define LCD_AC_UP 0x06 //地址计数器自动+1
11 #define LCD_SET_7 0x38 //8位接口,双行显示,5*7字符
12 #define LCD_SHOW 0x0c //显示开
13 #define uchar unsigned char
14 #define uint unsigned int
15 sbit key0 = P3^3;
16 sbit key1 = P3^2;
17 sbit SD0 = P1^0;
18 sbit CS = P1^2;
19 sbit CLK = P1^3;
20 sbit DIN = P1^1;
21 sbit d = P3^4;
22 unsigned long temperature;
23 unsigned long tmp;//数据类型要注意
24
25 void WHILE_BUSY(void)
26 {
27 1 while((bit)(lcd_1602_CR & 0x80)) ;
28 1 }
29 void delay(uint x)
30 {
31 1 while(--x);
32 1 }
33 //通过LCD1602内部ROM显示字符
34 void print0(uchar line,uchar column,uchar n)
35 {
36 1 WHILE_BUSY();
37 1 switch(line)
38 1 {
39 2 case 1:
40 2 lcd_1602_CW = 0x80 + column;//光标定位
41 2 delay(10);
42 2 lcd_1602_DW =0x30+n;
43 2 break;
44 2 case 2:
45 2 lcd_1602_CW = 0xc0 + column;//光标定位
46 2 delay(10);
47 2 lcd_1602_DW =0x30+n;//指针加一,光标前移
48 2 break;
49 2 default: break;
50 2 }
51 1 }
52 void Print(uchar *str,uchar addr)
53 {
54 1
55 1 WHILE_BUSY();
C51 COMPILER V7.50 V 04/15/2009 17:14:17 PAGE 2
56 1 lcd_1602_CW = 0x80|addr;
57 1 while(*str!='\0')
58 1 {
59 2 WHILE_BUSY();
60 2 lcd_1602_DW = *str;//直接针对外部地址些 movx指令
61 2 str++;
62 2 delay(50);
63 2 }
64 1 }
65 void lcd_1602_Init(void)
66 {
67 1 WHILE_BUSY();
68 1 lcd_1602_CW = LCD_SET_7;
69 1 WHILE_BUSY();
70 1 lcd_1602_CW = LCD_ClEAR_SCREEN;
71 1 WHILE_BUSY();
72 1 lcd_1602_CW = LCD_AC_UP;
73 1 WHILE_BUSY();
74 1 lcd_1602_CW = LCD_SHOW;
75 1 }
76
77
78 uint TLC_1543_addr(uchar addr)
79 {
80 1
81 1 uint date_out=0;
82 1 uchar k;
83 1 uchar i;
84 1 uchar j;
85 1 CLK=0;
86 1 CS=0;
87 1 for (i=0;i<4;i++)
88 1 {
89 2 DIN=(bit)(addr&0x08);CLK=1;CLK=0;
90 2 addr<<=1;
91 2 }
92 1 for (j=0;j<6;j++) //填充6 个CLOCK
93 1 {
94 2 CLK=1;CLK=0;
95 2 }
96 1 CS=1;
97 1 delay(5);
98 1 CS=0; //等待AD 转换
99 1 delay(5);
100 1 for(k=0;k<10;k++)
101 1 {
102 2 SD0 = 1;
103 2 CLK = 1;
104 2 date_out<<=1;
105 2 if(SD0) date_out += 1;
106 2 CLK = 0;
107 2 }
108 1 return(date_out);
109 1
110 1 }
111 diaplay_TLC_1543(void)
112 {
113 1 unsigned long tmp;//数据类型要注意
114 1 Print("made by ali",lcd_line_1+3);
115 1 Print("voltage",lcd_line_2);
116 1 print0(2,7, 10);//":"
117 1
C51 COMPILER V7.50 V 04/15/2009 17:14:17 PAGE 3
118 1 while(1)
119 1 {
120 2
121 2 Print("made by ali",lcd_line_1+3);
122 2 Print("voltage",lcd_line_2);
123 2 print0(2,7, 10);//":"
124 2 tmp = TLC_1543_addr(0x00);
125 2 tmp=tmp*50000/1024;
126 2 print0(2,8, tmp/10000);
127 2 print0(2,10,tmp%10000/1000);
128 2 print0(2,11,tmp%10000%1000/100);
129 2 print0(2,12,tmp%1000%100/10);
130 2 print0(2,13,tmp%10);
131 2 Print(".",lcd_line_2+9);
132 2 }
133 1 }
134
135 void main()
136 {
137 1 lcd_1602_Init();
138 1 diaplay_TLC_1543();
139 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 526 ----
CONSTANT SIZE = 22 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -