📄 mima.lst
字号:
C51 COMPILER V8.02 MIMA 08/31/2007 15:30:05 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MIMA
OBJECT MODULE PLACED IN mima.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mima.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 //////////////////////////////////////////////////////////
5 //LED显示段码显示
6 #define a 0x80
7 #define b 0x40
8 #define c 0x20
9 #define d 0x10
10 #define e 0x08
11 #define f 0x04
12 #define g 0x02
13 #define dp 0x01
14 ////////////////////////////////////////////////
15 //LED显示位数
16 uint weishu;
17 ///////////////////////////////////////////////////////
18 //延时程序
19 /*void delay1ms(uint count)
20 {
21 uint i,j;
22 for(i=0;i<count;i++)
23 for(j=0;j<120;j++)
24 ;
25 }*/
26 void delay10ms(uint count)
27 {
28 1 uint i,j,k;
29 1 for(i=0;i<count;i++)
30 1 for(j=0;j<10;j++)
31 1 for(k=0;k<120;k++)
32 1 ;
33 1 }
34 /*void delay100ms(uint count)
35 {
36 uint i,j,k;
37 for(i=0;i<count;i++)
38 for(j=0;j<100;j++)
39 for(k=0;k<120;k++)
40 ;
41 }*/
42 /////////////////////////////////////////////////
43 //数据显示字模(共阴)
44 uchar const disp_code[16]={a+b+c+d+e+f,
45 b+c,
46 a+b+d+e+g,
47 a+b+c+d+g,
48 b+c+f+g,
49 a+c+d+f+g,
50 a+c+d+e+f+g,
51 a+b+c,
52 a+b+c+d+e+f+g,
53 a+b+c+d+f+g,
54 a+b+c+e+f+g,
55 c+d+e+f+g,
C51 COMPILER V8.02 MIMA 08/31/2007 15:30:05 PAGE 2
56 a+d+e+f,
57 b+c+d+e+g,
58 a+d+e+f+g,
59 a+e+f+g};
60 ///////////////////////////////////////////////////
61 //16进制转换为10进制的子程序
62 uchar disp_busf[4];
63 /*void hex_bcd(uint i)
64 {
65 uchar j;
66 for(j=0;j<4;j++)
67 {
68 disp_busf[j]=i%10;
69 i=i/10;
70 }
71 }*/
72 /////////////////////////////////////////////////////
73 //动态显示子程序
74 void display(void)
75 {
76 1 switch(weishu) //利用switch控制LED四个的显示位数,如果我们只用了2位,则只显示2位
77 1 {
78 2 case 4:
79 2 P0&=~0x08;
80 2 P2=~disp_code[disp_busf[0]];
81 2 delay10ms(3);
82 2 P0|=0x0f;
83 2 case 3:
84 2 P0&=~0x04;
85 2 P2=~disp_code[disp_busf[1]];
86 2 delay10ms(3);
87 2 P0|=0x0f;
88 2 case 2:
89 2 P0&=~0x02;
90 2 P2=~disp_code[disp_busf[2]];
91 2 delay10ms(3);
92 2 P0|=0x0f;
93 2 case 1:
94 2 P0&=~0x01;
95 2 P2=~disp_code[disp_busf[3]];
96 2 delay10ms(3);
97 2 P0|=0x0f;
98 2 default:
99 2 P0&=~0x00;
100 2 delay10ms(3);
101 2 }
102 1 }
103 ///////////////////////////////////////////////////////////
104 //键盘扫描子程序(反转法)
105 uchar key_scan(void)
106 {
107 1 uchar i,j;
108 1 P1=0x0f;
109 1 i=P1;
110 1 i&=0x0f;
111 1 if(i==0x0f)
112 1 return(0xff);
113 1 delay10ms(1);
114 1 P1|=0x0f;
115 1 i=P1;
116 1 i&=0x0f;
117 1 if(i==0x0f)
C51 COMPILER V8.02 MIMA 08/31/2007 15:30:05 PAGE 3
118 1 return(0xff);
119 1 P1=0xf0;
120 1 j=P1;
121 1 j&=0xf0;
122 1 return(i+j);
123 1 }
124 //////////////////////////////////////////////////////////
125 //键盘键值
126 uchar const key_code[16]={0x77,0x7b,0x7d,0x7e,0xb7,0xbb,0xbd,0xbe,
127 /*k1 k2 k3 k4 k5 k6 k7 k8*/
128 0xd7,0xdb,0xdd,0xde,0xe7,0xeb,0xed,0xee};
129 /*k9 k10 k11 k12 k13 k14 k15 k16*/
130 ////////////////////////////////////////////////////////////
131 //键盘扫描与键值译码子程序
132 uchar key(void)
133 {
134 1 uchar i,j;
135 1 i=key_scan();
136 1 if(i==0xff)
137 1 return(0xff);
138 1 loop:
139 1 j=key_scan();
140 1 if(j!=0xff) goto loop;
141 1 for(j=0;j<16;j++)
142 1 {
143 2 if(i==key_code[j])
144 2 break;
145 2 }
146 1 return(j);
147 1 }
148 //////////////////////////////////////////////////
149 //定时器0的中断服务程序
150 void xianshi(void) interrupt 1 using 1///中断方式显示数据
151 {
152 1 TH0=50000/256;
153 1 TL0=50000%256;
154 1 display();
155 1 }
156 /*//////////////////////////////////////////////////
157 //定时器1的中断服务程序
158 void alarm(void) interrupt 3 using 2///中断方式控制蜂鸣器
159 {
160 P3&=0xbf;
161 }*/
162 uchar key_busf;
163 /*////////////////////////////////////////////////////
164 //16进制高低位分解子程序
165 void hex_fen(uchar i)
166 {
167 disp_busf[0]=i&0x0f;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -