?? main.lst
字號:
C51 COMPILER V7.10 MAIN 07/02/2005 14:18:15 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #pragma CODE
2 #include <reg52.h>
3 #include "APR6008_DRIVER.H"
4 #include <intrins.h>
5
6 /*
7 sbit SCLK = P0^0;
8 sbit CS = P0^1;
9 sbit DI = P0^2;
10 sbit DO = P0^3;
11 sbit INT = P0^4;
12 sbit SAC = P0^5;
13
14 extern void send (unsigned long command);
15 extern void delay(unsigned char k);
16 */
17 unsigned char data starts;
18 unsigned char nkey;
19 unsigned int data add0;
20 unsigned int data add1;
21
22
23 void send (unsigned char command,unsigned int address){
24 1 unsigned char i;
25 1 CS = 0;
26 1 SCLK = 0;
27 1 CY = 0;
28 1
29 1 for (i = 1;i < 6;i++){
30 2 command = command<<1;
31 2 DI = CY;
32 2 SCLK = 1;
33 2 _nop_();
34 2 SCLK = 0;
35 2 _nop_();
36 2 putbuf(CY);
37 2 }
38 1 if (address != 0X00){
39 2 CY = 0;
40 2 for (i = 1;i < 16;i++){
41 3 address = address<<1;
42 3 DI = CY;
43 3 SCLK = 1;
44 3 _nop_();
45 3 SCLK = 0;
46 3 _nop_();
47 3 putbuf(CY);
48 3
49 3 }
50 2 }
51 1 CS = 1;
52 1
53 1
54 1 }
55 void delay (unsigned char k){
C51 COMPILER V7.10 MAIN 07/02/2005 14:18:15 PAGE 2
56 1 unsigned char temp;
57 1 while (k){
58 2 for (temp = 0;temp <0xff;temp++){
59 3 }
60 2 k--;
61 2 }
62 1 }
63 void InitSerial (void) {
64 1
65 1 PCON |=0x80;
66 1 SCON = 0x50;
67 1 TMOD |= 0x20;
68 1 //TL1 |= 0xFA; // 19200 C35
69 1 //TH1 |= 0xFA;
70 1 TL1 |= 0xF4; // 9600 愛立信
71 1 TH1 |= 0xF4;
72 1
73 1 TR1 = 1;
74 1 REN = 1;
75 1 ES = 1;
76 1
77 1 }
78 void putbuf (char c) {
79 1 TI = 0;
80 1 SBUF = c;
81 1 while(!TI);
82 1 TI = 0;
83 1 }
84 void putstring(unsigned char *puts){
85 1 for(;*puts!=0;puts++) //遇到停止符0結束
86 1 putbuf(*puts);
87 1 }
88 void main (void){
89 1 bit record_key=0;
90 1 bit nkey = 0;
91 1 InitSerial ();
92 1 P0 = 0xff;
93 1 P1 = 0xff;
94 1 P2 = 0xff;
95 1 P3 = 0xff;
96 1 send (pwpup,0x0002); //選擇取樣頻率,A1,A0 = 01 4.0KHz
97 1 while (1){
98 2 add0= 0x0002;
99 2
100 2 starts = getkey(1000);
101 2 if (starts != 0x00){
102 3
103 3 switch (starts){
104 4 case '1': //錄制
105 4 while (SAC);
106 4 send (set_reg,add0);
107 4 delay (0xff);
108 4 send (nop,0x00);
109 4 starts = 0x00;
110 4 putstring ("record");
111 4 record_key = 1;
112 4 break;
113 4 case '2': //播放
114 4 while (SAC);
115 4 send (setplay,add0);
116 4 delay (0xff);
117 4 send (nop,0x00);
C51 COMPILER V7.10 MAIN 07/02/2005 14:18:15 PAGE 3
118 4 starts = 0x00;
119 4 putstring ("play");
120 4 record_key = 0;
121 4 break;
122 4 case '3': //跳過
123 4 while (SAC);
124 4 add1 = add0++;
125 4 send (setplay,add1);
126 4 delay (0xff);
127 4 send (nop,0x00);
128 4 putstring ("skip");
129 4 starts = 0x00;
130 4 break;
131 4 case '4': //停止
132 4 while (SAC);
133 4 send (stop,add0);
134 4 delay (0xff);
135 4 send (nop,0x00);
136 4 starts = 0x00;
137 4 putstring ("stop");
138 4 record_key = 0;
139 4 break;
140 4 }
141 3 }
142 2 if (SAC == 0)led1 = 1;
143 2 else led1 = 0;
144 2 if ((SAC == 0)&&(record_key == 1)&&(nkey == 1)){
145 3 led0 = 0;
146 3 add1 = add0++;
147 3 send (set_reg,add1);
148 3 delay (0xff);
149 3 send (nop,0x00);
150 3 putstring ("record++");
151 3 nkey = 0;
152 3 }
153 2 if (SAC == 1){nkey = 1;led0 = 1;}
154 2
155 2 }
156 1 }
C51 COMPILER V7.10 MAIN 07/02/2005 14:18:15 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION L?0047 (BEGIN)
0000 L?0048:
0000 7FFF MOV R7,#0FFH
0002 120000 R LCALL _delay
0005 E4 CLR A
0006 FD MOV R5,A
0007 FC MOV R4,A
0008 FF MOV R7,A
; FUNCTION _send (BEGIN)
; SOURCE LINE # 23
0009 8F00 R MOV command,R7
000B 8C00 R MOV address,R4
000D 8D00 R MOV address+01H,R5
; SOURCE LINE # 25
000F C285 CLR CS
; SOURCE LINE # 26
0011 C287 CLR SCLK
; SOURCE LINE # 27
0013 C2D7 CLR CY
; SOURCE LINE # 29
0015 750001 R MOV i,#01H
0018 ?C0001:
; SOURCE LINE # 30
0018 E500 R MOV A,command
001A 25E0 ADD A,ACC
001C F500 R MOV command,A
; SOURCE LINE # 31
001E 9286 MOV DI,C
; SOURCE LINE # 32
0020 D287 SETB SCLK
; SOURCE LINE # 33
0022 00 NOP
; SOURCE LINE # 34
0023 C287 CLR SCLK
; SOURCE LINE # 35
0025 00 NOP
; SOURCE LINE # 36
0026 E4 CLR A
0027 33 RLC A
0028 FF MOV R7,A
0029 120000 R LCALL _putbuf
; SOURCE LINE # 37
002C 0500 R INC i
002E E500 R MOV A,i
0030 C3 CLR C
0031 9406 SUBB A,#06H
0033 40E3 JC ?C0001
0035 ?C0002:
; SOURCE LINE # 38
0035 E500 R MOV A,address+01H
0037 4500 R ORL A,address
0039 6027 JZ ?C0004
; SOURCE LINE # 39
003B C2D7 CLR CY
; SOURCE LINE # 40
003D 750001 R MOV i,#01H
0040 ?C0005:
; SOURCE LINE # 41
0040 E500 R MOV A,address+01H
C51 COMPILER V7.10 MAIN 07/02/2005 14:18:15 PAGE 5
0042 25E0 ADD A,ACC
0044 F500 R MOV address+01H,A
0046 E500 R MOV A,address
0048 33 RLC A
0049 F500 R MOV address,A
; SOURCE LINE # 42
004B 9286 MOV DI,C
; SOURCE LINE # 43
004D D287 SETB SCLK
; SOURCE LINE # 44
004F 00 NOP
; SOURCE LINE # 45
0050 C287 CLR SCLK
; SOURCE LINE # 46
0052 00 NOP
; SOURCE LINE # 47
0053 E4 CLR A
0054 33 RLC A
0055 FF MOV R7,A
0056 120000 R LCALL _putbuf
; SOURCE LINE # 49
0059 0500 R INC i
005B E500 R MOV A,i
005D C3 CLR C
005E 9410 SUBB A,#010H
0060 40DE JC ?C0005
; SOURCE LINE # 50
0062 ?C0004:
; SOURCE LINE # 51
0062 D285 SETB CS
; SOURCE LINE # 54
0064 22 RET
; FUNCTION _send (END)
; FUNCTION _delay (BEGIN)
; SOURCE LINE # 55
;---- Variable 'k' assigned to Register 'R7' ----
0000 ?C0009:
; SOURCE LINE # 57
0000 EF MOV A,R7
0001 6009 JZ ?C0014
; SOURCE LINE # 58
;---- Variable 'temp' assigned to Register 'R6' ----
0003 E4 CLR A
0004 FE MOV R6,A
0005 ?C0011:
; SOURCE LINE # 59
0005 0E INC R6
0006 BEFFFC CJNE R6,#0FFH,?C0011
0009 ?C0012:
; SOURCE LINE # 60
0009 1F DEC R7
; SOURCE LINE # 61
000A 80F4 SJMP ?C0009
; SOURCE LINE # 62
000C ?C0014:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -