📄 cd_rom.lst
字号:
A51 MACRO ASSEMBLER CD_ROM 12/11/2008 20:33:09 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN cd_rom.OBJ
ASSEMBLER INVOKED BY: D:\Keil\C51\BIN\A51.EXE cd_rom.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;* CD-ROM播放器 (单LCD显示版本) *
2 ;***************************************************************************
3 ;* 标题:CD-ROM播放器 *
4 ;* 更新日期:2008.12.2 *
5 ;* 程序编写:马泽民 *
6 ;* E-mail:ruochen311@yahoo.com.cn *
7 ;* 学校: 北京信息科技大学 *
8 ;* 说明:用89C52控制光嵌烈羝礐D(光歉某蒀D机) *
9 ;***************************************************************************
10 ;*注:单片机89C52/S52 晶振12Mhz *
11 ;*本程序搭配CDROM控制器 单LCD显示版本PCB *
12 ;***************************************************************************
13
14
15
16
0000 17 ORG 0000H
0000 0130 18 AJMP boot
0013 19 ORG 00013H ;外部中断P3.3脚INT1入口地址
0013 0147 20 AJMP INT
21
0030 22 ORG 030H
0030 23 boot:
0031 24 CODE_BASE EQU 0031h
0085 25 STACK_START EQU 85h
26
27 ;ctrl bus
00A5 28 DA0 bit p2.5
00A6 29 DA1 bit p2.6
00A7 30 DA2 bit P2.7
31
32 ;ctrl
00B7 33 ATA_nDIOR bit p3.7 ;read strobe
00B6 34 ATA_nDIOW bit p3.6 ;write strobe
00B2 35 ATA_nRESET bit p3.2
00B5 36 ATA_INTRQ bit p3.5 ;irq
37
38 ;data bus
0080 39 ATA_DATA_LS data p0
0090 40 ATA_DATA_MS data p1
41
42 ;ir_control_code
005B 43 ir_code data 5bH
44
45 ;display ctrl 显示控制
46
00B4 47 DISP_E bit p3.4 ;显示控制
48
0096 49 RSPIN EQU P1.6
0097 50 RWPIN EQU P1.7
00B4 51 EPIN EQU P3.4
52
53 ;display data bus
54
0080 55 LCM_D data P0 ; LCM BUS
56
57 ;Key
00A0 58 play_key bit p2.0
A51 MACRO ASSEMBLER CD_ROM 12/11/2008 20:33:09 PAGE 2
00A1 59 pause_key bit p2.1
00A2 60 pre_key bit p2.2
00A3 61 next_key bit p2.3
00A4 62 stop_key bit p2.4
63
0008 64 packet_size data 08h
0009 65 start_track data 09h
0069 66 end_track data 69h
000A 67 tmp0 data 0ah
000B 68 tmp1 data 0bh
000C 69 tmp2 data 0ch
000D 70 tmp3 data 0dh
000E 71 start_M data 0eh
000F 72 start_S data 0fh
0010 73 start_F data 10h
0011 74 end_M data 11h
0012 75 end_S data 12h
0013 76 end_F data 13h
0014 77 audio_status data 14h
0060 78 current_track data 60h
0061 79 current_M data 61h
0062 80 current_S data 62h
0063 81 current_F data 63h
0064 82 next_track data 64h
0067 83 media_type data 67h
0042 84 volume_1 data 42h
0043 85 volume_2 data 43h
0045 86 sense_code data 45h
0046 87 show_all data 46h
88
0016 89 aba_t data 16h
0018 90 abb_m data 18h
0019 91 abb_s data 19h
92
0015 93 Err_cd_code data 15h
0054 94 toc_times data 54h
0053 95 pause_da data 53h
0052 96 pause_db data 52h
97
0050 98 ir_temp data 50h
0058 99 ir_key data 58h
0051 100 ir_num data 51h
0059 101 driver_status data 59h
102
004C 103 play_mode data 4ch
004F 104 track_a data 4fh ;循环开始结束曲
004D 105 track_b data 4dh
106
0065 107 a_bit data 65h
0066 108 b_bit data 66h
0068 109 DM_code data 68h
110
006A 111 d_track data 6ah
006C 112 d_s data 6ch
006D 113 d_m data 6dh
114
006E 115 n_s data 6eh
006F 116 n_m data 6fh
117
0057 118 E_M data 57h ;要显示用得M S T
0056 119 E_s data 56h
0055 120 E_t data 55h
121
122
123
124
A51 MACRO ASSEMBLER CD_ROM 12/11/2008 20:33:09 PAGE 3
0070 125 packet_tab idata 70h
0070 126 packet_cmd data 70h
0071 127 packet_1 data 71h
0072 128 packet_2 data 72h
0073 129 packet_3 data 73h
0074 130 packet_4 data 74h
0075 131 packet_5 data 75h
0076 132 packet_6 data 76h
0077 133 packet_7 data 77h
0078 134 packet_8 data 78h
0079 135 packet_9 data 79h
007A 136 packet_10 data 7ah
007B 137 packet_11 data 7bh
007C 138 packet_12 data 7ch
007D 139 packet_13 data 7dh
007E 140 packet_14 data 7eh
007F 141 packet_15 data 7fh
142
0031 143 org CODE_BASE
0031 C2AF 144 clr EA
145 ;SETB EA ;打开CPU总中断请求
0033 C2A8 146 clr ex0 ;关掉其他中断
0035 C2AB 147 clr et1
0037 C2AC 148 clr es
0039 C2A9 149 clr et0
003B D28A 150 SETB IT1 ;设定INT1的触发方式为脉冲负边沿触发
003D D2AA 151 SETB EX1 ;打开INT1中断请求 (红外线输入)
003F 755BFF 152 mov ir_code,#0ffh
0042 D2AF 153 SETB EA ;打开CPU总中断请求
0044 02193D 154 ljmp start
155
156 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
157 ;红外线控制程序
158 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0047 159 INT:
0047 C2AF 160 CLR EA ;暂时关闭CPU的所有中断请求
161
0049 7E0A 162 MOV R6,#10
004B 163 SB:
164 ;SJMP YS0 ;转到882微秒延时判断子程序
004B 1189 165 call YS1
004D 20B32D 166 jb p3.3,exit
0050 167 SBB: ;延时882微秒中判断P3.3脚是否出现高电平如果有就退出解码程序
0050 DEF9 168 DJNZ R6, SB ;重复R6次,目的是检测在8820微秒内如果出现高电平就退出解码程序
169 ;以上完成对遥控信号的9000微秒的初始低电平信号的识别,即识别业悸
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -