📄 adqz.lst
字号:
C51 COMPILER V7.07 ADQZ 06/21/2005 17:14:53 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE ADQZ
OBJECT MODULE PLACED IN Adqz.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Adqz.c DEBUG OBJECTEXTEND
stmt level source
1 /* “验证式” 实验十八 电子琴 */
2 #include <reg51.h>
3 #include <absacc.h>
4 #define MODE 0x03
5
6 #define CAddr XBYTE[0xe100] /* 命令控制口 */
7 #define OUTBIT XBYTE[0xe101] /* 位控制口 */
8 #define IN XBYTE[0xe103] /* 键盘读入口 */
9
10
11 code unsigned char KeyTable[] = {
12 0X00, 0X01, 0X04, 0X07,
13 0X0f, 0X02, 0X05, 0X08,
14 0X0e, 0X03, 0X06, 0X09,
15 0X0d, 0X0c, 0X0b, 0X0a,
16 0X10, 0X10, 0X10, 0X10,
17 0X10, 0X10, 0X10, 0X10,
18 };
19
20 unsigned char TestKey()
21 {
22 1 OUTBIT = 0;
23 1 return (~IN & 0x0f);
24 1 }
25
26 unsigned char GetKey()
27 {
28 1 unsigned char Pos;
29 1 unsigned char i;
30 1 // unsigned char j;
31 1 unsigned char k;
32 1
33 1 i = 6;
34 1 Pos = 0x20;
35 1 do {
36 2 OUTBIT = ~ Pos;
37 2 Pos >>= 1;
38 2 k = ~IN & 0x0f;
39 2 } while ((--i != 0) && (k == 0));
40 1
41 1 if (k != 0) {
42 2 i *= 4;
43 2 if (k & 2)
44 2 i += 1;
45 2 else if (k & 4)
46 2 i += 2;
47 2 else if (k & 8)
48 2 i += 3;
49 2
50 2 OUTBIT = 0;
51 2
52 2 return(KeyTable[i]);
53 2 } else return(0xff);
54 1 }
55
C51 COMPILER V7.07 ADQZ 06/21/2005 17:14:53 PAGE 2
56 /* ================================================================================ */
57
58 code unsigned int ToneTable[7] = {
59 64578, 64686, 64778, 64821, 64898, 64968, 65029
60 };
61
62 unsigned char PulseCNT;
63 bit Pulse;
64 sbit Speaker = P1^0;
65 unsigned ToneHigh, ToneLow;
66
67 void Timer() interrupt 1
68 {
69 1 TR0 = 0;
70 1 TH0 = ToneHigh;
71 1 TL0 = ToneLow;
72 1 TR0 = 1;
73 1 Speaker = Pulse;
74 1 Pulse = !Pulse;
75 1 PulseCNT--;
76 1 }
77
78 void main()
79 {
80 1 unsigned char Key;
81 1 CAddr= MODE;
82 1 TMOD = 0x01; /* 方式 1 , 记时器 */
83 1 IE = 0x82; /* EA=1, IT0 = 1 */
84 1 while (1) {
85 2 while (! TestKey) ; /* 等按键 */
86 2 Key = GetKey();
87 2 if ( (Key >= 1) && (Key <= 7) ) {
88 3 ToneHigh = ToneTable[Key-1] >> 8;
89 3 ToneLow = ToneTable[Key-1] & 0xff;
90 3 TH0 = ToneHigh;
91 3 TL0 = ToneLow;
92 3 TR0 = 1;
93 3
94 3 PulseCNT = 200;
95 3 while (PulseCNT != 0) ; /* 发 100 个脉冲 */
96 3 TR0 = 0;
97 3 }
98 2 }
99 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 193 ----
CONSTANT SIZE = 38 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -