📄 lesson4_1.lst
字号:
1: #include<pic.h>
2: #define uchar unsigned char
3: #define uint unsigned int
4: __CONFIG(0x3B31);
5: const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
6: 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
7: uchar key_num;
8: void delay(uint x);
9: void init();
10: void scan();
11: void didi(uchar num);
12: void disp();
13: void main()
14: {
15: init();
16: while(1)
17: {
18: scan();
19: disp();
20: }
21: }
22: void delay(uint x)
23: {
24: uint a,b;
25: for(a=x;a>0;a--)
26: for(b=110;b>0;b--);
27: }
28: void init()
29: {
30: TRISB=0x0f;
31: TRISD=0;
32: TRISA=0;
33: TRISE0=0;
34: RE0=0;
35: PORTD=0;
36: PORTA=0xff;
37: }
38: void scan()
39: {
40: uchar key_tem;
41: PORTB=0x7f;//0111 1111
42: key_num=PORTB;
43: key_num=key_num&0x0f;
44: if(key_num!=0x0f)
45: {
46: delay(10);
47: key_num=PORTB;
48: key_num=key_num&0x0f;
49: if(key_num!=0x0f)
50: {
51: key_tem=key_num;
52: didi(1);
53: while(key_tem!=0x0f)
54: {
55: key_tem=PORTB;
56: key_tem=key_tem&0x0f;
57: }
58: key_num=key_num|0x70;
59: }
60: }
61: else
62: {
63: PORTB=0xBf;//1011 1111
64: key_num=PORTB;
65: key_num=key_num&0x0f;
66: if(key_num!=0x0f)
67: {
68: delay(10);
69: key_num=PORTB;
70: key_num=key_num&0x0f;
71: if(key_num!=0x0f)
72: {
73: key_tem=key_num;
74: didi(1);
75: while(key_tem!=0x0f)
76: {
77: key_tem=PORTB;
78: key_tem=key_tem&0x0f;
79: }
80: key_num=key_num|0xb0;
81: }
82: }
83: else
84: {
85: PORTB=0xdf;//1101 1111
86: key_num=PORTB;
87: key_num=key_num&0x0f;
88: if(key_num!=0x0f)
89: {
90: delay(10);
91: key_num=PORTB;
92: key_num=key_num&0x0f;
93: if(key_num!=0x0f)
94: {
95: key_tem=key_num;
96: didi(1);
97: while(key_tem!=0x0f)
98: {
99: key_tem=PORTB;
100: key_tem=key_tem&0x0f;
101: }
102: key_num=key_num|0xd0;
103: }
104: }
105: else
106: {
107: PORTB=0xef;//1011 1111
108: key_num=PORTB;
109: key_num=key_num&0x0f;
110: if(key_num!=0x0f)
111: {
112: delay(10);
113: key_num=PORTB;
114: key_num=key_num&0x0f;
115: if(key_num!=0x0f)
116: {
117: key_tem=key_num;
118: didi(1);
119: while(key_tem!=0x0f)
120: {
121: key_tem=PORTB;
122: key_tem=key_tem&0x0f;
123: }
124: key_num=key_num|0xe0;
125: }
126: }
127: }
128: }
129: }
130: }
131: void disp()
132: {
133: switch(key_num)
134: {
135: case 0xee:PORTD=table[0];break;//1110
136: case 0xed:PORTD=table[1];break;//1101
137: case 0xeb:PORTD=table[2];break;//1011
138: case 0xe7:PORTD=table[3];break;//0111
139: case 0xde:PORTD=table[4];break;
140: case 0xdd:PORTD=table[5];break;
141: case 0xdb:PORTD=table[6];break;
142: case 0xd7:PORTD=table[7];break;
143: case 0xbe:PORTD=table[8];break;
144: case 0xbd:PORTD=table[9];break;
145: case 0xbb:PORTD=table[10];break;
146: case 0xb7:PORTD=table[11];break;
147: case 0x7e:PORTD=table[12];break;
148: case 0x7d:PORTD=table[13];break;
149: case 0x7b:PORTD=table[14];break;
150: case 0x77:PORTD=table[15];break;
151: }
152: }
153:
154: void didi(uchar num)
155: {
156: uchar di_num;
157: for(di_num=num;di_num>0;di_num--)
158: {
159: RE0=1;
160: delay(50);
161: RE0=0;
162: delay(20);
163: }
164: }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -