📄 test.lst
字号:
C51 COMPILER V7.02b TEST 02/02/2004 17:04:14 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE test.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2
3 code unsigned char* ver = "00000004";
4
5 sbit CS0 = P3^0;
6 sbit CS1 = P1^6;
7 sbit CS2 = P1^5;
8 sbit CS3 = P3^1;
9 sbit CS4 = P1^3;
10 sbit CS5 = P3^7;
11
12 //#define DATA_PORT P1
13
14 void out_cs_mask(bit n){
15 1 CS0 = n;
16 1 CS1 = n;
17 1 CS2 = n;
18 1 CS3 = n;
19 1 CS4 = n;
20 1 CS5 = n;
21 1 }
22
23 void out_cs(unsigned char cs, bit n){
24 1 switch (cs){
25 2 case 0: CS0 = n; break;
26 2 case 1: CS1 = n; break;
27 2 case 2: CS2 = n; break;
28 2 case 3: CS3 = n; break;
29 2 case 4: CS4 = n; break;
30 2 case 5: CS5 = n; break;
31 2 }
32 1 }
33
34 sbit CLK = P1^7;
35 sbit DATA = P1^4;
36 void spiout(unsigned char byte){
37 1 unsigned char i;
38 1 CLK = 0;
39 1 for(i=0; i<8; i++){
40 2 if(byte & 1)
41 2 DATA = 1;
42 2 else
43 2 DATA = 0;
44 2 CLK = 1;
45 2 CLK = 0;
46 2 byte >>= 1;
47 2 }
48 1 }
49
50 #define a +1
51 #define b +2
52 #define c +4
53 #define d +8
54 #define e +16
55 #define f +32
C51 COMPILER V7.02b TEST 02/02/2004 17:04:14 PAGE 2
56 #define g +64
57 //code unsigned char font[16] = "\x6f\x41\x3b\x6b" "\x4d\x76\x77\xe4" "\xf7\xf6\x00\x00" "\x00\x00\x00\x00
-";
58 code unsigned char font[16] = {
59 a b c e f g, //0
60 a g, //1
61 a b d e f, //2
62 b a d g f, //3
63 a c d g, //4
64 b c d f g, //5
65 b c d e f g, //6
66 a b g, //7
67 a b c d e f g, //8
68 a b c d f g, //9
69 a b c d e g, //A
70 c d e f g, //B
71 b c e f, //C
72 a d e f g, //D
73 b c d e f, //E
74 b c d e, //F
75 };
76 #undef a
77 #undef b
78 #undef c
79 #undef d
80 #undef e
81 #undef f
82 #undef g
83
84 #define DISP_WIDTH 6
85 unsigned char disp_buff[DISP_WIDTH];
86
87 unsigned char dot_pos = DISP_WIDTH;
88 unsigned char disp_cs = 0;
89
90 #define KEY_SET 4 //键值1 2 4 8 16...
91 #define KEY_FUNC 8
92 sbit OUT_PIN = P3^5;
93 unsigned char key_reg = 0x00,tmp_key_reg = 0x00;
94 unsigned char key_cs = 0;
95 sbit KEY_LINE = P1^2;
96
97 bit disp_on = 1;
98 void out_disp_buff(){
99 1 unsigned char disp_data;
100 1
101 1 out_cs_mask(1);
102 1
103 1 //键盘扫描
104 1 if(key_cs == 0)
105 1 tmp_key_reg = 0;
106 1 disp_data = 1<<key_cs;
107 1 spiout(disp_data);
108 1 if(KEY_LINE)
109 1 tmp_key_reg |= disp_data;
110 1 else
111 1 tmp_key_reg &= ~disp_data;
112 1 key_cs++;
113 1 key_cs &= 7;
114 1 if(key_cs == 0){
115 2 key_reg = tmp_key_reg;
116 2 disp_buff[5] = key_reg;
C51 COMPILER V7.02b TEST 02/02/2004 17:04:14 PAGE 3
117 2 }
118 1
119 1 if (!disp_on){
120 2 out_cs_mask(1);
121 2 return;
122 2 }
123 1
124 1 disp_data = disp_buff[disp_cs];
125 1 if (dot_pos == disp_cs)
126 1 disp_data |= 0x80;
127 1
128 1
129 1 if ((disp_cs & 1) == 1){
130 2 unsigned char d;
131 2 d = (disp_data & 0x80) >> 3;
132 2 d |= (disp_data & 0x40) >> 1;
133 2 d |= (disp_data & 0x20) << 1;
134 2 d |= (disp_data & 0x10) << 3;
135 2 d |= (disp_data & 0x8) >> 3;
136 2 d |= (disp_data & 0x4) >> 1;
137 2 d |= (disp_data & 0x2) << 1;
138 2 d |= (disp_data & 0x1) << 3;
139 2 disp_data = d;
140 2 }
141 1
142 1 //DATA_PORT = ~disp_data;
143 1 spiout(disp_data);//~disp_data表示共阳驱动,disp_data是共阴驱动
144 1 out_cs(disp_cs, 0);
145 1 disp_cs++;
146 1 if (disp_cs == DISP_WIDTH)
147 1 disp_cs = 0;
148 1 }
149
150 unsigned int disp_flash = 0;
151 bit sys_wake_up = 0;
152
153 unsigned int time;
154 unsigned int timer_on;
155 unsigned int timer_long;
156 unsigned int time_ms= 0;
157 unsigned char jiffies = 0;
158 bit timer_isr_stop = 0;
159
160 void timer_isr(void) interrupt 1 using 1{
161 1 jiffies++;
162 1 if (jiffies < 10)
163 1 return;
164 1 jiffies = 0;
165 1 sys_wake_up = 1;
166 1 if(timer_isr_stop)
167 1 return;
168 1 time_ms++;
169 1 if(time_ms == 1000)//同步闪烁与字符跳变
170 1 disp_flash = 0;
171 1 // if (time_ms == 60000){//1000 == 1 Sec
172 1 if (time_ms == 1000){//1000 == 1 Sec
173 2 time_ms = 0;
174 2 time++;
175 2 if(time == 1440)
176 2 time = 0;
177 2 }
178 1 }
C51 COMPILER V7.02b TEST 02/02/2004 17:04:14 PAGE 4
179
180 void timer_init(void){
181 1 timer_on = 300;
182 1 timer_long = 30;
183 1 time = 0;
184 1 TMOD=0x02;
185 1 // TH0=TL0=0x9b;//12M
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -