📄 test.lst
字号:
C51 COMPILER V7.02b TEST 01/25/2004 00:49:19 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 01/25/2004 00:49:19 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 64
92 sbit OUT_PIN = P3^5;
93 unsigned char key_reg = 0x00;
94 unsigned char key_cs = 0;
95 sbit KEY_LINE = P1^2;
96
97 void out_disp_buff(){
98 1 unsigned char disp_data;
99 1
100 1 out_cs_mask(1);
101 1
102 1 //键盘扫描
103 1 key_reg = 0;
104 1 disp_data = 1<<key_cs;
105 1 spiout(disp_data);
106 1 if(KEY_LINE)
107 1 key_reg |= disp_data;
108 1 else
109 1 key_reg &= ~disp_data;
110 1 key_cs++;
111 1 key_cs &= 7;
112 1 disp_buff[4] = key_reg;
113 1
114 1 disp_data = disp_buff[disp_cs];
115 1 if (dot_pos == disp_cs)
116 1 disp_data |= 0x08;
C51 COMPILER V7.02b TEST 01/25/2004 00:49:19 PAGE 3
117 1
118 1 if ((disp_cs & 1) == 1){
119 2 unsigned char d;
120 2 d = (disp_data & 0x80) >> 3;
121 2 d |= (disp_data & 0x40) >> 1;
122 2 d |= (disp_data & 0x20) << 1;
123 2 d |= (disp_data & 0x10) << 3;
124 2 d |= (disp_data & 0x8) >> 3;
125 2 d |= (disp_data & 0x4) >> 1;
126 2 d |= (disp_data & 0x2) << 1;
127 2 d |= (disp_data & 0x1) << 3;
128 2 disp_data = d;
129 2 }
130 1
131 1 //DATA_PORT = ~disp_data;
132 1 spiout(disp_data);//~disp_data表示共阳驱动,disp_data是共阴驱动
133 1 out_cs(disp_cs, 0);
134 1 disp_cs++;
135 1 if (disp_cs == DISP_WIDTH)
136 1 disp_cs = 0;
137 1 }
138
139 unsigned int disp_flash = 0;
140 bit sys_wake_up = 0;
141
142 unsigned int time;
143 unsigned int timer_on;
144 unsigned int timer_long;
145 unsigned int time_ms= 0;
146 unsigned char jiffies = 0;
147 bit timer_isr_stop = 0;
148
149 void timer_isr(void) interrupt 1 using 1{
150 1 jiffies++;
151 1 if (jiffies < 10)
152 1 return;
153 1 jiffies = 0;
154 1 sys_wake_up = 1;
155 1 if(timer_isr_stop)
156 1 return;
157 1 time_ms++;
158 1 if(time_ms == 1000)//同步闪烁与字符跳变
159 1 disp_flash = 0;
160 1 // if (time_ms == 60000){//1000 == 1 Sec
161 1 if (time_ms == 1000){//1000 == 1 Sec
162 2 time_ms = 0;
163 2 time++;
164 2 if(time == 1440)
165 2 time = 0;
166 2 }
167 1 }
168
169 void timer_init(void){
170 1 timer_on = 0;
171 1 timer_long = 30;
172 1 time = 0;
173 1 TMOD=0x02;
174 1 // TH0=TL0=0x9b;//12M
175 1 // TH0=TL0=0x7a;//16M
176 1 // TH0=TL0=0x75;//16.59M
177 1 // TH0=TL0=0x72;//17M
178 1 // TH0=TL0=0x37;//24M
C51 COMPILER V7.02b TEST 01/25/2004 00:49:19 PAGE 4
179 1 TH0=TL0=-200;//24M
180 1 EA=1;
181 1 ET0=1;
182 1 TR0=1;
183 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -