initial commit
This commit is contained in:
commit
36da235535
34 changed files with 10160 additions and 0 deletions
5
Makefile
Normal file
5
Makefile
Normal file
|
@ -0,0 +1,5 @@
|
|||
CC=gcc
|
||||
CFLAGS=-Wall
|
||||
LDFLAGS=-lusb -lm
|
||||
|
||||
keenectl: keenectl.o
|
114
PRG/CAL.LST
Normal file
114
PRG/CAL.LST
Normal file
|
@ -0,0 +1,114 @@
|
|||
文件:CAL.ASM 盛群编译器版本 2.86 页次1
|
||||
|
||||
|
||||
1 0000 ;8 bit unsigned mul
|
||||
2 0000 unbin_mul_8 proc ;data0*data4---->to1to0
|
||||
3 0000 init
|
||||
Error(A0010) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 3 : 非预期的符号 'init'
|
||||
4 0000 0F08 mov a, 08h
|
||||
5 0001 0000 mov count0, a
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 5 : 语法错误
|
||||
6 0002 rradd:
|
||||
7 0002 0000 rrc to1
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 7 : 语法错误
|
||||
8 0003 0000 rrc data4
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 8 : 语法错误
|
||||
9 0004 380A snz [0ah].0
|
||||
10 0005 2800 R jmp rr1 ;当前data4.0=0,移位<E7A7BB>
|
||||
11 0006 0F00 mov a, data0 ;当前data4.0=1,移位相加
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 11 : 未定义的符号 'data0'
|
||||
12 0007 0000 addm a, to1
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 12 : 语法错误
|
||||
13 0008 rr1:
|
||||
14 0008 0000 sdz count0
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 14 : 语法错误
|
||||
15 0009 2800 R jmp rradd
|
||||
16 000A 0000 rrc to1
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 16 : 语法错误
|
||||
17 000B 0000 rrc data4
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 17 : 语法错误
|
||||
18 000C 0F00 mov a, data4
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 18 : 未定义的符号 'data4'
|
||||
19 000D 0000 mov to0, a
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 19 : 语法错误
|
||||
20 000E 0003 ret
|
||||
21 000F unbin_mul_8 endp
|
||||
22 000F
|
||||
23 000F
|
||||
24 000F ;8 bit unsigned div
|
||||
25 000F unbin_div_8 proc ;data0/data4---->data0(to0)---to1
|
||||
26 000F init
|
||||
Error(A0010) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 26 : 非预期的符号 'init'
|
||||
27 000F 0F08 mov a, 08h ;循环次数8
|
||||
28 0010 0000 mov count0, a
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 28 : 语法错误
|
||||
29 0011
|
||||
30 0011 0000 sz data4 ;除数为0则溢出
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 30 : 语法错误
|
||||
31 0012 2800 R jmp start0
|
||||
32 0013 2800 R jmp over8
|
||||
33 0014 start0:
|
||||
34 0014 0000 sz data0 ;被除数为0则结束
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 34 : 语法错误
|
||||
35 0015 2800 R jmp div0
|
||||
36 0016 2800 R jmp dispa
|
||||
37 0017 div0:
|
||||
38 0017 340A clr [0Ah].0 ;准备左移
|
||||
39 0018 0000 rlc data0
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 39 : 语法错误
|
||||
40 0019 0000 rlc to1 ;左移一位结束
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 40 : 语法错误
|
||||
41 001A 0F00 mov a, to1 ;开始部分余数减除数
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 41 : 未定义的符号 'to1'
|
||||
文件:CAL.ASM 盛群编译器版本 2.86 页次2
|
||||
|
||||
42 001B 0A00 sub a, data4
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 42 : 未定义的符号 'data4'
|
||||
43 001C 380A snz [0Ah].0
|
||||
44 001D 2800 R jmp next0 ;不够减则转移
|
||||
45 001E 0000 mov to1, a ;够减则商为1
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 45 : 语法错误
|
||||
46 001F 0000 inc data0
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 46 : 语法错误
|
||||
47 0020 next0:
|
||||
48 0020 0000 sdz count0
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 48 : 语法错误
|
||||
49 0021 2800 R jmp div0
|
||||
50 0022 dispa:
|
||||
51 0022 0F00 mov a, data0 ;显示商
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 51 : 未定义的符号 'data0'
|
||||
52 0023 0000 mov to0, a
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 52 : 语法错误
|
||||
53 0024 ;; mov a, data4
|
||||
54 0024 ;; mov to1, a
|
||||
55 0024 0003 ret
|
||||
56 0025 over8:
|
||||
57 0025 0003 ret
|
||||
58 0026 unbin_div_8 endp
|
||||
59 0026
|
||||
60 0026
|
||||
61 0026 ;16 bit unsigned div
|
||||
62 0026 unbin_div_16 proc ;data0data1/data4data5---->data1data0(to1to0)---to2to3
|
||||
63 0026 init
|
||||
Error(A0010) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 63 : 非预期的符号 'init'
|
||||
64 0026 0F10 mov a, 10h
|
||||
65 0027 0000 mov count0, a
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 65 : 语法错误
|
||||
66 0028 0000 sz data5
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 66 : 语法错误
|
||||
67 0029 2800 R jmp start16
|
||||
68 002A 0000 sz data4
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 68 : 语法错误
|
||||
69 002B 2800 R jmp start16
|
||||
70 002C 2800 R jmp over16
|
||||
71 002D start16:
|
||||
72 002D 0000 sz data1
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 72 : 语法错误
|
||||
73 002E 2800 R jmp div16
|
||||
74 002F 0000 sz data0
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM 74 : 语法错误
|
||||
Error(A0052) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\CAL.ASM : 错误过多
|
||||
|
||||
|
||||
|
||||
31 Errors
|
236
PRG/DES.ASM
Normal file
236
PRG/DES.ASM
Normal file
|
@ -0,0 +1,236 @@
|
|||
;====================================================================
|
||||
; ROM Size , HT82A821R = 2K , last page = 0700H
|
||||
; HT82A822R = 4K , last page = 0F00H
|
||||
; If use HT82A821R
|
||||
; #defined HT82A821R 1
|
||||
; #defined HT82A822R 0
|
||||
; If use HT82A822R
|
||||
; #defined HT82A821R 0
|
||||
; #defined HT82A822R 1
|
||||
;====================================================================
|
||||
; Use ReportID , Report ID 1 = Volume HID control
|
||||
; Report ID 2 = Transform Other Data
|
||||
;====================================================================
|
||||
|
||||
#include ht82a821r.inc
|
||||
#include const.inc
|
||||
#define HT82A821R 1
|
||||
#define HT82A822R 0
|
||||
|
||||
IF HT82A821R
|
||||
Descript .Section at 0700h 'code'
|
||||
ENDIF
|
||||
|
||||
|
||||
IF HT82A822R
|
||||
Descript .Section at 0F00h 'code'
|
||||
ENDIF
|
||||
|
||||
|
||||
|
||||
control_read_table:
|
||||
device_desc_table:
|
||||
DW 00112H ;descriptor type (device descriptor) , size of descriptor (18 bytes)
|
||||
DW 00110H ;USB spec release (ver 1.1)
|
||||
DW 00000H ;device sub-class , device class
|
||||
DW 00800H ;maximum packet size , device sub-sub-class
|
||||
DW 0046DH ;vender ID = 004D9H
|
||||
DW 03F0EH
|
||||
DW 03F0AH ;product ID (Sample Device) = 0x2821
|
||||
DW 00100H ;product version ID
|
||||
DW 00201H ;product string index (device show) , manufacturer string index
|
||||
DW 00100H ;number of configurations
|
||||
config_desc_table:
|
||||
DW 00209H ;descriptor type (config descriptor) , size of descriptor
|
||||
DW 00087H ;total length of descriptor (34 bytes)
|
||||
DW 00103H ;1 configuration , 3 interface
|
||||
DW 03F00H ;configuration string index
|
||||
DW 03FA0H ;configuration attributes (bus supply), Remote Wakeup
|
||||
DW 03FFAH ;maxpower (500ma)
|
||||
Interface_Descriptor:
|
||||
Interface0_descriptor:
|
||||
standard_audio_control_interface_control:
|
||||
DW 00409H ;descriptor type (interface descriptor) , size of descriptor (9 bytes)
|
||||
DW 00000H ;interface alternate setting , interface number (0 base)
|
||||
DW 00100H ;interface class(01H for audio class) , number of endpoint (1 end point)
|
||||
DW 00001H ;interface protocol , interface sub-class (audio control)
|
||||
DW 03F00H ;x , interface string index
|
||||
class_specific_audio_control_interface_descriptor:
|
||||
DW 02409H ;descriptor type (CS_INTERFACE) , size of descriptor (9 bytes)
|
||||
DW 03F01H ;descriptor subtype (Header)
|
||||
DW 00100H ;audio device class specification release number(1.00)
|
||||
DW 00028H ;total number of bytes for the class-specific audiocontrol interface descriptor
|
||||
DW 00101H ;streaming interface number belongs to audio control interface , the number of streaming interface
|
||||
input_terminal:
|
||||
DW 0240CH ;descriptor type(CS_INTERFACE) , size of descriptor
|
||||
DW 00102H ;ID of this terminal(ID=1) , descriptor subtype(INPUT_TERMINAL)
|
||||
DW 00101H ;terminal type(USB streaming type)
|
||||
DW 00200H ;number of channel(two channel) , associate with output terminal
|
||||
DW 00003H ;channel config(Left/Right Front)
|
||||
DW 00000H ;channelname(unused) , terminal name(unused)
|
||||
feature_unit:
|
||||
DW 0240AH ;descriptor type(CS_INTERFACE) , size of descriptor(10 bytes)
|
||||
DW 00D06H ;UnitID , descriptorSubtype(FEATURE_UNIT)
|
||||
DW 00101H ;control size(1) , SourceID(input terminal 01)
|
||||
DW 00003H ;D1(volume)control is enable foe channel 1 , D0(mute) D1(volume) is enable for channel 0
|
||||
DW 00000H ;index of this descriptor , D1(volume)control is enable for channel 2
|
||||
output_terminal:
|
||||
DW 02409H ;descriptor type(CS_INTERFACE) , size of descriptor(9 bytes)
|
||||
DW 00303H ;terminal ID(03) , descriptorsubtype(OUTPUT_TERMINAL)
|
||||
DW 00301H ;terminal is speaker
|
||||
DW 00D00H ;sourceID(feature unit ID=0D) , associate terminal
|
||||
DW 03F00H ;index of this descriptor
|
||||
Interface1_descriptor:
|
||||
zero_bw:
|
||||
DW 00409H ;descriptor type(INTERFACE) , sizoe of descriptor
|
||||
DW 00001H ;index of ths setting(alternatesetting = 0) , index of this interface
|
||||
DW 00100H ;interface-class(AUDIO) , number of endpoint(0)
|
||||
DW 00002H ;interface protocol(unused) , InterfaceSubClass(AUDIO_STREAMING)
|
||||
DW 03F00H ;index string of this descriptor
|
||||
audio_streaming:
|
||||
DW 00409H ;descriptor type(INTERFACE) , size of descriptor
|
||||
DW 00101H ;index of the setting(alternatesetting = 1) ,index of this interface
|
||||
DW 00101H ;interface-class(AUDIO) , number of endpoint(1)
|
||||
DW 00002H ;interface protocol(unused) , InterfaceSubClass(AUDIO_STREAMING)
|
||||
DW 03F00H ;index string of this descriptor
|
||||
class_specific_as_interface_desc:
|
||||
DW 02407H ;descriptor type(CS_INTERFACE) , size of descriptor
|
||||
DW 00101H ;terminalLink(Input terminal) , descriptor subtype(AS_GENERAL)
|
||||
DW 03F01H ;interface delay(1)
|
||||
DW 00001H ;PCM format
|
||||
format_type_descriptor:
|
||||
DW 0240BH ;descriptor type(CS_INTERFACE) , size of descriptor
|
||||
DW 00102H ;FormatType(FORMAT_TYPE_I) , descriptorSubType(FORMAT_TYPE)
|
||||
DW 00202H ;SubFrameSize(2 byte per slot) , number of channel(2 channels)
|
||||
DW 00110H ;SamFreqType(support 1 type) , BitSolution(16 bits)
|
||||
DW 03F80H ;Sample Frequency(48000 Hz)
|
||||
DW 000BBH ;
|
||||
end_point_descriptor:
|
||||
DW 00509H ;descriptor type(END_POINT) , size of descriptor
|
||||
DW 00902H ;endpoint attributes(adaptive,isochronous) , endpoint2(out direction)
|
||||
DW 000C0H ;maxPacketSize(192 bytes)
|
||||
DW 00001H ;Refresh(0) , Interval(1ms)
|
||||
DW 03F00H ;index string of this descriptor
|
||||
class_specific_endpoint_descriptor:
|
||||
DW 02507H ;descriptor type(CS_ENDPOINT) , size of descriptor
|
||||
DW 00001H ;Attributes(no sampling frequency , no pitch , no maxpackets control) , descriptorType(EP_GENERAL)
|
||||
DW 03F00H ;LockedDelayUnit(unused)
|
||||
DW 00000H ;LockDelay(unused)
|
||||
Interface2_descriptor:
|
||||
HID_class:
|
||||
DW 00409H ;INTERFACE descriptor , Size of this descriptor
|
||||
DW 00002H ;Index of this string , index of this interface
|
||||
DW 00301H ;HID , 1 endpoint
|
||||
DW 00000H ;Unused , Non-Boot Device
|
||||
DW 03F00H ;null string
|
||||
HID_Desc:
|
||||
DW 02109H ;HID , Size of this descriptor
|
||||
DW 00110H ;HID spec rev #1.10
|
||||
DW 00100H ;bNumDescriptor , bCountryCode
|
||||
DW 03F22H ;Report Descriptor
|
||||
;====================================================================
|
||||
; Use ReportID , Report ID 1 = Volume HID control
|
||||
; Report ID 2 = Transform Other Data
|
||||
;====================================================================
|
||||
IF UseReportID
|
||||
DW 00016H ;67 bytes
|
||||
ELSE
|
||||
DW 00016H
|
||||
ENDIF
|
||||
|
||||
HID_end_point_descriptor:
|
||||
DW 00507H ;Endpoint descriptor , Length of this descriptor
|
||||
DW 00381H ;Interrupt , Endpoint 1 In direction
|
||||
DW 00008H ;wMaxPacketSize = 1 Bytes
|
||||
DW 03F30H ;48ms Interval
|
||||
end_config_desc_table:
|
||||
|
||||
hid_report_desc_table:
|
||||
;====================================================================
|
||||
; Use ReportID , Report ID 1 = Volume HID control
|
||||
; Report ID 2 = Transform Other Data
|
||||
;====================================================================
|
||||
;;vender defined
|
||||
DW 03F06H ;//Usage Page(Global)
|
||||
DW 03F00H
|
||||
DW 03FFFH ;//Usage Page
|
||||
|
||||
DW 00109H ;//Usage(Local 1 bytes)
|
||||
DW 001A1H ;//collection(Main)
|
||||
;input report
|
||||
;; DW 03F19H
|
||||
;; DW 03FA6H
|
||||
;; DW 03F29H ;//Usage(Local)
|
||||
;; DW 03FACH
|
||||
;; DW 03F15H ;//Global Logical Minimum
|
||||
;; DW 03F80H
|
||||
;; DW 03F25H ;//Global Logical Maximum
|
||||
;; DW 03F7FH
|
||||
;; DW 00875H ;//Global Report Size 8 bits
|
||||
;; DW 00795H ;//Global Report Count 7 (field)
|
||||
;; DW 00281H ;//Main Input (Data,Variable,Absolute)
|
||||
;output
|
||||
DW 00015H ;//LOGICAL MINIMUM (0)
|
||||
DW 03F25H
|
||||
DW 03FffH ;//LOGICAL MAXIMUM (FF)
|
||||
DW 00019H ;//Usage Min (#)
|
||||
DW 00129H ;//Usage Max (#)
|
||||
DW 00895H ;//Report Count(8)
|
||||
DW 00875H ;//Report Size(8)
|
||||
DW 00291H ;//OUTPUT: (Data, Array)
|
||||
DW 03FC0H ;End Collection
|
||||
end_hid_report_desc_table:
|
||||
|
||||
string_descriptor:
|
||||
USBStringLanguageDescription:
|
||||
DW 00304h ; Length , Type (3=string)
|
||||
DW 00409h ; Language: English , Sub-language: US
|
||||
|
||||
imanufacturer_string: ;Vendor Name
|
||||
USBStringDescription1:
|
||||
DW 00310h, 00048h, 0004fh, 0004ch, 00054h, 00045h, 0004bh, 00020h ;HOLTEK
|
||||
|
||||
iproduct_string: ;Product Name
|
||||
USBStringDescription2:
|
||||
;DW 00326h, 00042h, 0002Dh, 0004ch, 00049h, 0004Eh, 0004bh, 00020h ;B-LINK
|
||||
DW 00055h, 00053h, 00042h, 00020h ;USB
|
||||
DW 00041h, 00075h, 00064h, 00069h, 0006fh, 00020h, 00020h ;Audio
|
||||
|
||||
isnumber_string: ;Serial Number
|
||||
USBStringDescription3:
|
||||
DW 0030Ah, 00038h, 00032h, 00031h, 00052h ;821R
|
||||
|
||||
|
||||
|
||||
config_desc_length:
|
||||
DW 00087H
|
||||
|
||||
report_desc_length:
|
||||
IF UseReportID
|
||||
DW 00016H
|
||||
ELSE
|
||||
DW 00016H
|
||||
ENDIF
|
||||
hid_desc_length:
|
||||
DW 00009H
|
||||
|
||||
|
||||
|
||||
Public control_read_table
|
||||
Public device_desc_table
|
||||
Public config_desc_table
|
||||
Public end_config_desc_table
|
||||
Public USBStringLanguageDescription
|
||||
Public USBStringDescription1
|
||||
Public USBStringDescription2
|
||||
Public USBStringDescription3
|
||||
|
||||
Public HID_Desc
|
||||
Public hid_report_desc_table
|
||||
Public end_hid_report_desc_table
|
||||
|
||||
|
||||
Public config_desc_length
|
||||
Public hid_desc_length
|
||||
Public report_desc_length
|
||||
|
258
PRG/DES.LST
Normal file
258
PRG/DES.LST
Normal file
|
@ -0,0 +1,258 @@
|
|||
文件:DES.ASM 盛群编译器版本 2.86 页次1
|
||||
|
||||
|
||||
1 0000 ;====================================================================
|
||||
2 0000 ; ROM Size , HT82A821R = 2K , last page = 0700H
|
||||
3 0000 ; HT82A822R = 4K , last page = 0F00H
|
||||
4 0000 ; If use HT82A821R
|
||||
5 0000 ; #defined HT82A821R 1
|
||||
6 0000 ; #defined HT82A822R 0
|
||||
7 0000 ; If use HT82A822R
|
||||
8 0000 ; #defined HT82A821R 0
|
||||
9 0000 ; #defined HT82A822R 1
|
||||
10 0000 ;====================================================================
|
||||
11 0000 ; Use ReportID , Report ID 1 = Volume HID control
|
||||
12 0000 ; Report ID 2 = Transform Other Data
|
||||
13 0000 ;====================================================================
|
||||
14 0000
|
||||
15 0000 #include ht82a821r.inc
|
||||
|
||||
|
||||
16 0000 #include const.inc
|
||||
|
||||
|
||||
17 0000 #define HT82A821R 1
|
||||
18 0000 #define HT82A822R 0
|
||||
19 0000
|
||||
20 0000 IF HT82A821R
|
||||
21 0000 Descript .Section at 0700h 'code'
|
||||
22 0000 ENDIF
|
||||
23 0000
|
||||
24 0000
|
||||
25 0000 IF HT82A822R
|
||||
26 0000 Descript .Section at 0F00h 'code'
|
||||
27 0000 ENDIF
|
||||
28 0000
|
||||
29 0000
|
||||
30 0000
|
||||
31 0000 control_read_table:
|
||||
32 0000 device_desc_table:
|
||||
33 0000 0112 DW 00112H ;descriptor type (device descriptor) , size of descriptor (18 bytes)
|
||||
34 0001 0110 DW 00110H ;USB spec release (ver 1.1)
|
||||
35 0002 0000 DW 00000H ;device sub-class , device class
|
||||
36 0003 0800 DW 00800H ;maximum packet size , device sub-sub-class
|
||||
37 0004 046D DW 0046DH ;vender ID = 004D9H
|
||||
38 0005 3F0E DW 03F0EH
|
||||
39 0006 3F0A DW 03F0AH ;product ID (Sample Device) = 0x2821
|
||||
40 0007 0100 DW 00100H ;product version ID
|
||||
41 0008 0201 DW 00201H ;product string index (device show) , manufacturer string index
|
||||
42 0009 0100 DW 00100H ;number of configurations
|
||||
43 000A config_desc_table:
|
||||
44 000A 0209 DW 00209H ;descriptor type (config descriptor) , size of descriptor
|
||||
45 000B 0087 DW 00087H ;total length of descriptor (34 bytes)
|
||||
46 000C 0103 DW 00103H ;1 configuration , 3 interface
|
||||
47 000D 3F00 DW 03F00H ;configuration string index
|
||||
48 000E 3FA0 DW 03FA0H ;configuration attributes (bus supply), Remote Wakeup
|
||||
49 000F 3FFA DW 03FFAH ;maxpower (500ma)
|
||||
50 0010 Interface_Descriptor:
|
||||
51 0010 Interface0_descriptor:
|
||||
52 0010 standard_audio_control_interface_control:
|
||||
53 0010 0409 DW 00409H ;descriptor type (interface descriptor) , size of descriptor (9 bytes)
|
||||
54 0011 0000 DW 00000H ;interface alternate setting , interface number (0 base)
|
||||
55 0012 0100 DW 00100H ;interface class(01H for audio class) , number of endpoint (1 end point)
|
||||
文件:DES.ASM 盛群编译器版本 2.86 页次2
|
||||
|
||||
56 0013 0001 DW 00001H ;interface protocol , interface sub-class (audio control)
|
||||
57 0014 3F00 DW 03F00H ;x , interface string index
|
||||
58 0015 class_specific_audio_control_interface_descriptor:
|
||||
59 0015 2409 DW 02409H ;descriptor type (CS_INTERFACE) , size of descriptor (9 bytes)
|
||||
60 0016 3F01 DW 03F01H ;descriptor subtype (Header)
|
||||
61 0017 0100 DW 00100H ;audio device class specification release number(1.00)
|
||||
62 0018 0028 DW 00028H ;total number of bytes for the class-specific audiocontrol interface descriptor
|
||||
63 0019 0101 DW 00101H ;streaming interface number belongs to audio control interface , the number of streaming interface
|
||||
64 001A input_terminal:
|
||||
65 001A 240C DW 0240CH ;descriptor type(CS_INTERFACE) , size of descriptor
|
||||
66 001B 0102 DW 00102H ;ID of this terminal(ID=1) , descriptor subtype(INPUT_TERMINAL)
|
||||
67 001C 0101 DW 00101H ;terminal type(USB streaming type)
|
||||
68 001D 0200 DW 00200H ;number of channel(two channel) , associate with output terminal
|
||||
69 001E 0003 DW 00003H ;channel config(Left/Right Front)
|
||||
70 001F 0000 DW 00000H ;channelname(unused) , terminal name(unused)
|
||||
71 0020 feature_unit:
|
||||
72 0020 240A DW 0240AH ;descriptor type(CS_INTERFACE) , size of descriptor(10 bytes)
|
||||
73 0021 0D06 DW 00D06H ;UnitID , descriptorSubtype(FEATURE_UNIT)
|
||||
74 0022 0101 DW 00101H ;control size(1) , SourceID(input terminal 01)
|
||||
75 0023 0003 DW 00003H ;D1(volume)control is enable foe channel 1 , D0(mute) D1(volume) is enable for channel 0
|
||||
76 0024 0000 DW 00000H ;index of this descriptor , D1(volume)control is enable for channel 2
|
||||
77 0025 output_terminal:
|
||||
78 0025 2409 DW 02409H ;descriptor type(CS_INTERFACE) , size of descriptor(9 bytes)
|
||||
79 0026 0303 DW 00303H ;terminal ID(03) , descriptorsubtype(OUTPUT_TERMINAL)
|
||||
80 0027 0301 DW 00301H ;terminal is speaker
|
||||
81 0028 0D00 DW 00D00H ;sourceID(feature unit ID=0D) , associate terminal
|
||||
82 0029 3F00 DW 03F00H ;index of this descriptor
|
||||
83 002A Interface1_descriptor:
|
||||
84 002A zero_bw:
|
||||
85 002A 0409 DW 00409H ;descriptor type(INTERFACE) , sizoe of descriptor
|
||||
86 002B 0001 DW 00001H ;index of ths setting(alternatesetting = 0) , index of this interface
|
||||
87 002C 0100 DW 00100H ;interface-class(AUDIO) , number of endpoint(0)
|
||||
88 002D 0002 DW 00002H ;interface protocol(unused) , InterfaceSubClass(AUDIO_STREAMING)
|
||||
89 002E 3F00 DW 03F00H ;index string of this descriptor
|
||||
90 002F audio_streaming:
|
||||
91 002F 0409 DW 00409H ;descriptor type(INTERFACE) , size of descriptor
|
||||
92 0030 0101 DW 00101H ;index of the setting(alternatesetting = 1) ,index of this interface
|
||||
93 0031 0101 DW 00101H ;interface-class(AUDIO) , number of endpoint(1)
|
||||
94 0032 0002 DW 00002H ;interface protocol(unused) , InterfaceSubClass(AUDIO_STREAMING)
|
||||
95 0033 3F00 DW 03F00H ;index string of this descriptor
|
||||
96 0034 class_specific_as_interface_desc:
|
||||
97 0034 2407 DW 02407H ;descriptor type(CS_INTERFACE) , size of descriptor
|
||||
98 0035 0101 DW 00101H ;terminalLink(Input terminal) , descriptor subtype(AS_GENERAL)
|
||||
99 0036 3F01 DW 03F01H ;interface delay(1)
|
||||
100 0037 0001 DW 00001H ;PCM format
|
||||
101 0038 format_type_descriptor:
|
||||
102 0038 240B DW 0240BH ;descriptor type(CS_INTERFACE) , size of descriptor
|
||||
103 0039 0102 DW 00102H ;FormatType(FORMAT_TYPE_I) , descriptorSubType(FORMAT_TYPE)
|
||||
104 003A 0202 DW 00202H ;SubFrameSize(2 byte per slot) , number of channel(2 channels)
|
||||
105 003B 0110 DW 00110H ;SamFreqType(support 1 type) , BitSolution(16 bits)
|
||||
106 003C 3F80 DW 03F80H ;Sample Frequency(48000 Hz)
|
||||
107 003D 00BB DW 000BBH ;
|
||||
108 003E end_point_descriptor:
|
||||
109 003E 0509 DW 00509H ;descriptor type(END_POINT) , size of descriptor
|
||||
110 003F 0902 DW 00902H ;endpoint attributes(adaptive,isochronous) , endpoint2(out direction)
|
||||
111 0040 00C0 DW 000C0H ;maxPacketSize(192 bytes)
|
||||
112 0041 0001 DW 00001H ;Refresh(0) , Interval(1ms)
|
||||
113 0042 3F00 DW 03F00H ;index string of this descriptor
|
||||
114 0043 class_specific_endpoint_descriptor:
|
||||
115 0043 2507 DW 02507H ;descriptor type(CS_ENDPOINT) , size of descriptor
|
||||
文件:DES.ASM 盛群编译器版本 2.86 页次3
|
||||
|
||||
116 0044 0001 DW 00001H ;Attributes(no sampling frequency , no pitch , no maxpackets control) , descriptorType(EP_GENERAL)
|
||||
117 0045 3F00 DW 03F00H ;LockedDelayUnit(unused)
|
||||
118 0046 0000 DW 00000H ;LockDelay(unused)
|
||||
119 0047 Interface2_descriptor:
|
||||
120 0047 HID_class:
|
||||
121 0047 0409 DW 00409H ;INTERFACE descriptor , Size of this descriptor
|
||||
122 0048 0002 DW 00002H ;Index of this string , index of this interface
|
||||
123 0049 0301 DW 00301H ;HID , 1 endpoint
|
||||
124 004A 0000 DW 00000H ;Unused , Non-Boot Device
|
||||
125 004B 3F00 DW 03F00H ;null string
|
||||
126 004C HID_Desc:
|
||||
127 004C 2109 DW 02109H ;HID , Size of this descriptor
|
||||
128 004D 0110 DW 00110H ;HID spec rev #1.10
|
||||
129 004E 0100 DW 00100H ;bNumDescriptor , bCountryCode
|
||||
130 004F 3F22 DW 03F22H ;Report Descriptor
|
||||
131 0050 ;====================================================================
|
||||
132 0050 ; Use ReportID , Report ID 1 = Volume HID control
|
||||
133 0050 ; Report ID 2 = Transform Other Data
|
||||
134 0050 ;====================================================================
|
||||
135 0050 IF UseReportID
|
||||
136 0050 DW 00016H ;67 bytes
|
||||
137 0050 ELSE
|
||||
138 0050 0016 DW 00016H
|
||||
139 0051 ENDIF
|
||||
140 0051
|
||||
141 0051 HID_end_point_descriptor:
|
||||
142 0051 0507 DW 00507H ;Endpoint descriptor , Length of this descriptor
|
||||
143 0052 0381 DW 00381H ;Interrupt , Endpoint 1 In direction
|
||||
144 0053 0008 DW 00008H ;wMaxPacketSize = 1 Bytes
|
||||
145 0054 3F30 DW 03F30H ;48ms Interval
|
||||
146 0055 end_config_desc_table:
|
||||
147 0055
|
||||
148 0055 hid_report_desc_table:
|
||||
149 0055 ;====================================================================
|
||||
150 0055 ; Use ReportID , Report ID 1 = Volume HID control
|
||||
151 0055 ; Report ID 2 = Transform Other Data
|
||||
152 0055 ;====================================================================
|
||||
153 0055 ;;vender defined
|
||||
154 0055 3F06 DW 03F06H ;//Usage Page(Global)
|
||||
155 0056 3F00 DW 03F00H
|
||||
156 0057 3FFF DW 03FFFH ;//Usage Page
|
||||
157 0058
|
||||
158 0058 0109 DW 00109H ;//Usage(Local 1 bytes)
|
||||
159 0059 01A1 DW 001A1H ;//collection(Main)
|
||||
160 005A ;input report
|
||||
161 005A ;; DW 03F19H
|
||||
162 005A ;; DW 03FA6H
|
||||
163 005A ;; DW 03F29H ;//Usage(Local)
|
||||
164 005A ;; DW 03FACH
|
||||
165 005A ;; DW 03F15H ;//Global Logical Minimum
|
||||
166 005A ;; DW 03F80H
|
||||
167 005A ;; DW 03F25H ;//Global Logical Maximum
|
||||
168 005A ;; DW 03F7FH
|
||||
169 005A ;; DW 00875H ;//Global Report Size 8 bits
|
||||
170 005A ;; DW 00795H ;//Global Report Count 7 (field)
|
||||
171 005A ;; DW 00281H ;//Main Input (Data,Variable,Absolute)
|
||||
172 005A ;output
|
||||
173 005A 0015 DW 00015H ;//LOGICAL MINIMUM (0)
|
||||
174 005B 3F25 DW 03F25H
|
||||
175 005C 3FFF DW 03FffH ;//LOGICAL MAXIMUM (FF)
|
||||
文件:DES.ASM 盛群编译器版本 2.86 页次4
|
||||
|
||||
176 005D 0019 DW 00019H ;//Usage Min (#)
|
||||
177 005E 0129 DW 00129H ;//Usage Max (#)
|
||||
178 005F 0895 DW 00895H ;//Report Count(8)
|
||||
179 0060 0875 DW 00875H ;//Report Size(8)
|
||||
180 0061 0291 DW 00291H ;//OUTPUT: (Data, Array)
|
||||
181 0062 3FC0 DW 03FC0H ;End Collection
|
||||
182 0063 end_hid_report_desc_table:
|
||||
183 0063
|
||||
184 0063 string_descriptor:
|
||||
185 0063 USBStringLanguageDescription:
|
||||
186 0063 0304 DW 00304h ; Length , Type (3=string)
|
||||
187 0064 0409 DW 00409h ; Language: English , Sub-language: US
|
||||
188 0065
|
||||
189 0065 imanufacturer_string: ;Vendor Name
|
||||
190 0065 USBStringDescription1:
|
||||
191 0065 0310 0048 DW 00310h, 00048h, 0004fh, 0004ch, 00054h, 00045h, 0004bh, 00020h ;HOLTEK
|
||||
004F 004C 0054 0045 004B 0020
|
||||
192 006D
|
||||
193 006D iproduct_string: ;Product Name
|
||||
194 006D USBStringDescription2:
|
||||
195 006D ;DW 00326h, 00042h, 0002Dh, 0004ch, 00049h, 0004Eh, 0004bh, 00020h ;B-LINK
|
||||
196 006D 0055 0053 DW 00055h, 00053h, 00042h, 00020h ;USB
|
||||
0042 0020
|
||||
197 0071 0041 0075 DW 00041h, 00075h, 00064h, 00069h, 0006fh, 00020h, 00020h ;Audio
|
||||
0064 0069 006F 0020 0020
|
||||
198 0078
|
||||
199 0078 isnumber_string: ;Serial Number
|
||||
200 0078 USBStringDescription3:
|
||||
201 0078 030A 0038 DW 0030Ah, 00038h, 00032h, 00031h, 00052h ;821R
|
||||
0032 0031 0052
|
||||
202 007D
|
||||
203 007D
|
||||
204 007D
|
||||
205 007D config_desc_length:
|
||||
206 007D 0087 DW 00087H
|
||||
207 007E
|
||||
208 007E report_desc_length:
|
||||
209 007E IF UseReportID
|
||||
210 007E DW 00016H
|
||||
211 007E ELSE
|
||||
212 007E 0016 DW 00016H
|
||||
213 007F ENDIF
|
||||
214 007F hid_desc_length:
|
||||
215 007F 0009 DW 00009H
|
||||
216 0080
|
||||
217 0080
|
||||
218 0080
|
||||
219 0080 Public control_read_table
|
||||
220 0080 Public device_desc_table
|
||||
221 0080 Public config_desc_table
|
||||
222 0080 Public end_config_desc_table
|
||||
223 0080 Public USBStringLanguageDescription
|
||||
224 0080 Public USBStringDescription1
|
||||
225 0080 Public USBStringDescription2
|
||||
226 0080 Public USBStringDescription3
|
||||
227 0080
|
||||
228 0080 Public HID_Desc
|
||||
229 0080 Public hid_report_desc_table
|
||||
230 0080 Public end_hid_report_desc_table
|
||||
231 0080
|
||||
文件:DES.ASM 盛群编译器版本 2.86 页次5
|
||||
|
||||
232 0080
|
||||
233 0080 Public config_desc_length
|
||||
234 0080 Public hid_desc_length
|
||||
235 0080 Public report_desc_length
|
||||
236 0080
|
||||
|
||||
|
||||
0 Errors
|
BIN
PRG/DES.OBJ
Normal file
BIN
PRG/DES.OBJ
Normal file
Binary file not shown.
1444
PRG/FUNCTION.LST
Normal file
1444
PRG/FUNCTION.LST
Normal file
File diff suppressed because it is too large
Load diff
BIN
PRG/FUNCTION.OBJ
Normal file
BIN
PRG/FUNCTION.OBJ
Normal file
Binary file not shown.
BIN
PRG/HT82A821R.CV
Normal file
BIN
PRG/HT82A821R.CV
Normal file
Binary file not shown.
BIN
PRG/HT82A821R.DBG
Normal file
BIN
PRG/HT82A821R.DBG
Normal file
Binary file not shown.
22
PRG/HT82A821R.MAK
Normal file
22
PRG/HT82A821R.MAK
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Generated by HT-IDE3000. DO NOT modify!
|
||||
E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\DES.OBJ : "E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\DES.ASM"
|
||||
HASMW32.EXE /NOLOGO @"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\~ASM17"
|
||||
E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\FUNCTION.OBJ : "E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\FUNCTION.ASM"
|
||||
HASMW32.EXE /NOLOGO @"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\~ASM18"
|
||||
E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MACRO.OBJ : "E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MACRO.ASM"
|
||||
HASMW32.EXE /NOLOGO @"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\~ASM19"
|
||||
E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MAIN.OBJ : "E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MAIN.ASM"
|
||||
HASMW32.EXE /NOLOGO @"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\~ASM20"
|
||||
:CheckBreak
|
||||
E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\HT82A821R.TSK : /
|
||||
"E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\DES.OBJ" /
|
||||
"E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\FUNCTION.OBJ" /
|
||||
"E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MACRO.OBJ" /
|
||||
"E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MAIN.OBJ"
|
||||
HLINKW32.EXE /NOLOGO @"C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\~LNK21.BAT"
|
||||
:CheckBreak
|
||||
HCODGEN32.EXE @"E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\HT82A821R.KKK"
|
||||
HLOAD32.EXE "E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\HT82A821R.OPT"
|
||||
:CheckBreak
|
||||
HLOAD32.EXE "E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\HT82A821R.TSK"
|
||||
:CheckBreak
|
271
PRG/HT82A821R.MAP
Normal file
271
PRG/HT82A821R.MAP
Normal file
|
@ -0,0 +1,271 @@
|
|||
|
||||
盛群连接器 版本7.5
|
||||
版权 盛群半导体公司 2002-2003
|
||||
|
||||
Input Object File: E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\DES.OBJ
|
||||
Input Object File: E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\FUNCTION.OBJ
|
||||
Input Object File: E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MACRO.OBJ
|
||||
Input Object File: E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MAIN.OBJ
|
||||
|
||||
Input Library File: C:\HT-IDE3000\LIB\MATH6.LIB
|
||||
|
||||
|
||||
Start End Length Class Name
|
||||
0000h 0338h 0339h CODE CODE (E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MAIN.OBJ)
|
||||
0339h 05fbh 02c3h CODE OLDMAIN (E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\FUNCTION.OBJ)
|
||||
0700h 077fh 0080h CODE DESCRIPT (E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\DES.OBJ)
|
||||
0040h 0072h 0033h DATA DATA (E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MAIN.OBJ)
|
||||
|
||||
|
||||
Indepentent Local Sections
|
||||
|
||||
Start End Length Class Name
|
||||
0073h 0073h 0000h ILOCAL DELAY (E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MAIN.OBJ)
|
||||
|
||||
Public Symbols Information
|
||||
Address Public by Name
|
||||
006bh[3] BFLAG_AUDIO_MUTE
|
||||
006bh[2] BFLAG_ENUM_READY
|
||||
004eh[5] BFLAG_FIFO_LEN0
|
||||
004eh[4] BFLAG_FIFO_READY
|
||||
004eh[6] BFLAG_RD_HTABLE
|
||||
004eh[3] BFLAG_REAL_CMD
|
||||
006bh[1] BFLAG_SCMD
|
||||
004eh[1] BFLAG_SETCONFIGURATION_READY
|
||||
004eh[2] BFLAG_SETINTERFACE_READY
|
||||
006bh[0] BFLAG_SET_ADDRESS
|
||||
004eh[7] BFLAG_WAIT_CONTROL_OUT
|
||||
006bh[4] BRMTWAKEUP
|
||||
006bh[5] B_WAKEUP
|
||||
044ah CHECK_REAL_CMD
|
||||
04b6h CLEARFEATURE
|
||||
04bfh CLEARFEATURE_ENDPOINT
|
||||
077dh CONFIG_DESC_LENGTH
|
||||
070ah CONFIG_DESC_TABLE
|
||||
040ch CONTROL_READ
|
||||
0700h CONTROL_READ_TABLE
|
||||
0067h DATA_COUNT
|
||||
0068h DATA_START
|
||||
05edh DELAY_3US
|
||||
0700h DEVICE_DESC_TABLE
|
||||
0755h END_CONFIG_DESC_TABLE
|
||||
0763h END_HID_REPORT_DESC_TABLE
|
||||
05e2h EXECUTE
|
||||
0339h FIFO0_RD_CHECK
|
||||
035dh FIFO0_WR_CHECK
|
||||
033fh FIFO1_RD_CHECK
|
||||
0363h FIFO1_WR_CHECK
|
||||
0345h FIFO2_RD_CHECK
|
||||
0369h FIFO2_WR_CHECK
|
||||
034bh FIFO3_RD_CHECK
|
||||
036fh FIFO3_WR_CHECK
|
||||
0351h FIFO4_RD_CHECK
|
||||
0375h FIFO4_WR_CHECK
|
||||
0357h FIFO5_RD_CHECK
|
||||
037bh FIFO5_WR_CHECK
|
||||
0065h FIFO_ADDR
|
||||
0059h FIFO_OUT1
|
||||
005ah FIFO_OUT2
|
||||
005bh FIFO_OUT3
|
||||
005ch FIFO_OUT4
|
||||
005dh FIFO_OUT5
|
||||
005eh FIFO_OUT6
|
||||
005fh FIFO_OUT7
|
||||
0060h FIFO_OUT8
|
||||
005ah FIFO_REQUEST
|
||||
0058h FIFO_SENDLEN
|
||||
0057h FIFO_SIZE
|
||||
0061h FIFO_TEMP
|
||||
0059h FIFO_TYPE
|
||||
005eh FIFO_WINDEXH
|
||||
005dh FIFO_WINDEXL
|
||||
0060h FIFO_WLENGTHH
|
||||
005fh FIFO_WLENGTHL
|
||||
005ch FIFO_WVALUEH
|
||||
005bh FIFO_WVALUEL
|
||||
0509h GETCONFIGURATION
|
||||
059eh GETCONFIGURATIONDESCRIPTOR
|
||||
056eh GETCUR
|
||||
04f1h GETDESCRIPTOR
|
||||
0598h GETDEVICEDESCRIPTOR
|
||||
0475h GETINTERFACE
|
||||
054dh GETMAX
|
||||
053ch GETMIN
|
||||
05f4h GETPIPEBIT
|
||||
055eh GETRES
|
||||
0484h GETSTATUS
|
||||
04a6h GETSTATUS_ENDPOINT
|
||||
0496h GETSTATUS_INTERFACE
|
||||
05a5h GETSTRINGDESCRIPTOR
|
||||
03fch GET_DESCRIPTOR_LENGTH
|
||||
074ch HID_DESC
|
||||
077fh HID_DESC_LENGTH
|
||||
0755h HID_REPORT_DESC_TABLE
|
||||
0066h LOOP_COUNTER
|
||||
0071h NCMDINDEX1
|
||||
039ah READ_FIFO0
|
||||
039eh READ_FIFO1
|
||||
03a2h READ_FIFO2
|
||||
03a6h READ_FIFO3
|
||||
03aah READ_FIFO4
|
||||
03aeh READ_FIFO5
|
||||
077eh REPORT_DESC_LENGTH
|
||||
05e7h SENDSTALL0
|
||||
03c7h SEND_HAND_SHAKE
|
||||
0451h SETADDRESS
|
||||
0464h SETCONFIGURATION
|
||||
052ah SETCUR
|
||||
04cch SETFEATURE
|
||||
04e5h SETFEATURE_ENDPOINT
|
||||
0597h SETIDLE
|
||||
046ch SETINTERFACE
|
||||
0518h SETREPORT
|
||||
011ch STAGEONE
|
||||
0765h USBSTRINGDESCRIPTION1
|
||||
076dh USBSTRINGDESCRIPTION2
|
||||
0778h USBSTRINGDESCRIPTION3
|
||||
0763h USBSTRINGLANGUAGEDESCRIPTION
|
||||
0064h USB_CONFIGURATION
|
||||
010fh USB_EP0_ISR_END
|
||||
0062h USB_INTERFACE
|
||||
0063h USB_INTERFACE_ALT
|
||||
00adh USB_ISR_END
|
||||
006fh VOLUMEH_SAVE
|
||||
0070h VOLUMEL_SAVE
|
||||
03d5h WRITE_FIFO0
|
||||
03d7h WRITE_FIFO1
|
||||
03d9h WRITE_FIFO2
|
||||
03dbh WRITE_FIFO3
|
||||
03ddh WRITE_FIFO4
|
||||
03dfh WRITE_FIFO5
|
||||
|
||||
Address Public by Value
|
||||
0057h FIFO_SIZE
|
||||
0058h FIFO_SENDLEN
|
||||
0059h FIFO_OUT1
|
||||
0059h FIFO_TYPE
|
||||
005ah FIFO_REQUEST
|
||||
005ah FIFO_OUT2
|
||||
005bh FIFO_OUT3
|
||||
005bh FIFO_WVALUEL
|
||||
005ch FIFO_WVALUEH
|
||||
005ch FIFO_OUT4
|
||||
005dh FIFO_OUT5
|
||||
005dh FIFO_WINDEXL
|
||||
005eh FIFO_WINDEXH
|
||||
005eh FIFO_OUT6
|
||||
005fh FIFO_OUT7
|
||||
005fh FIFO_WLENGTHL
|
||||
0060h FIFO_WLENGTHH
|
||||
0060h FIFO_OUT8
|
||||
0061h FIFO_TEMP
|
||||
0062h USB_INTERFACE
|
||||
0063h USB_INTERFACE_ALT
|
||||
0064h USB_CONFIGURATION
|
||||
0065h FIFO_ADDR
|
||||
0066h LOOP_COUNTER
|
||||
0067h DATA_COUNT
|
||||
0068h DATA_START
|
||||
006fh VOLUMEH_SAVE
|
||||
0070h VOLUMEL_SAVE
|
||||
0071h NCMDINDEX1
|
||||
00adh USB_ISR_END
|
||||
010fh USB_EP0_ISR_END
|
||||
011ch STAGEONE
|
||||
004eh[1] BFLAG_SETCONFIGURATION_READY
|
||||
004eh[2] BFLAG_SETINTERFACE_READY
|
||||
004eh[3] BFLAG_REAL_CMD
|
||||
004eh[4] BFLAG_FIFO_READY
|
||||
004eh[5] BFLAG_FIFO_LEN0
|
||||
004eh[6] BFLAG_RD_HTABLE
|
||||
004eh[7] BFLAG_WAIT_CONTROL_OUT
|
||||
0339h FIFO0_RD_CHECK
|
||||
033fh FIFO1_RD_CHECK
|
||||
0345h FIFO2_RD_CHECK
|
||||
034bh FIFO3_RD_CHECK
|
||||
0351h FIFO4_RD_CHECK
|
||||
0357h FIFO5_RD_CHECK
|
||||
006bh[0] BFLAG_SET_ADDRESS
|
||||
006bh[1] BFLAG_SCMD
|
||||
006bh[2] BFLAG_ENUM_READY
|
||||
006bh[3] BFLAG_AUDIO_MUTE
|
||||
006bh[4] BRMTWAKEUP
|
||||
035dh FIFO0_WR_CHECK
|
||||
006bh[5] B_WAKEUP
|
||||
0363h FIFO1_WR_CHECK
|
||||
0369h FIFO2_WR_CHECK
|
||||
036fh FIFO3_WR_CHECK
|
||||
0375h FIFO4_WR_CHECK
|
||||
037bh FIFO5_WR_CHECK
|
||||
039ah READ_FIFO0
|
||||
039eh READ_FIFO1
|
||||
03a2h READ_FIFO2
|
||||
03a6h READ_FIFO3
|
||||
03aah READ_FIFO4
|
||||
03aeh READ_FIFO5
|
||||
03c7h SEND_HAND_SHAKE
|
||||
03d5h WRITE_FIFO0
|
||||
03d7h WRITE_FIFO1
|
||||
03d9h WRITE_FIFO2
|
||||
03dbh WRITE_FIFO3
|
||||
03ddh WRITE_FIFO4
|
||||
03dfh WRITE_FIFO5
|
||||
03fch GET_DESCRIPTOR_LENGTH
|
||||
040ch CONTROL_READ
|
||||
044ah CHECK_REAL_CMD
|
||||
0451h SETADDRESS
|
||||
0464h SETCONFIGURATION
|
||||
046ch SETINTERFACE
|
||||
0475h GETINTERFACE
|
||||
0484h GETSTATUS
|
||||
0496h GETSTATUS_INTERFACE
|
||||
04a6h GETSTATUS_ENDPOINT
|
||||
04b6h CLEARFEATURE
|
||||
04bfh CLEARFEATURE_ENDPOINT
|
||||
04cch SETFEATURE
|
||||
04e5h SETFEATURE_ENDPOINT
|
||||
04f1h GETDESCRIPTOR
|
||||
0509h GETCONFIGURATION
|
||||
0518h SETREPORT
|
||||
052ah SETCUR
|
||||
053ch GETMIN
|
||||
054dh GETMAX
|
||||
055eh GETRES
|
||||
056eh GETCUR
|
||||
0597h SETIDLE
|
||||
0598h GETDEVICEDESCRIPTOR
|
||||
059eh GETCONFIGURATIONDESCRIPTOR
|
||||
05a5h GETSTRINGDESCRIPTOR
|
||||
05e2h EXECUTE
|
||||
05e7h SENDSTALL0
|
||||
05edh DELAY_3US
|
||||
05f4h GETPIPEBIT
|
||||
0700h CONTROL_READ_TABLE
|
||||
0700h DEVICE_DESC_TABLE
|
||||
070ah CONFIG_DESC_TABLE
|
||||
074ch HID_DESC
|
||||
0755h END_CONFIG_DESC_TABLE
|
||||
0755h HID_REPORT_DESC_TABLE
|
||||
0763h USBSTRINGLANGUAGEDESCRIPTION
|
||||
0763h END_HID_REPORT_DESC_TABLE
|
||||
0765h USBSTRINGDESCRIPTION1
|
||||
076dh USBSTRINGDESCRIPTION2
|
||||
0778h USBSTRINGDESCRIPTION3
|
||||
077dh CONFIG_DESC_LENGTH
|
||||
077eh REPORT_DESC_LENGTH
|
||||
077fh HID_DESC_LENGTH
|
||||
|
||||
|
||||
ROM Usage Statistics
|
||||
Size Used Percent
|
||||
0800h 067ch 81%
|
||||
|
||||
RAM Usage Statistics
|
||||
Size Used Percent
|
||||
00c0h 0033h 26%
|
||||
|
||||
Call Tree
|
||||
|
||||
HLINK:程序的开始执行点在程序段'CODE'(地址0)。定义在'E:\项目\USB 音频发射\USB Audio(PC)\COD\PRG\MAIN.OBJ' 文件中
|
||||
|
||||
错误总数:0 警告总数:0
|
BIN
PRG/HT82A821R.OPT
Normal file
BIN
PRG/HT82A821R.OPT
Normal file
Binary file not shown.
BIN
PRG/HT82A821R.OTP
Normal file
BIN
PRG/HT82A821R.OTP
Normal file
Binary file not shown.
BIN
PRG/HT82A821R.PRJ
Normal file
BIN
PRG/HT82A821R.PRJ
Normal file
Binary file not shown.
BIN
PRG/HT82A821R.TSK
Normal file
BIN
PRG/HT82A821R.TSK
Normal file
Binary file not shown.
BIN
PRG/HT82A821R.bin
Normal file
BIN
PRG/HT82A821R.bin
Normal file
Binary file not shown.
205
PRG/HT82A821R.dsw
Normal file
205
PRG/HT82A821R.dsw
Normal file
|
@ -0,0 +1,205 @@
|
|||
[BarState-Bar0]
|
||||
BarID=59392
|
||||
XPos=-2
|
||||
YPos=-2
|
||||
Docking=1
|
||||
MRUDockID=59419
|
||||
MRUDockLeftPos=-2
|
||||
MRUDockTopPos=-2
|
||||
MRUDockRightPos=553
|
||||
MRUDockBottomPos=30
|
||||
MRUFloatStyle=8196
|
||||
MRUFloatXPos=-1
|
||||
MRUFloatYPos=0
|
||||
[BarState-Bar1]
|
||||
BarID=59393
|
||||
[BarState-Bar2]
|
||||
BarID=59419
|
||||
Bars=15
|
||||
Bar#0=0
|
||||
Bar#1=59392
|
||||
Bar#2=0
|
||||
Bar#3=65552
|
||||
Bar#4=0
|
||||
Bar#5=65553
|
||||
Bar#6=0
|
||||
Bar#7=65555
|
||||
Bar#8=0
|
||||
Bar#9=65554
|
||||
Bar#10=0
|
||||
Bar#11=65559
|
||||
Bar#12=0
|
||||
Bar#13=65551
|
||||
Bar#14=0
|
||||
[BarState-Bar3]
|
||||
BarID=59422
|
||||
Bars=13
|
||||
Bar#0=0
|
||||
Bar#1=15
|
||||
Bar#2=0
|
||||
Bar#3=65552
|
||||
Bar#4=0
|
||||
Bar#5=65553
|
||||
Bar#6=0
|
||||
Bar#7=65555
|
||||
Bar#8=0
|
||||
Bar#9=65554
|
||||
Bar#10=0
|
||||
Bar#11=124928
|
||||
Bar#12=0
|
||||
[BarState-Bar4]
|
||||
BarID=59420
|
||||
Bars=14
|
||||
Bar#0=0
|
||||
Bar#1=65553
|
||||
Bar#2=65552
|
||||
Bar#3=0
|
||||
Bar#4=124928
|
||||
Bar#5=0
|
||||
Bar#6=65551
|
||||
Bar#7=0
|
||||
Bar#8=65555
|
||||
Bar#9=0
|
||||
Bar#10=65554
|
||||
Bar#11=0
|
||||
Bar#12=65559
|
||||
Bar#13=0
|
||||
[BarState-Bar5]
|
||||
BarID=59421
|
||||
Bars=15
|
||||
Bar#0=0
|
||||
Bar#1=19
|
||||
Bar#2=0
|
||||
Bar#3=16
|
||||
Bar#4=0
|
||||
Bar#5=17
|
||||
Bar#6=0
|
||||
Bar#7=18
|
||||
Bar#8=0
|
||||
Bar#9=23
|
||||
Bar#10=0
|
||||
Bar#11=65551
|
||||
Bar#12=0
|
||||
Bar#13=124928
|
||||
Bar#14=0
|
||||
[BarState-Bar6]
|
||||
BarID=19
|
||||
Visible=0
|
||||
XPos=-3
|
||||
YPos=-2
|
||||
Docking=1
|
||||
MRUDockID=0
|
||||
MRUDockLeftPos=-3
|
||||
MRUDockTopPos=-2
|
||||
MRUDockRightPos=97
|
||||
MRUDockBottomPos=525
|
||||
MRUFloatStyle=8196
|
||||
MRUFloatXPos=-1
|
||||
MRUFloatYPos=1008
|
||||
[BarState-Bar7]
|
||||
BarID=16
|
||||
XPos=-2
|
||||
YPos=-2
|
||||
Docking=1
|
||||
MRUDockID=0
|
||||
MRUDockLeftPos=-2
|
||||
MRUDockTopPos=-2
|
||||
MRUDockRightPos=191
|
||||
MRUDockBottomPos=923
|
||||
MRUFloatStyle=8196
|
||||
MRUFloatXPos=-1
|
||||
MRUFloatYPos=-1
|
||||
[BarState-Bar8]
|
||||
BarID=17
|
||||
XPos=189
|
||||
YPos=-2
|
||||
Docking=1
|
||||
MRUDockID=59421
|
||||
MRUDockLeftPos=189
|
||||
MRUDockTopPos=-2
|
||||
MRUDockRightPos=383
|
||||
MRUDockBottomPos=923
|
||||
MRUFloatStyle=8196
|
||||
MRUFloatXPos=-1
|
||||
MRUFloatYPos=1008
|
||||
[BarState-Bar9]
|
||||
BarID=18
|
||||
Visible=0
|
||||
XPos=727
|
||||
YPos=-2
|
||||
Docking=1
|
||||
MRUDockID=0
|
||||
MRUDockLeftPos=727
|
||||
MRUDockTopPos=-2
|
||||
MRUDockRightPos=944
|
||||
MRUDockBottomPos=775
|
||||
MRUFloatStyle=8196
|
||||
MRUFloatXPos=-1
|
||||
MRUFloatYPos=1008
|
||||
[BarState-Bar10]
|
||||
BarID=15
|
||||
Visible=0
|
||||
XPos=-2
|
||||
YPos=-2
|
||||
Docking=1
|
||||
MRUDockID=0
|
||||
MRUDockLeftPos=0
|
||||
MRUDockTopPos=0
|
||||
MRUDockRightPos=0
|
||||
MRUDockBottomPos=0
|
||||
MRUFloatStyle=8196
|
||||
MRUFloatXPos=-2147483648
|
||||
MRUFloatYPos=0
|
||||
[BarState-Bar11]
|
||||
BarID=23
|
||||
Visible=0
|
||||
XPos=-2
|
||||
YPos=-2
|
||||
Docking=1
|
||||
MRUDockID=0
|
||||
MRUDockLeftPos=-2
|
||||
MRUDockTopPos=-2
|
||||
MRUDockRightPos=98
|
||||
MRUDockBottomPos=923
|
||||
MRUFloatStyle=8196
|
||||
MRUFloatXPos=-2147483648
|
||||
MRUFloatYPos=0
|
||||
[BarState-Summary]
|
||||
Bars=10
|
||||
ScreenCX=1680
|
||||
ScreenCY=1050
|
||||
[SizingBarState-SCBar-19]
|
||||
sizeHorzCX=100
|
||||
sizeHorzCY=150
|
||||
sizeVertCX=100
|
||||
sizeVertCY=527
|
||||
sizeFloatCX=100
|
||||
sizeFloatCY=150
|
||||
[SizingBarState-SCBar-16]
|
||||
sizeHorzCX=100
|
||||
sizeHorzCY=150
|
||||
sizeVertCX=193
|
||||
sizeVertCY=925
|
||||
sizeFloatCX=100
|
||||
sizeFloatCY=150
|
||||
[SizingBarState-SCBar-17]
|
||||
sizeHorzCX=100
|
||||
sizeHorzCY=150
|
||||
sizeVertCX=194
|
||||
sizeVertCY=925
|
||||
sizeFloatCX=100
|
||||
sizeFloatCY=150
|
||||
[SizingBarState-SCBar-18]
|
||||
sizeHorzCX=100
|
||||
sizeHorzCY=150
|
||||
sizeVertCX=217
|
||||
sizeVertCY=777
|
||||
sizeFloatCX=100
|
||||
sizeFloatCY=150
|
||||
[SizingBarState-SCBar-15]
|
||||
sizeHorzCX=1684
|
||||
sizeHorzCY=150
|
||||
sizeVertCX=100
|
||||
sizeVertCY=150
|
||||
sizeFloatCX=100
|
||||
sizeFloatCY=150
|
404
PRG/MACRO.LST
Normal file
404
PRG/MACRO.LST
Normal file
|
@ -0,0 +1,404 @@
|
|||
文件:MACRO.ASM 盛群编译器版本 2.86 页次1
|
||||
|
||||
|
||||
1 0000 ;*******************************************************************************
|
||||
2 0000 ;*
|
||||
3 0000 ;* (c) Copyright 2004, Holtek Semiconductor Inc.
|
||||
4 0000 ;*
|
||||
5 0000 ;******************************************************************************/
|
||||
6 0000 ;*******************************************************************************
|
||||
7 0000 ;MODULE: main.asm
|
||||
8 0000
|
||||
9 0000 ;INITIAL: 11/12/2004
|
||||
10 0000
|
||||
11 0000 ;AUTHOR: C351 Ansonku.
|
||||
12 0000
|
||||
13 0000 ;NOTE: HT48RB4 16 bit operation
|
||||
14 0000
|
||||
15 0000 ;REVISION: First issue
|
||||
16 0000 ;*******************************************************************************
|
||||
17 0000 ;*******************************************************************************
|
||||
18 0000 ; 16 bit ADD with signed
|
||||
19 0000 ; use ADD16 XH,XL,YH,YL,ZH,ZL
|
||||
20 0000 ; operation
|
||||
21 0000 ; XH XL
|
||||
22 0000 ; +YH YL
|
||||
23 0000 ; --------------
|
||||
24 0000 ; ZH ZL
|
||||
25 0000 ;*******************************************************************************
|
||||
26 0000 ADD16 MACRO XH,XL,YH,YL,ZH,ZL
|
||||
27 0000 MOV A,XL
|
||||
28 0000 ADD A,YL
|
||||
29 0000 MOV ZL,A
|
||||
30 0000 MOV A,XH
|
||||
31 0000 ADC A,YH
|
||||
32 0000 MOV ZH,A
|
||||
33 0000 ENDM
|
||||
34 0000 ;*******************************************************************************
|
||||
35 0000 ; 16 bit ADD with unsigned
|
||||
36 0000 ; use ADD16 XH,XL,YL,ZH,ZL
|
||||
37 0000 ; operation
|
||||
38 0000 ; XH XL
|
||||
39 0000 ; + YL
|
||||
40 0000 ; --------------
|
||||
41 0000 ; ZH ZL
|
||||
42 0000 ;*******************************************************************************
|
||||
43 0000 ADD16U MACRO XH,XL,YL,ZH,ZL
|
||||
44 0000 mov a,xh
|
||||
45 0000 mov zh,a
|
||||
46 0000 MOV A,XL
|
||||
47 0000 ADD A,YL
|
||||
48 0000 SZ C
|
||||
49 0000 INC ZH
|
||||
50 0000 MOV ZL,A
|
||||
51 0000 ENDM
|
||||
52 0000
|
||||
53 0000
|
||||
54 0000 ;*******************************************************************************
|
||||
55 0000 ; 16 bit sub with signed
|
||||
56 0000 ; use SUB16 XH,XL,YH,YL,ZH,ZL
|
||||
57 0000 ; operation
|
||||
58 0000 ; XH XL
|
||||
59 0000 ; -YH YL
|
||||
文件:MACRO.ASM 盛群编译器版本 2.86 页次2
|
||||
|
||||
60 0000 ; --------------
|
||||
61 0000 ; ZH ZL
|
||||
62 0000 ;*******************************************************************************
|
||||
63 0000 SUB16 MACRO XH,XL,YH,YL,ZH,ZL
|
||||
64 0000 MOV A,XL
|
||||
65 0000 CLR C
|
||||
66 0000 SUB A,YL
|
||||
67 0000 MOV ZL,A
|
||||
68 0000 MOV A,XH
|
||||
69 0000 SBC A,YH
|
||||
70 0000 MOV ZH,A
|
||||
71 0000
|
||||
72 0000 ENDM
|
||||
73 0000
|
||||
74 0000
|
||||
75 0000 ;*******************************************************************************
|
||||
76 0000 ; 16 bit shift right with signed
|
||||
77 0000 ; use RR16 XH,XL,ZH,ZL
|
||||
78 0000 ; operation
|
||||
79 0000 ;*******************************************************************************
|
||||
80 0000 RR16 MACRO XH,XL,ZH,ZL
|
||||
81 0000 CLR C
|
||||
82 0000 MOV A,XH
|
||||
83 0000 AND A,80H
|
||||
84 0000 SNZ Z
|
||||
85 0000 SET C
|
||||
86 0000 RRCA XH
|
||||
87 0000 MOV ZH,A
|
||||
88 0000 RRCA XL
|
||||
89 0000 MOV ZL,A
|
||||
90 0000 ENDM
|
||||
91 0000 ;*******************************************************************************
|
||||
92 0000 ; 16 bit shift left with signed
|
||||
93 0000 ; use RL16 XH,XL,ZH,ZL
|
||||
94 0000 ; operation
|
||||
95 0000 ;*******************************************************************************
|
||||
96 0000 RL16 MACRO XH,XL,ZH,ZL
|
||||
97 0000 CLR C
|
||||
98 0000 SZ XL.7
|
||||
99 0000 SET C
|
||||
100 0000
|
||||
101 0000 RLCA XH
|
||||
102 0000 MOV ZH,A
|
||||
103 0000 CLR C
|
||||
104 0000 RLCA XL
|
||||
105 0000 MOV ZL,A
|
||||
106 0000 ENDM
|
||||
107 0000 ;*******************************************************************************
|
||||
108 0000 ; 16 bit shift left with signed
|
||||
109 0000 ; use RL16N XH,XL,ZH,ZL
|
||||
110 0000 ; operation
|
||||
111 0000 ;*******************************************************************************
|
||||
112 0000 RL16N MACRO XH,XL,ZH,ZL,N
|
||||
113 0000 ;MOV A,8
|
||||
114 0000 ;SUB A,N
|
||||
115 0000 ;mov a,Xl SHR A
|
||||
116 0000 ;mov zh,a
|
||||
117 0000 ;mov a,xh SHL N
|
||||
118 0000 ;orm a,zh
|
||||
119 0000 ENDM
|
||||
文件:MACRO.ASM 盛群编译器版本 2.86 页次3
|
||||
|
||||
120 0000 ;*******************************************************************************
|
||||
121 0000 ; 8 bit multiply with signed
|
||||
122 0000 ; use mul8 X,Y,ZH,ZL
|
||||
123 0000 ; operation
|
||||
124 0000 ;*******************************************************************************
|
||||
125 0000 Mul8 MACRO X,Y,ZH,ZL
|
||||
126 0000 Local Mul8_End
|
||||
127 0000 CLR operator1H ;sum
|
||||
128 0000 CLR operator1L
|
||||
129 0000 CLR operator2H ;multiply
|
||||
130 0000 CLR operator3H ;operator
|
||||
131 0000 CLR operator3L
|
||||
132 0000 mov A,Y
|
||||
133 0000 mov operator2L,A
|
||||
134 0000
|
||||
135 0000 SZ X.7
|
||||
136 0000 SET operator2H
|
||||
137 0000 Mul16_doloop:
|
||||
138 0000 MOV A,6
|
||||
139 0000 MOV Counter3,A
|
||||
140 0000 SDZ Counter3
|
||||
141 0000 JMP Mul8_End
|
||||
142 0000 SNZ X.Counter3
|
||||
143 0000 jmp Mul18_Next_Bit
|
||||
144 0000 RL16 operator2H,operator2L,operator3H,operator3L
|
||||
145 0000 ADD16 operator3H,operator3L,operator1H,operaotr1L,operator1H,operator1L
|
||||
146 0000
|
||||
147 0000
|
||||
148 0000 Mul18_Next_Bit:
|
||||
149 0000 JMP Mul16_doloop
|
||||
150 0000
|
||||
151 0000
|
||||
152 0000 Mul8_End:
|
||||
153 0000
|
||||
154 0000
|
||||
155 0000 ENDM
|
||||
156 0000
|
||||
157 0000 ;*******************************************************************************
|
||||
158 0000 ; 8 bit macro
|
||||
159 0000 ;*******************************************************************************
|
||||
160 0000 ;*******************************************************************************
|
||||
161 0000 ; 16 bit ADD with signed
|
||||
162 0000 ; use ADD16 X,Y,Z
|
||||
163 0000 ; operation
|
||||
164 0000 ; X
|
||||
165 0000 ; +Y
|
||||
166 0000 ; --------------
|
||||
167 0000 ; Z
|
||||
168 0000 ;*******************************************************************************
|
||||
169 0000 ADD8 MACRO X1,Y1,Z1
|
||||
170 0000 MOV A,X1
|
||||
171 0000 ADD A,Y1
|
||||
172 0000 MOV Z1,A
|
||||
173 0000 ENDM
|
||||
174 0000
|
||||
175 0000 ;*******************************************************************************
|
||||
176 0000 ; 16 bit sub with signed
|
||||
177 0000 ; use SUB16 X,Y,Z
|
||||
178 0000 ; operation
|
||||
179 0000 ; X
|
||||
文件:MACRO.ASM 盛群编译器版本 2.86 页次4
|
||||
|
||||
180 0000 ; -Y
|
||||
181 0000 ; --------------
|
||||
182 0000 ; Z
|
||||
183 0000 ;*******************************************************************************
|
||||
184 0000 SUB8 MACRO X1,Y1,Z1
|
||||
185 0000 MOV A,X1
|
||||
186 0000 SUB A,Y1
|
||||
187 0000 MOV Z1,A
|
||||
188 0000 ENDM
|
||||
189 0000
|
||||
190 0000 ;*******************************************************************************
|
||||
191 0000 ; 8 bit shift right with signed
|
||||
192 0000 ; use RR8 X,Z
|
||||
193 0000 ; operation
|
||||
194 0000 ;*******************************************************************************
|
||||
195 0000 RR8 MACRO X,Y
|
||||
196 0000 Local RR8_End,RR8_Modify_FF,RR8_Modify_FF_End
|
||||
197 0000 mov a,X
|
||||
198 0000 inc acc
|
||||
199 0000 SZ Z
|
||||
200 0000 jmp RR8_Modify_FF
|
||||
201 0000 jmp RR8_Modify_FF_End
|
||||
202 0000 RR8_Modify_FF:
|
||||
203 0000 clr Y
|
||||
204 0000 jmp RR8_End
|
||||
205 0000
|
||||
206 0000 RR8_Modify_FF_End:
|
||||
207 0000 CLR C
|
||||
208 0000 MOV A,X
|
||||
209 0000 AND A,80H
|
||||
210 0000 SNZ Z
|
||||
211 0000 SET C
|
||||
212 0000 RRCA X
|
||||
213 0000 MOV Y,A
|
||||
214 0000
|
||||
215 0000
|
||||
216 0000
|
||||
217 0000 RR8_End:
|
||||
218 0000 ENDM
|
||||
219 0000 ;*******************************************************************************
|
||||
220 0000 ; 8 bit shift left with signed
|
||||
221 0000 ; use RL16 X,Z
|
||||
222 0000 ; operation
|
||||
223 0000 ;*******************************************************************************
|
||||
224 0000 RL8 MACRO X,Y
|
||||
225 0000 CLR C
|
||||
226 0000 RLCA X
|
||||
227 0000 MOV Y,A
|
||||
228 0000 ENDM
|
||||
229 0000
|
||||
230 0000 ;*******************************************************************************
|
||||
231 0000 ; 8 bit abs
|
||||
232 0000 ; use ABS8 X,Y
|
||||
233 0000 ; operation
|
||||
234 0000 ;*******************************************************************************
|
||||
235 0000 ABS8 MACRO X,Y
|
||||
236 0000 Local ABS8_End
|
||||
237 0000
|
||||
238 0000 kmov y,x
|
||||
239 0000 mov a,x
|
||||
文件:MACRO.ASM 盛群编译器版本 2.86 页次5
|
||||
|
||||
240 0000 and a,80H
|
||||
241 0000 SZ Z
|
||||
242 0000 jmp ABS8_End
|
||||
243 0000 CPL y
|
||||
244 0000 INC y
|
||||
245 0000
|
||||
246 0000 ABS8_End:
|
||||
247 0000
|
||||
248 0000 ENDM
|
||||
249 0000
|
||||
250 0000
|
||||
251 0000
|
||||
252 0000
|
||||
253 0000
|
||||
254 0000
|
||||
255 0000 ;*******************************************************************************
|
||||
256 0000 ; kmov
|
||||
257 0000 ; use kmov destination,source
|
||||
258 0000 ; operation
|
||||
259 0000 ;*******************************************************************************
|
||||
260 0000 KMOV MACRO mem1,mem2
|
||||
261 0000 mov a,mem2
|
||||
262 0000 mov mem1,a
|
||||
263 0000 ENDM
|
||||
264 0000
|
||||
265 0000 KOR MACRO mem1,mem2
|
||||
266 0000 mov a,mem2
|
||||
267 0000 orm a,mem1
|
||||
268 0000 ENDM
|
||||
269 0000
|
||||
270 0000
|
||||
271 0000
|
||||
272 0000 ;*******************************************************************************
|
||||
273 0000 ; make oled column address
|
||||
274 0000 ; use oled_make_col_add source,MSB,LSB
|
||||
275 0000 ;
|
||||
276 0000 ;*******************************************************************************
|
||||
277 0000 oled_make_col_add macro mem1,mem2,mem3
|
||||
278 0000 mov a,0FH
|
||||
279 0000 AND a,mem1
|
||||
280 0000 mov mem3,a
|
||||
281 0000 mov a,70H
|
||||
282 0000 and a,mem1
|
||||
283 0000 mov mem2,a
|
||||
284 0000 clr c
|
||||
285 0000 rrc mem2
|
||||
286 0000 clr c
|
||||
287 0000 rrc mem2
|
||||
288 0000 clr c
|
||||
289 0000 rrc mem2
|
||||
290 0000 clr c
|
||||
291 0000 rrc mem2
|
||||
292 0000 set mem2.4
|
||||
293 0000
|
||||
294 0000 endm
|
||||
295 0000
|
||||
296 0000
|
||||
297 0000
|
||||
298 0000 ;***************************************
|
||||
299 0000
|
||||
文件:MACRO.ASM 盛群编译器版本 2.86 页次6
|
||||
|
||||
300 0000 XMOV MACRO mem2,mem1
|
||||
301 0000 mov a,mem1
|
||||
302 0000 mov mem2,a
|
||||
303 0000 ENDM
|
||||
304 0000 ;-------------------------------------
|
||||
305 0000 ;;Move ARG2->ARG1(move by bit)
|
||||
306 0000 xmov1 MACRO ARG1,ARG2
|
||||
307 0000 LOCAL xmov1_1,xmov1_end
|
||||
308 0000 sz ARG2
|
||||
309 0000 jmp xmov1_1
|
||||
310 0000 clr ARG1
|
||||
311 0000 jmp xmov1_end
|
||||
312 0000 xmov1_1:
|
||||
313 0000 set ARG1
|
||||
314 0000 xmov1_end:
|
||||
315 0000 ENDM
|
||||
316 0000 ;-------------------------------------
|
||||
317 0000 ;;if MEM2=MEM1 =>Skip Next Instruction
|
||||
318 0000 EQUJMP MACRO MEM2,MEM1
|
||||
319 0000 MOV A,MEM1
|
||||
320 0000 XOR A,MEM2
|
||||
321 0000 SNZ Z
|
||||
322 0000 ENDM
|
||||
323 0000 ;;------------------------
|
||||
324 0000
|
||||
325 0000 ;;if MEM2!=MEM1 =>Skip Next Instruction
|
||||
326 0000 NEJMP MACRO MEM2,MEM1
|
||||
327 0000 MOV A,MEM1
|
||||
328 0000 XOR A,MEM2
|
||||
329 0000 SZ Z
|
||||
330 0000 ENDM
|
||||
331 0000 ;;------------------------
|
||||
332 0000 ;;if (REG1==REG2) goto REG3
|
||||
333 0000 JLER MACRO REG1,REG2,REG3
|
||||
334 0000 mov a,REG1
|
||||
335 0000 sub a,REG2
|
||||
336 0000 sz z
|
||||
337 0000 jmp REG3
|
||||
338 0000 ENDM
|
||||
339 0000 ;**********************************************
|
||||
340 0000 ;MACRO: JLNR
|
||||
341 0000 ;PURPOSE: REG1 != REG2 goto REG3
|
||||
342 0000 ;**********************************************
|
||||
343 0000 JLNR MACRO REG1,REG2,REG3
|
||||
344 0000 mov a,REG1
|
||||
345 0000 sub a,REG2
|
||||
346 0000 snz z
|
||||
347 0000 jmp REG3
|
||||
348 0000 ENDM
|
||||
349 0000 ;;------------------------
|
||||
350 0000 ;;if MEM2>MEM1 =>Skip Next Instruction
|
||||
351 0000 LBRJ MACRO MEM2,MEM1
|
||||
352 0000 MOV A,MEM1
|
||||
353 0000 SUB A,MEM2
|
||||
354 0000 SZ C
|
||||
355 0000 ENDM
|
||||
356 0000 ;;------------------------
|
||||
357 0000
|
||||
358 0000 ;;if MEM2<=MEM1 =>Skip Next Instruction
|
||||
359 0000 LSERJ MACRO MEM2,MEM1
|
||||
文件:MACRO.ASM 盛群编译器版本 2.86 页次7
|
||||
|
||||
360 0000 MOV A,MEM1
|
||||
361 0000 SUB A,MEM2
|
||||
362 0000 SNZ C
|
||||
363 0000 ENDM
|
||||
364 0000 ;;------------------------
|
||||
365 0000
|
||||
366 0000 ;;if MEM2<MEM1 =>Skip Next Instruction
|
||||
367 0000 LSRJ MACRO MEM2,MEM1
|
||||
368 0000 MOV A,MEM2
|
||||
369 0000 SUB A,MEM1
|
||||
370 0000 SZ C
|
||||
371 0000 ENDM
|
||||
372 0000 ;;------------------------
|
||||
373 0000
|
||||
374 0000 ;;if MEM2>=MEM1 =>Skip Next Instruction
|
||||
375 0000 LBERJ MACRO MEM2,MEM1
|
||||
376 0000 MOV A,MEM2
|
||||
377 0000 SUB A,MEM1
|
||||
378 0000 SNZ C
|
||||
379 0000 ENDM
|
||||
380 0000 ;;------------------------
|
||||
381 0000
|
||||
382 0000 SWAPWORD MACRO DA
|
||||
383 0000 EQU (DA>>8)+(DA<<8)
|
||||
384 0000 ENDM
|
||||
385 0000 ;;------------------------
|
||||
386 0000
|
||||
|
||||
|
||||
0 Errors
|
BIN
PRG/MACRO.OBJ
Normal file
BIN
PRG/MACRO.OBJ
Normal file
Binary file not shown.
1885
PRG/MAIN.LST
Normal file
1885
PRG/MAIN.LST
Normal file
File diff suppressed because it is too large
Load diff
BIN
PRG/MAIN.OBJ
Normal file
BIN
PRG/MAIN.OBJ
Normal file
Binary file not shown.
183
PRG/QN8027DRIVER.LST
Normal file
183
PRG/QN8027DRIVER.LST
Normal file
|
@ -0,0 +1,183 @@
|
|||
文件:QN8027DRIVER.ASM 盛群编译器版本 2.86 页次1
|
||||
|
||||
|
||||
1 0000 ;;-----------------------------------------------
|
||||
2 0000 ;;function: QN8072_I2C_Read_Data
|
||||
3 0000 ;;in: mFMAddr
|
||||
4 0000 ;;out: mFMData
|
||||
5 0000 ;;description: Read AS6600 data
|
||||
6 0000 ;;-----------------------------------------------
|
||||
7 0000 QN8072_I2C_Read_Data:
|
||||
8 0000
|
||||
9 0000 L_I2CRd_Data_lp:
|
||||
10 0000 0001 CLR WDT
|
||||
11 0001
|
||||
12 0001 0000 CLR mFMACK
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 12 : 语法错误
|
||||
13 0002 2000 R CALL I2C_START
|
||||
14 0003 0F00 MOV A,QN8072_I2C_WRITE_ADDR
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 14 : 未定义的符号 'QN8072_I2C_WRITE_ADDR'
|
||||
15 0004 0000 MOV mFMSend,A ;;Set send data
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 15 : 语法错误
|
||||
16 0005 2000 R CALL Write_I2C_Byte ;;Send data
|
||||
17 0006
|
||||
18 0006 0F00 MOV A,mFMAddr
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 18 : 未定义的符号 'mFMAddr'
|
||||
19 0007 0000 MOV mFMSend,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 19 : 语法错误
|
||||
20 0008 2000 R CALL Write_I2C_Byte
|
||||
21 0009
|
||||
22 0009 0F00 MOV A,mFMACK
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 22 : 未定义的符号 'mFMACK'
|
||||
23 000A 0D00 OR A,0
|
||||
24 000B 0000 SNZ Z ;;Z=1,OK
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 24 : 语法错误
|
||||
25 000C 2800 R JMP L_I2CRd_Data_lp
|
||||
26 000D ;;
|
||||
27 000D L_I2CRd_Data_lp2:
|
||||
28 000D 0001 CLR WDT
|
||||
29 000E
|
||||
30 000E 0000 CLR mFMACK
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 30 : 语法错误
|
||||
31 000F 2000 R CALL I2C_START
|
||||
32 0010
|
||||
33 0010 0F00 MOV A,QN8072_I2C_READ_ADDR
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 33 : 未定义的符号 'QN8072_I2C_READ_ADDR'
|
||||
34 0011 0000 MOV mFMSend,A ;;Set send data
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 34 : 语法错误
|
||||
35 0012 2000 R CALL Write_I2C_Byte ;;Send data
|
||||
36 0013
|
||||
37 0013 0F00 MOV A,mFMACK
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 37 : 未定义的符号 'mFMACK'
|
||||
38 0014 0D00 OR A,0
|
||||
39 0015 0000 SNZ Z ;;Z=1,OK
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 39 : 语法错误
|
||||
40 0016 2800 R JMP L_I2CRd_Data_lp2
|
||||
41 0017
|
||||
42 0017 2000 R CALL Read_I2C_Byte
|
||||
43 0018 0000 MOV mFMData,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 43 : 语法错误
|
||||
44 0019 2000 R CALL sendNoAck
|
||||
45 001A
|
||||
46 001A 2000 R CALL I2C_STOP
|
||||
文件:QN8027DRIVER.ASM 盛群编译器版本 2.86 页次2
|
||||
|
||||
47 001B 0003 RET
|
||||
48 001C
|
||||
49 001C ;;-----------------------------------------------
|
||||
50 001C ;;function: QN8027_I2C_Write_Data
|
||||
51 001C ;;in: mFMAddr,mFMData
|
||||
52 001C ;;out:
|
||||
53 001C ;;description: Write QN8027 data
|
||||
54 001C ;;-----------------------------------------------
|
||||
55 001C QN8027_I2C_Write_Data:
|
||||
56 001C
|
||||
57 001C L_I2CWt_Data_lp:
|
||||
58 001C 0001 CLR WDT
|
||||
59 001D
|
||||
60 001D 0000 CLR mFMACK
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 60 : 语法错误
|
||||
61 001E 2000 R CALL I2C_START
|
||||
62 001F 0F00 MOV A,QN8072_I2C_WRITE_ADDR
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 62 : 未定义的符号 'QN8072_I2C_WRITE_ADDR'
|
||||
63 0020 0000 MOV mFMSend,A ;;Set send data
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 63 : 语法错误
|
||||
64 0021 2000 R CALL Write_I2C_Byte ;;Send data
|
||||
65 0022
|
||||
66 0022 0F00 MOV A,mFMAddr
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 66 : 未定义的符号 'mFMAddr'
|
||||
67 0023 0000 MOV mFMSend,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 67 : 语法错误
|
||||
68 0024 2000 R CALL Write_I2C_Byte
|
||||
69 0025
|
||||
70 0025 0F00 MOV A,mFMData
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 70 : 未定义的符号 'mFMData'
|
||||
71 0026 0000 MOV mFMSend,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 71 : 语法错误
|
||||
72 0027 2000 R CALL Write_I2C_Byte
|
||||
73 0028
|
||||
74 0028 2000 R CALL I2C_STOP
|
||||
75 0029
|
||||
76 0029 0F00 MOV A,mFMACK
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 76 : 未定义的符号 'mFMACK'
|
||||
77 002A 0D00 OR A,0
|
||||
78 002B 0000 SNZ Z ;;Z=1,OK
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 78 : 语法错误
|
||||
79 002C 2800 R JMP L_I2CWt_Data_lp
|
||||
80 002D
|
||||
81 002D 0003 RET
|
||||
82 002E
|
||||
83 002E ;;-----------------------------------------------
|
||||
84 002E ;;function: Delay5us
|
||||
85 002E ;;in: NULL
|
||||
86 002E ;;out: NULL
|
||||
87 002E ;;description: Delay 5us
|
||||
88 002E ;;-----------------------------------------------
|
||||
89 002E Delay5us:
|
||||
90 002E 2800 R JMP $+1
|
||||
91 002F 2800 R JMP $+1
|
||||
92 0030 2800 R JMP $+1
|
||||
93 0031 2800 R JMP $+1
|
||||
94 0032 2800 R JMP $+1
|
||||
95 0033 2800 R JMP $+1
|
||||
96 0034 2800 R JMP $+1
|
||||
97 0035 0000 NOP
|
||||
文件:QN8027DRIVER.ASM 盛群编译器版本 2.86 页次3
|
||||
|
||||
98 0036 0003 RET
|
||||
99 0037
|
||||
100 0037 ;;-----------------------------------------------
|
||||
101 0037 ;;function: sendAck
|
||||
102 0037 ;;in: NULL
|
||||
103 0037 ;;out: NULL
|
||||
104 0037 ;;description: Send ACK
|
||||
105 0037 ;;-----------------------------------------------
|
||||
106 0037 sendAck:
|
||||
107 0037 0000 CLR P_SDA ;;0
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 107 : 语法错误
|
||||
108 0038 2000 R CALL Delay5us
|
||||
109 0039
|
||||
110 0039 0000 SET P_SCL
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 110 : 语法错误
|
||||
111 003A 2000 R CALL Delay5us
|
||||
112 003B 0000 CLR P_SCL
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 112 : 语法错误
|
||||
113 003C 2000 R CALL Delay5us
|
||||
114 003D 0003 RET
|
||||
115 003E
|
||||
116 003E ;;-----------------------------------------------
|
||||
117 003E ;;function: sendNoAck
|
||||
118 003E ;;in: NULL
|
||||
119 003E ;;out: NULL
|
||||
120 003E ;;description: Send No ACK
|
||||
121 003E ;;-----------------------------------------------
|
||||
122 003E sendNoAck:
|
||||
123 003E 0000 SET P_SDA ;;1
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 123 : 语法错误
|
||||
124 003F 2000 R CALL Delay5us
|
||||
125 0040
|
||||
126 0040 0000 SET P_SCL
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 126 : 语法错误
|
||||
127 0041 2000 R CALL Delay5us
|
||||
128 0042 0000 CLR P_SCL
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 128 : 语法错误
|
||||
129 0043 2000 R CALL Delay5us
|
||||
130 0044 0003 RET
|
||||
131 0045
|
||||
132 0045 ;;-----------------------------------------------
|
||||
133 0045 ;;function: Read_I2C_Byte
|
||||
134 0045 ;;in: NULL
|
||||
135 0045 ;;out: ACC
|
||||
136 0045 ;;description: Read data
|
||||
137 0045 ;;-----------------------------------------------
|
||||
138 0045 Read_I2C_Byte:
|
||||
139 0045 0000 CLR mFMSend
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 139 : 语法错误
|
||||
140 0046 0F08 MOV A,8D
|
||||
141 0047 0000 MOV mFMCnt,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM 141 : 语法错误
|
||||
Error(A0052) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8027DRIVER.ASM : 错误过多
|
||||
|
||||
|
||||
|
||||
31 Errors
|
237
PRG/QN8027Driver.asm
Normal file
237
PRG/QN8027Driver.asm
Normal file
|
@ -0,0 +1,237 @@
|
|||
;;-----------------------------------------------
|
||||
;;function: QN8072_I2C_Read_Data
|
||||
;;in: mFMAddr
|
||||
;;out: mFMData
|
||||
;;description: Read AS6600 data
|
||||
;;-----------------------------------------------
|
||||
QN8072_I2C_Read_Data:
|
||||
|
||||
L_I2CRd_Data_lp:
|
||||
CLR WDT
|
||||
|
||||
CLR mFMACK
|
||||
CALL I2C_START
|
||||
MOV A,QN8072_I2C_WRITE_ADDR
|
||||
MOV mFMSend,A ;;Set send data
|
||||
CALL Write_I2C_Byte ;;Send data
|
||||
|
||||
MOV A,mFMAddr
|
||||
MOV mFMSend,A
|
||||
CALL Write_I2C_Byte
|
||||
|
||||
MOV A,mFMACK
|
||||
OR A,0
|
||||
SNZ Z ;;Z=1,OK
|
||||
JMP L_I2CRd_Data_lp
|
||||
;;
|
||||
L_I2CRd_Data_lp2:
|
||||
CLR WDT
|
||||
|
||||
CLR mFMACK
|
||||
CALL I2C_START
|
||||
|
||||
MOV A,QN8072_I2C_READ_ADDR
|
||||
MOV mFMSend,A ;;Set send data
|
||||
CALL Write_I2C_Byte ;;Send data
|
||||
|
||||
MOV A,mFMACK
|
||||
OR A,0
|
||||
SNZ Z ;;Z=1,OK
|
||||
JMP L_I2CRd_Data_lp2
|
||||
|
||||
CALL Read_I2C_Byte
|
||||
MOV mFMData,A
|
||||
CALL sendNoAck
|
||||
|
||||
CALL I2C_STOP
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: QN8027_I2C_Write_Data
|
||||
;;in: mFMAddr,mFMData
|
||||
;;out:
|
||||
;;description: Write QN8027 data
|
||||
;;-----------------------------------------------
|
||||
QN8027_I2C_Write_Data:
|
||||
|
||||
L_I2CWt_Data_lp:
|
||||
CLR WDT
|
||||
|
||||
CLR mFMACK
|
||||
CALL I2C_START
|
||||
MOV A,QN8072_I2C_WRITE_ADDR
|
||||
MOV mFMSend,A ;;Set send data
|
||||
CALL Write_I2C_Byte ;;Send data
|
||||
|
||||
MOV A,mFMAddr
|
||||
MOV mFMSend,A
|
||||
CALL Write_I2C_Byte
|
||||
|
||||
MOV A,mFMData
|
||||
MOV mFMSend,A
|
||||
CALL Write_I2C_Byte
|
||||
|
||||
CALL I2C_STOP
|
||||
|
||||
MOV A,mFMACK
|
||||
OR A,0
|
||||
SNZ Z ;;Z=1,OK
|
||||
JMP L_I2CWt_Data_lp
|
||||
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: Delay5us
|
||||
;;in: NULL
|
||||
;;out: NULL
|
||||
;;description: Delay 5us
|
||||
;;-----------------------------------------------
|
||||
Delay5us:
|
||||
JMP $+1
|
||||
JMP $+1
|
||||
JMP $+1
|
||||
JMP $+1
|
||||
JMP $+1
|
||||
JMP $+1
|
||||
JMP $+1
|
||||
NOP
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: sendAck
|
||||
;;in: NULL
|
||||
;;out: NULL
|
||||
;;description: Send ACK
|
||||
;;-----------------------------------------------
|
||||
sendAck:
|
||||
CLR P_SDA ;;0
|
||||
CALL Delay5us
|
||||
|
||||
SET P_SCL
|
||||
CALL Delay5us
|
||||
CLR P_SCL
|
||||
CALL Delay5us
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: sendNoAck
|
||||
;;in: NULL
|
||||
;;out: NULL
|
||||
;;description: Send No ACK
|
||||
;;-----------------------------------------------
|
||||
sendNoAck:
|
||||
SET P_SDA ;;1
|
||||
CALL Delay5us
|
||||
|
||||
SET P_SCL
|
||||
CALL Delay5us
|
||||
CLR P_SCL
|
||||
CALL Delay5us
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: Read_I2C_Byte
|
||||
;;in: NULL
|
||||
;;out: ACC
|
||||
;;description: Read data
|
||||
;;-----------------------------------------------
|
||||
Read_I2C_Byte:
|
||||
CLR mFMSend
|
||||
MOV A,8D
|
||||
MOV mFMCnt,A
|
||||
|
||||
SET P_SDAC ;;SDA input
|
||||
L_ReadI2C_lp:
|
||||
CLR C
|
||||
RLC mFMSend
|
||||
|
||||
CLR P_SCL
|
||||
CALL Delay5us
|
||||
SET P_SCL
|
||||
CALL Delay5us
|
||||
|
||||
SZ P_SDA
|
||||
SET mFMSend.0 ;;save data
|
||||
|
||||
SDZ mFMCnt
|
||||
JMP L_ReadI2C_lp
|
||||
|
||||
CLR P_SCL
|
||||
CLR P_SDAC ;;SDA Output
|
||||
CALL Delay5us
|
||||
|
||||
MOV A,mFMSend
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: Write_I2C_Byte
|
||||
;;in: mFMSend
|
||||
;;out: mFMAck
|
||||
;;description: Write data
|
||||
;;-----------------------------------------------
|
||||
Write_I2C_Byte:
|
||||
MOV A,8D
|
||||
MOV mFMCnt,A
|
||||
|
||||
L_WriteI2C_lp:
|
||||
SZ mFMSend.7
|
||||
SET P_SDA
|
||||
SNZ mFMSend.7
|
||||
CLR P_SDA
|
||||
|
||||
RLC mFMSend ;;Next bit
|
||||
|
||||
CALL Delay5us
|
||||
SET P_SCL
|
||||
CALL Delay5us
|
||||
CLR P_SCL
|
||||
|
||||
SDZ mFMCnt
|
||||
JMP L_WriteI2C_lp ;;Send data
|
||||
|
||||
;;Get ACK
|
||||
CALL Delay5us
|
||||
SET P_SDAC ;;SDA input
|
||||
CALL Delay5us
|
||||
SET P_SCL
|
||||
CALL Delay5us
|
||||
SZ P_SDA
|
||||
INC mFMACK ;;ACK=1,error
|
||||
|
||||
CLR P_SCL
|
||||
CALL Delay5us
|
||||
CLR P_SDAC ;;SDA output
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: I2C_START
|
||||
;;in: NULL
|
||||
;;out: NULL
|
||||
;;description: IIC Start
|
||||
;;-----------------------------------------------
|
||||
I2C_START:
|
||||
SET P_SDA ;;Dat H
|
||||
CALL Delay5us
|
||||
SET P_SCL ;;CLK H
|
||||
CALL Delay5us
|
||||
CLR P_SDA ;;Dat L
|
||||
CALL Delay5us
|
||||
CLR P_SCL ;;CLK L
|
||||
CALL Delay5us
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: I2C_Stop
|
||||
;;in: NULL
|
||||
;;out: NULL
|
||||
;;description: IIC Stop
|
||||
;;-----------------------------------------------
|
||||
I2C_Stop:
|
||||
CLR P_SDA ;;Dat L
|
||||
CALL Delay5us
|
||||
SET P_SCL ;;CLK L
|
||||
CALL Delay5us
|
||||
SET P_SDA ;;Dat H
|
||||
CALL Delay5us
|
||||
RET
|
||||
|
141
PRG/QN8072SUB.LST
Normal file
141
PRG/QN8072SUB.LST
Normal file
|
@ -0,0 +1,141 @@
|
|||
文件:QN8072SUB.ASM 盛群编译器版本 2.86 页次1
|
||||
|
||||
|
||||
1 0000 ;;-----------------------------------------------
|
||||
2 0000 ;;function: QN8072Init
|
||||
3 0000 ;;in: mFreqL,mFreqH
|
||||
4 0000 ;;out: NULL
|
||||
5 0000 ;;description: Initial QN8027 Configer
|
||||
6 0000 ;;-----------------------------------------------
|
||||
7 0000 QN8072Init:
|
||||
8 0000 ;;
|
||||
9 0000 0F04 MOV A,04H
|
||||
10 0001 0000 MOV mFMAddr,a ;;VGA
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 10 : 语法错误
|
||||
11 0002 0F00 MOV A,mQNReg[4] ;;58H
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 11 : 未定义的符号 'mQNReg'
|
||||
12 0003 0000 MOV mFMData,A ;;12M/101/2db/5k
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 12 : 语法错误
|
||||
13 0004 2000 CALL QN8027_I2C_Write_Data
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 13 : 未定义的符号 'QN8027_I2C_Write_Data'
|
||||
14 0005
|
||||
15 0005 2000 R CALL Delay20ms
|
||||
16 0006 ;;
|
||||
17 0006 0F00 MOV A,00H
|
||||
18 0007 0000 MOV mFMAddr,a ;;SYSTEM
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 18 : 语法错误
|
||||
19 0008 0F00 MOV A,mQNReg[0] ;;51H
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 19 : 未定义的符号 'mQNReg'
|
||||
20 0009 0000 MOV mFMData,A ;;MONO/NO MUTE
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 20 : 语法错误
|
||||
21 000A 2000 CALL QN8027_I2C_Write_Data
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 21 : 未定义的符号 'QN8027_I2C_Write_Data'
|
||||
22 000B
|
||||
23 000B 2000 R CALL Delay20ms
|
||||
24 000C ;;
|
||||
25 000C 0000 CLR mQNReg[0].6
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 25 : 语法错误
|
||||
26 000D 0F00 MOV A,00H
|
||||
27 000E 0000 MOV mFMAddr,a ;;SYSTEM
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 27 : 语法错误
|
||||
28 000F 0F00 MOV A,mQNReg[0] ;;51H
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 28 : 未定义的符号 'mQNReg'
|
||||
29 0010 0000 MOV mFMData,A ;;MONO/NO MUTE
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 29 : 语法错误
|
||||
30 0011 2000 CALL QN8027_I2C_Write_Data
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 30 : 未定义的符号 'QN8027_I2C_Write_Data'
|
||||
31 0012
|
||||
32 0012 0F18 MOV A,18H
|
||||
33 0013 0000 MOV mFMAddr,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 33 : 语法错误
|
||||
34 0014 0FE4 MOV A,0E4H
|
||||
35 0015 0000 MOV mFMData,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 35 : 语法错误
|
||||
36 0016 2000 CALL QN8027_I2C_Write_Data
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 36 : 未定义的符号 'QN8027_I2C_Write_Data'
|
||||
37 0017
|
||||
38 0017 0F1B MOV A,1bH
|
||||
39 0018 0000 MOV mFMAddr,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 39 : 语法错误
|
||||
40 0019 0FF0 MOV A,0f0H
|
||||
41 001A 0000 MOV mFMData,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 41 : 语法错误
|
||||
文件:QN8072SUB.ASM 盛群编译器版本 2.86 页次2
|
||||
|
||||
42 001B 2000 CALL QN8027_I2C_Write_Data
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 42 : 未定义的符号 'QN8027_I2C_Write_Data'
|
||||
43 001C
|
||||
44 001C 0000 SET mQNReg[0].5 ;;Enter transmit mode
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 44 : 语法错误
|
||||
45 001D 2000 R CALL QN8072FreqSet ;;Set fre
|
||||
46 001E
|
||||
47 001E 0F02 MOV A,02H
|
||||
48 001F 0000 MOV mFMAddr,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 48 : 语法错误
|
||||
49 0020 0FE9 MOV A,0e9H
|
||||
50 0021 0000 MOV mFMData,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 50 : 语法错误
|
||||
51 0022 2000 CALL QN8027_I2C_Write_Data
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 51 : 未定义的符号 'QN8027_I2C_Write_Data'
|
||||
52 0023
|
||||
53 0023 0F04 MOV A,04H
|
||||
54 0024 0000 MOV mFMAddr,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 54 : 语法错误
|
||||
55 0025 0F42 MOV A,42H
|
||||
56 0026 0000 MOV mFMData,A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 56 : 语法错误
|
||||
57 0027 2000 CALL QN8027_I2C_Write_Data
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 57 : 未定义的符号 'QN8027_I2C_Write_Data'
|
||||
58 0028
|
||||
59 0028 0003 RET
|
||||
60 0029
|
||||
61 0029 ;;-----------------------------------------------
|
||||
62 0029 ;;function: QN8072FreqSet
|
||||
63 0029 ;;in: mFreqL,mFreqH
|
||||
64 0029 ;;out: NULL
|
||||
65 0029 ;;description: Set QN8072 Freq
|
||||
66 0029 ;; Frf = (76 + 0.05*Channel) -> Channel = (Frf-76)/0.05
|
||||
67 0029 ;;-----------------------------------------------
|
||||
68 0029 QN8072FreqSet:
|
||||
69 0029 ;; CLR INTC0.@INTC0_EMI ;Global interrupt
|
||||
70 0029 ;; CLR data0
|
||||
71 0029 ;; CLR data1
|
||||
72 0029 ;;
|
||||
73 0029 ;; MOV A,mFreqL
|
||||
74 0029 ;; SUB A,0B0H
|
||||
75 0029 ;; MOV data0,A
|
||||
76 0029 ;; MOV A,mFreqH
|
||||
77 0029 ;; SBC A,1DH
|
||||
78 0029 ;; MOV data1,A ;;(Freq - 7600)
|
||||
79 0029 ;;
|
||||
80 0029 ;; MOV A,05H
|
||||
81 0029 ;; MOV data5,A
|
||||
82 0029 ;; CLR data4
|
||||
83 0029 ;; CALL unbin_div_16 ;;(Freq - 7600)/5 -> to1to0
|
||||
84 0029 ;;
|
||||
85 0029 ;; MOV A,03H
|
||||
86 0029 ;; ANDM A,to1
|
||||
87 0029 ;; MOV A,0FCH
|
||||
88 0029 ;; ANDM A,mQNReg[0]
|
||||
89 0029 ;; MOV A,to1
|
||||
90 0029 ;; ORM A,mQNReg[0]
|
||||
91 0029 ;; MOV A,to0
|
||||
92 0029 ;; MOV mQNReg[1],A
|
||||
93 0029 ;;
|
||||
文件:QN8072SUB.ASM 盛群编译器版本 2.86 页次3
|
||||
|
||||
94 0029
|
||||
95 0029 0F00 MOV A,cFreqDefL
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 95 : 未定义的符号 'cFreqDefL'
|
||||
96 002A 0000 MOV mQNReg[1],A
|
||||
Error(A0024) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 96 : 语法错误
|
||||
97 002B 0F00 MOV A,mQNReg[0]
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 97 : 未定义的符号 'mQNReg'
|
||||
98 002C 0EFC AND A,0FCH
|
||||
99 002D 0D00 OR A,cFreqDefH
|
||||
Error(A0005) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM 99 : 未定义的符号 'cFreqDefH'
|
||||
Error(A0052) E:\项目\USB 音频发射\USB AUDIO(PC)\COD\PRG\QN8072SUB.ASM : 错误过多
|
||||
|
||||
|
||||
|
||||
31 Errors
|
298
PRG/QN8072Sub.asm
Normal file
298
PRG/QN8072Sub.asm
Normal file
|
@ -0,0 +1,298 @@
|
|||
;;-----------------------------------------------
|
||||
;;function: QN8072Init
|
||||
;;in: mFreqL,mFreqH
|
||||
;;out: NULL
|
||||
;;description: Initial QN8027 Configer
|
||||
;;-----------------------------------------------
|
||||
QN8072Init:
|
||||
;;
|
||||
MOV A,03H
|
||||
MOV mFMAddr,a ;;crystal
|
||||
MOV A,mQNReg[3] ;;50H
|
||||
MOV mFMData,A ;;digital clock for XTAL1
|
||||
CALL QN8027_I2C_Write_Data
|
||||
;;
|
||||
MOV A,04H
|
||||
MOV mFMAddr,a ;;VGA
|
||||
MOV A,mQNReg[4] ;;58H
|
||||
MOV mFMData,A ;;12M/101/2db/5k
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
CALL Delay20ms
|
||||
;;
|
||||
MOV A,00H
|
||||
MOV mFMAddr,a ;;SYSTEM
|
||||
MOV A,mQNReg[0] ;;51H
|
||||
MOV mFMData,A ;;MONO/NO MUTE
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
CALL Delay20ms
|
||||
;;
|
||||
CLR mQNReg[0].6
|
||||
MOV A,00H
|
||||
MOV mFMAddr,a ;;SYSTEM
|
||||
MOV A,mQNReg[0] ;;51H
|
||||
MOV mFMData,A ;;MONO/NO MUTE
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
MOV A,18H
|
||||
MOV mFMAddr,A
|
||||
MOV A,0E4H
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
MOV A,1bH
|
||||
MOV mFMAddr,A
|
||||
MOV A,0f0H
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
SET mQNReg[0].5 ;;Enter transmit mode
|
||||
CALL QN8072FreqSet ;;Set fre
|
||||
|
||||
MOV A,02H
|
||||
MOV mFMAddr,A
|
||||
MOV A,0e9H
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
MOV A,04H
|
||||
MOV mFMAddr,A
|
||||
MOV A,42H
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: QN8072FreqSet
|
||||
;;in: mFreqL,mFreqH
|
||||
;;out: NULL
|
||||
;;description: Set QN8072 Freq
|
||||
;; Frf = (76 + 0.05*Channel) -> Channel = (Frf-76)/0.05
|
||||
;;-----------------------------------------------
|
||||
QN8072FreqSet:
|
||||
;; CLR INTC0.@INTC0_EMI ;Global interrupt
|
||||
;; CLR data0
|
||||
;; CLR data1
|
||||
;;
|
||||
;; MOV A,mFreqL
|
||||
;; SUB A,0B0H
|
||||
;; MOV data0,A
|
||||
;; MOV A,mFreqH
|
||||
;; SBC A,1DH
|
||||
;; MOV data1,A ;;(Freq - 7600)
|
||||
;;
|
||||
;; MOV A,05H
|
||||
;; MOV data5,A
|
||||
;; CLR data4
|
||||
;; CALL unbin_div_16 ;;(Freq - 7600)/5 -> to1to0
|
||||
;;
|
||||
;; MOV A,03H
|
||||
;; ANDM A,to1
|
||||
;; MOV A,0FCH
|
||||
;; ANDM A,mQNReg[0]
|
||||
;; MOV A,to1
|
||||
;; ORM A,mQNReg[0]
|
||||
;; MOV A,to0
|
||||
;; MOV mQNReg[1],A
|
||||
;;
|
||||
|
||||
MOV A,cFreqDefL
|
||||
MOV mQNReg[1],A
|
||||
MOV A,mQNReg[0]
|
||||
AND A,0FCH
|
||||
OR A,cFreqDefH
|
||||
MOV mQNReg[0],A ;;Set define freq
|
||||
|
||||
MOV A,00H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[0]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
MOV A,01H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[1]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
;; SET INTC0.@INTC0_EMI ;Global interrupt
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: Delay20ms
|
||||
;;in: NULL
|
||||
;;out: NULL
|
||||
;;description: Delay 20ms
|
||||
;;-----------------------------------------------
|
||||
Delay20ms:
|
||||
MOV A,200D
|
||||
MOV mMK1,A
|
||||
|
||||
L_Dly20ms_1:
|
||||
MOV A,100D
|
||||
MOV mMK0,A
|
||||
CLR WDT
|
||||
|
||||
SDZ mMK0
|
||||
JMP $-1
|
||||
NOP ;;3*100 = 100us
|
||||
|
||||
SDZ mMK1
|
||||
JMP L_Dly20ms_1
|
||||
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
;;function: QN8027
|
||||
;;in: FIFO_out1~FIFO_out8
|
||||
;;out: NULL
|
||||
;;description: deal QN8027 Data from EP1
|
||||
;;-----------------------------------------------
|
||||
QN8027:
|
||||
;;Type check (main or set)
|
||||
MOV A,cFMUSBType_Main
|
||||
XOR A,FIFO_out2
|
||||
SZ Z
|
||||
JMP L_FMType_Main ;;Main data
|
||||
|
||||
MOV A,cFMUSBType_Set
|
||||
XOR A,FIFO_out2
|
||||
SZ Z
|
||||
JMP L_FMType_Set ;;Set data
|
||||
JMP L_QN8027_end
|
||||
|
||||
;;-----------------------------------------------
|
||||
L_FMType_Main:
|
||||
;;FIFO6 is Key
|
||||
SZ FIFO_out6.@FMKeyTun
|
||||
CALL L_FMFun_FMFreSet
|
||||
|
||||
SZ FIFO_out6.@FMKeyOn
|
||||
CALL L_FMFun_FMWork
|
||||
|
||||
SZ FIFO_out6.@FMKeyOff
|
||||
CALL L_FMFun_FMIdle
|
||||
|
||||
SZ FIFO_out6.@FMKeyMute
|
||||
CALL L_FMFun_FMMute
|
||||
|
||||
SZ FIFO_out6.@FMKeyNoMute
|
||||
CALL L_FMFun_FMNoMute
|
||||
|
||||
;;FIFO5 is PAC-VALUE(0x10)
|
||||
SNZ mQNReg[0].5
|
||||
JMP L_QN8027_end ;;Idle mode
|
||||
|
||||
MOV A,FIFO_out5
|
||||
MOV mFMData,A
|
||||
MOV A,10H
|
||||
MOV mFMAddr,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
;;In idle and work for PA-ok
|
||||
;; CALL L_FMFun_FMMute ;;Mute
|
||||
;; CALL L_FMFun_FMIdle
|
||||
;; CALL L_FMFun_FMWork
|
||||
;; SZ FIFO_out6.@FMKeyNoMute
|
||||
;; CALL L_FMFun_FMNoMute
|
||||
JMP L_QN8027_end
|
||||
|
||||
;;
|
||||
L_FMFun_FMNoMute:
|
||||
CLR mQNReg[0].3 ;;Not mute
|
||||
JMP $+2
|
||||
L_FMFun_FMMute:
|
||||
SET mQNReg[0].3
|
||||
|
||||
MOV A,00H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[0]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data ;;Set Mute/No Mute
|
||||
;; JMP L_QN8027_end
|
||||
RET
|
||||
|
||||
;;
|
||||
L_FMFun_FMIdle:
|
||||
SET P_LED
|
||||
CLR mQNReg[0].5 ;;Idle mode
|
||||
JMP $+3
|
||||
L_FMFun_FMWork:
|
||||
CLR P_LED
|
||||
SET mQNReg[0].5 ;;Work mode
|
||||
|
||||
MOV A,00H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[0]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data ;;Set Idle/Work
|
||||
;; JMP L_QN8027_end
|
||||
RET
|
||||
|
||||
;;
|
||||
L_FMFun_FMFreSet:
|
||||
;;FIFO3/4 is Freq
|
||||
MOV A,FIFO_out4
|
||||
MOV mQNReg[1],A
|
||||
MOV A,0FCH
|
||||
ANDM A,mQNReg[0]
|
||||
MOV A,FIFO_out3
|
||||
AND A,03H
|
||||
ORM A,mQNReg[0]
|
||||
|
||||
MOV A,00H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[0]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
|
||||
MOV A,01H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[1]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data
|
||||
;; JMP L_QN8027_end
|
||||
RET
|
||||
|
||||
;;-----------------------------------------------
|
||||
L_FMType_Set:
|
||||
;;FIFO_out3 is TX-GAIN
|
||||
MOV A,mQNReg[4]
|
||||
AND A,8CH ;;Set GVGA & RIN(GVGA = 000/RIN=11 --> GVGA=101/RIN=11 --> GVGA=000/RIN=10 --> GVGA=101/RIN=0)
|
||||
OR A,FIFO_out3
|
||||
MOV mQNReg[4],A
|
||||
|
||||
MOV A,04H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[4]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data ;;Set TX-GAIN
|
||||
|
||||
;;Set other
|
||||
CLR mQNReg[0].4
|
||||
SZ FIFO_out4.@FMMono
|
||||
SET mQNReg[0].4
|
||||
|
||||
CLR mQNReg[2].7
|
||||
SZ FIFO_out4.@FMDeemp
|
||||
SET mQNReg[2].7
|
||||
|
||||
MOV A,00H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[0]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data ;;FM Mono
|
||||
|
||||
MOV A,02H
|
||||
MOV mFMAddr,A
|
||||
MOV A,mQNReg[2]
|
||||
MOV mFMData,A
|
||||
CALL QN8027_I2C_Write_Data ;;FM De-emp
|
||||
;;JMP L_QN8027_end
|
||||
|
||||
|
||||
L_QN8027_end:
|
||||
RET
|
||||
|
141
PRG/cal.asm
Normal file
141
PRG/cal.asm
Normal file
|
@ -0,0 +1,141 @@
|
|||
;8 bit unsigned mul
|
||||
unbin_mul_8 proc ;data0*data4---->to1to0
|
||||
init
|
||||
mov a, 08h
|
||||
mov count0, a
|
||||
rradd:
|
||||
rrc to1
|
||||
rrc data4
|
||||
snz [0ah].0
|
||||
jmp rr1 ;当前data4.0=0,移位<E7A7BB>
|
||||
mov a, data0 ;当前data4.0=1,移位相加
|
||||
addm a, to1
|
||||
rr1:
|
||||
sdz count0
|
||||
jmp rradd
|
||||
rrc to1
|
||||
rrc data4
|
||||
mov a, data4
|
||||
mov to0, a
|
||||
ret
|
||||
unbin_mul_8 endp
|
||||
|
||||
|
||||
;8 bit unsigned div
|
||||
unbin_div_8 proc ;data0/data4---->data0(to0)---to1
|
||||
init
|
||||
mov a, 08h ;循环次数8
|
||||
mov count0, a
|
||||
|
||||
sz data4 ;除数为0则溢出
|
||||
jmp start0
|
||||
jmp over8
|
||||
start0:
|
||||
sz data0 ;被除数为0则结束
|
||||
jmp div0
|
||||
jmp dispa
|
||||
div0:
|
||||
clr [0Ah].0 ;准备左移
|
||||
rlc data0
|
||||
rlc to1 ;左移一位结束
|
||||
mov a, to1 ;开始部分余数减除数
|
||||
sub a, data4
|
||||
snz [0Ah].0
|
||||
jmp next0 ;不够减则转移
|
||||
mov to1, a ;够减则商为1
|
||||
inc data0
|
||||
next0:
|
||||
sdz count0
|
||||
jmp div0
|
||||
dispa:
|
||||
mov a, data0 ;显示商
|
||||
mov to0, a
|
||||
;; mov a, data4
|
||||
;; mov to1, a
|
||||
ret
|
||||
over8:
|
||||
ret
|
||||
unbin_div_8 endp
|
||||
|
||||
|
||||
;16 bit unsigned div
|
||||
unbin_div_16 proc ;data0data1/data4data5---->data1data0(to1to0)---to2to3
|
||||
init
|
||||
mov a, 10h
|
||||
mov count0, a
|
||||
sz data5
|
||||
jmp start16
|
||||
sz data4
|
||||
jmp start16
|
||||
jmp over16
|
||||
start16:
|
||||
sz data1
|
||||
jmp div16
|
||||
sz data0
|
||||
jmp div16
|
||||
jmp dispa16
|
||||
div16:
|
||||
clr [0Ah].0
|
||||
rlc data0
|
||||
rlc data1
|
||||
rlc to2
|
||||
rlc to3
|
||||
mov a, to2
|
||||
sub a, data4
|
||||
mov com3, a
|
||||
mov a, to3
|
||||
sbc a, data5
|
||||
snz [0Ah].0
|
||||
jmp next16
|
||||
mov to3, a
|
||||
mov a, com3
|
||||
mov to2, a
|
||||
mov a, 01h
|
||||
addm a, data0
|
||||
mov a, 00h
|
||||
adcm a, data1
|
||||
next16:
|
||||
sdz count0
|
||||
jmp div16
|
||||
dispa16:
|
||||
mov a, data0
|
||||
mov to0, a
|
||||
mov a, data1
|
||||
mov to1, a
|
||||
mov a, 00h
|
||||
mov to2, a
|
||||
ret
|
||||
over16:
|
||||
ret
|
||||
unbin_div_16 endp
|
||||
|
||||
;16 bit unsigned mul
|
||||
unbin_mul_16 proc
|
||||
init
|
||||
mov a, 10h ;data0data1*data4data5---->to0to1to2to3
|
||||
mov count0, a
|
||||
clr [0ah].0
|
||||
rradd16:
|
||||
rrc to3
|
||||
rrc to2
|
||||
rrc data5
|
||||
rrc data4
|
||||
snz [0ah].0
|
||||
jmp rr116
|
||||
mov a, data0
|
||||
addm a, to2
|
||||
mov a, data1
|
||||
adcm a, to3
|
||||
rr116:
|
||||
sdz count0
|
||||
jmp rradd16
|
||||
rrc to3
|
||||
rrc to2
|
||||
rrc data5
|
||||
rrc data4
|
||||
mov a, data4
|
||||
mov to0, a
|
||||
mov a, data5
|
||||
mov to1, a
|
||||
ret
|
||||
unbin_mul_16 endp
|
304
PRG/const.inc
Normal file
304
PRG/const.inc
Normal file
|
@ -0,0 +1,304 @@
|
|||
;****************************************************************
|
||||
;Author:Ansonku
|
||||
;Email:ansonku@holtek.com.tw
|
||||
;================================================================
|
||||
;Update Information
|
||||
;================================================================
|
||||
;2004/09/27
|
||||
;define register for usb audio speaker chip
|
||||
;the usb chip register are all at bank0
|
||||
;
|
||||
;****************************************************************
|
||||
|
||||
|
||||
USB_REG_BANK EQU 0
|
||||
|
||||
|
||||
;R0 EQU [00H]
|
||||
;MP0 EQU [01H]
|
||||
;R1 EQU [02H]
|
||||
;MP1 EQU [03H]
|
||||
|
||||
;ACC EQU [05H]
|
||||
;PCL EQU [06H]
|
||||
;TBLP EQU [07H]
|
||||
;TBLH EQU [08H]
|
||||
|
||||
;STATUS EQU [0AH]
|
||||
;INTC0 EQU [0BH]
|
||||
|
||||
;TMR0 EQU [0DH]
|
||||
;TMR0C EQU [0EH]
|
||||
;TMR1H EQU [0FH]
|
||||
;TMR1L EQU [10H]
|
||||
;TMR1C EQU [11H]
|
||||
;PA EQU [12H]
|
||||
;PAC EQU [13H]
|
||||
;PB EQU [14H]
|
||||
;PBC EQU [15H]
|
||||
;PC EQU [16H]
|
||||
;PCC EQU [17H]
|
||||
;PD EQU [18H]
|
||||
;PDC EQU [19H]
|
||||
;PE EQU [1AH]
|
||||
;PEC EQU [1BH]
|
||||
|
||||
;INTC1 EQU [1EH]
|
||||
|
||||
EP0_FIFO_SIZE EQU 8
|
||||
|
||||
USB_FIFO0_SIZE EQU 8
|
||||
USB_FIFO1_SIZE EQU 8
|
||||
USB_FIFO2_SIZE EQU 8
|
||||
USB_FIFO3_SIZE EQU 8
|
||||
USB_FIFO4_SIZE EQU 8
|
||||
USB_FIFO5_SIZE EQU 8
|
||||
|
||||
|
||||
|
||||
USB_USC EQU 020H
|
||||
USB_USR EQU 021H
|
||||
USB_UCC EQU 022H
|
||||
USB_AWR EQU 023H
|
||||
USB_STALL EQU 024H
|
||||
USB_SIES EQU 025H
|
||||
USB_MISC EQU 026H
|
||||
USB_SETIO EQU 027H
|
||||
USB_FIFO0 EQU 028H
|
||||
USB_FIFO1 EQU 029H
|
||||
USB_FIFO2 EQU 02AH
|
||||
USB_FIFO3 EQU 02BH
|
||||
USB_FIFO4 EQU 02CH
|
||||
USB_FIFO5 EQU 02DH
|
||||
|
||||
|
||||
;bit position define
|
||||
@BIT0 EQU 0
|
||||
@BIT1 EQU 1
|
||||
@BIT2 EQU 2
|
||||
@BIT3 EQU 3
|
||||
@BIT4 EQU 4
|
||||
@BIT5 EQU 5
|
||||
@BIT6 EQU 6
|
||||
@BIT7 EQU 7
|
||||
|
||||
;INTC0
|
||||
@INTC0_EMI EQU @BIT0
|
||||
@INTC0_EEI EQU @BIT1
|
||||
@INTC0_ET0I EQU @BIT2
|
||||
@INTC0_ET1I EQU @BIT3
|
||||
@INTC0_EIF EQU @BIT4
|
||||
@INTC0_T0F EQU @BIT5
|
||||
@INTC0_T1F EQU @BIT6
|
||||
|
||||
;INTC1
|
||||
@INTC1_EUI EQU @BIT0
|
||||
@INTC1_EADI EQU @BIT1
|
||||
@INTC1_ESII EQU @BIT2
|
||||
@INTC1_USBF EQU @BIT4
|
||||
@INTC1_ADF EQU @BIT5
|
||||
@INTC1_SIF EQU @BIT6
|
||||
|
||||
;USC
|
||||
@USC_SUSP EQU @BIT0
|
||||
@USC_RMWK EQU @BIT1
|
||||
@USC_URST EQU @BIT2
|
||||
@USC_RESUME EQU @BIT3
|
||||
@USC_V33C EQU @BIT4
|
||||
@USC_URD EQU @BIT7
|
||||
|
||||
;USR
|
||||
@USR_EP0F EQU @BIT0
|
||||
@USR_EP1F EQU @BIT1
|
||||
@USR_EP2F EQU @BIT2
|
||||
@USR_EP3F EQU @BIT3
|
||||
@USR_EP4F EQU @BIT4
|
||||
@USR_EP5F EQU @BIT5
|
||||
|
||||
|
||||
;UCC [20H]
|
||||
@UCC_EPS0 EQU @BIT0
|
||||
@UCC_EPS1 EQU @BIT1
|
||||
@UCC_EPS2 EQU @BIT2
|
||||
@UCC_USBCKEN EQU @BIT3
|
||||
@UCC_SUSP2 EQU @BIT4
|
||||
@UCC_SYSCLK EQU @BIT6
|
||||
@UCC_UFLS EQU @BIT7
|
||||
|
||||
;AWR
|
||||
@AWR_WKEN EQU @BIT0
|
||||
|
||||
;STALL
|
||||
@STALL_STL0 EQU @BIT0
|
||||
@STALL_STL1 EQU @BIT1
|
||||
@STALL_STL2 EQU @BIT2
|
||||
@STALL_STL3 EQU @BIT3
|
||||
@STALL_STL4 EQU @BIT4
|
||||
@STALL_STL5 EQU @BIT5
|
||||
|
||||
;SIES
|
||||
@SIES_ASET EQU @BIT0
|
||||
@SIES_ERR EQU @BIT1
|
||||
@SIES_OUT EQU @BIT2
|
||||
@SIES_IN EQU @BIT3
|
||||
@SIES_NAK EQU @BIT4
|
||||
@SIES_SETUP EQU @BIT5
|
||||
|
||||
;MISC
|
||||
@MISC_REQ EQU @BIT0
|
||||
@MISC_TX EQU @BIT1
|
||||
@MISC_CLEAR EQU @BIT2
|
||||
@MISC_ISOEN EQU @BIT4
|
||||
@MISC_SCMD EQU @BIT5
|
||||
@MISC_READY EQU @BIT6
|
||||
@MISC_LEN0 EQU @BIT7
|
||||
|
||||
;SETIO
|
||||
@SETIO_DATATG EQU @BIT0
|
||||
@SETIO_SETIO1 EQU @BIT1
|
||||
@SETIO_SETIO2 EQU @BIT2
|
||||
@SETIO_SETIO3 EQU @BIT3
|
||||
@SETIO_SETIO4 EQU @BIT4
|
||||
@SETIO_SETIO5 EQU @BIT5
|
||||
|
||||
;
|
||||
;===================================================
|
||||
;Descriptor constant declarations
|
||||
;===================================================
|
||||
;Standard Request Codes
|
||||
get_status EQU 0
|
||||
clear_feature EQU 1
|
||||
set_feature EQU 3
|
||||
set_address EQU 5
|
||||
get_descriptor EQU 6
|
||||
set_descriptor EQU 7
|
||||
get_configuration EQU 8
|
||||
set_configuration EQU 9
|
||||
get_interface EQU 10
|
||||
set_interface EQU 11
|
||||
synch_frame EQU 12
|
||||
|
||||
;Standard Descriptor types
|
||||
device EQU 1
|
||||
configuration EQU 2
|
||||
string EQU 3
|
||||
interface EQU 4
|
||||
endpoint EQU 5
|
||||
|
||||
;Standard Feature Selectors
|
||||
endpoint_stalled EQU 0
|
||||
device_remote_wakeup EQU 1
|
||||
|
||||
;HID class
|
||||
HID EQU 21H
|
||||
report EQU 22H
|
||||
physical EQU 23H
|
||||
|
||||
;calss specific request code from section 7.2 class specific requests
|
||||
get_report EQU 1
|
||||
get_idle EQU 2
|
||||
get_protocol EQU 3
|
||||
set_report EQU 09
|
||||
set_idle EQU 10
|
||||
set_protocol EQU 11
|
||||
|
||||
set_input_report EQU 1
|
||||
set_output_report EQU 2
|
||||
|
||||
;===================================================
|
||||
;USB packet constants (debug purposes)
|
||||
;===================================================
|
||||
setup EQU 0B4H
|
||||
in EQU 096H
|
||||
out EQU 087H
|
||||
data0 EQU 0C3H
|
||||
data1 EQU 0D2H
|
||||
ack EQU 04BH
|
||||
nak EQU 04AH
|
||||
;===================================================
|
||||
;USB Audio Class-Specific Request Code
|
||||
;===================================================
|
||||
REQUEST_CODE_UNDEFINED EQU 000H
|
||||
SET_CUR EQU 001H
|
||||
GET_CUR EQU 081H
|
||||
SET_MIN EQU 002H
|
||||
GET_MIN EQU 082H
|
||||
SET_MAX EQU 003H
|
||||
GET_MAX EQU 083H
|
||||
SET_RES EQU 004H
|
||||
GET_RES EQU 084H
|
||||
SET_MEM EQU 005H
|
||||
GET_MEM EQU 085H
|
||||
GET_STAT EQU 0FFH
|
||||
|
||||
;Feature Unit Control Selectors
|
||||
FU_CONTROL_UNDEFINED EQU 000H
|
||||
MUTE_CONTROL EQU 001H
|
||||
VOLUME_CONTROL EQU 002H
|
||||
BASS_CONTROL EQU 003H
|
||||
MID_CONTROL EQU 004H
|
||||
TREBLE_CONTROL EQU 005H
|
||||
GRAPHIC_EQUALIZER_CONTROL EQU 006H
|
||||
AUTOMATIC_GAIN_CONTROL EQU 007H
|
||||
DELAY_CONTROL EQU 008H
|
||||
BASS_BOOST_CONTROL EQU 009H
|
||||
LOUNDNESS_CONTROL EQU 00AH
|
||||
|
||||
|
||||
;//just for HT23RB60 RAM bank
|
||||
ABank0 EQU 000H
|
||||
ABank1 EQU 001H
|
||||
ABank2 EQU 002H
|
||||
ABank3 EQU 003H
|
||||
ABank4 EQU 004H
|
||||
ABank5 EQU 005H
|
||||
ABank6 EQU 006H
|
||||
ABank7 EQU 007H
|
||||
ABank8 EQU 008H
|
||||
ABank9 EQU 009H
|
||||
ABankA EQU 00aH
|
||||
ABankB EQU 00bH
|
||||
;//just for HT23RB60 ROM bank
|
||||
OBank0 EQU 000H
|
||||
OBank1 EQU 020H
|
||||
OBank2 EQU 040H
|
||||
OBank3 EQU 060H
|
||||
|
||||
|
||||
;for HT16A102B 68k Parallel Mode
|
||||
OLCD_DATA_PIN EQU PA
|
||||
C68 EQU PB.0
|
||||
RD EQU PB.1
|
||||
RW EQU PB.2
|
||||
DCOM EQU PB.3
|
||||
RES EQU PB.4
|
||||
|
||||
|
||||
;for volume control
|
||||
Const_Counter EQU 00AH
|
||||
|
||||
VIOP EQU [12H]
|
||||
@Mute EQU @BIT6
|
||||
@Inc EQU @BIT4
|
||||
@Dec EQU @BIT5
|
||||
|
||||
Min_Volume EQU 0C8H
|
||||
Max_Volume EQU 000H
|
||||
;//Max_Volume EQU 000H
|
||||
Cur_Volume EQU 0FCH
|
||||
|
||||
|
||||
|
||||
|
||||
;=============================================================
|
||||
; IF USE key Debounced Function please set UseMedaiKey = 1
|
||||
; Key_Defined represent which bit you want to detect
|
||||
; For Example : I want to detect PA.0 and PA.1
|
||||
; Then I set Key_Defined to 00000011'b = 03H
|
||||
;=============================================================
|
||||
#define UseMediaKey 0
|
||||
#define UseReportID 0 ;des is changed usereport has problem
|
||||
Key_Defined EQU 0FFH
|
||||
|
||||
USB_LED_ON EQU PB.0
|
||||
MUTE_LED_ON EQU PB.1
|
1388
PRG/function.asm
Normal file
1388
PRG/function.asm
Normal file
File diff suppressed because it is too large
Load diff
98
PRG/ht82a821r.inc
Normal file
98
PRG/ht82a821r.inc
Normal file
|
@ -0,0 +1,98 @@
|
|||
; ht48rb4.INC
|
||||
; This file contains the definition of registers for
|
||||
; Holtek ht48rb4 microcontroller.
|
||||
; Generated by Cfg2IncH V1.0.
|
||||
; Do not modify manually.
|
||||
|
||||
IAR0 EQU [00H]
|
||||
R0 EQU [00H] ;old style declaration, not recommended for use
|
||||
MP0 EQU [01H]
|
||||
IAR1 EQU [02H]
|
||||
R1 EQU [02H] ;old style declaration, not recommended for use
|
||||
MP1 EQU [03H]
|
||||
BP EQU [04H]
|
||||
ACC EQU [05H]
|
||||
PCL EQU [06H]
|
||||
TBLP EQU [07H]
|
||||
TBLH EQU [08H]
|
||||
WDTS EQU [09H]
|
||||
STATUS EQU [0AH]
|
||||
INTC0 EQU [0BH]
|
||||
TMR0H EQU [0CH]
|
||||
TMR0L EQU [0DH]
|
||||
TMR0C EQU [0EH]
|
||||
TMR1H EQU [0FH]
|
||||
TMR1L EQU [010H]
|
||||
TMR1C EQU [011H]
|
||||
PA EQU [012H]
|
||||
PAC EQU [013H]
|
||||
PB EQU [014H]
|
||||
PBC EQU [015H]
|
||||
PC EQU [016H]
|
||||
PCC EQU [017H]
|
||||
PD EQU [018H]
|
||||
PDC EQU [019H]
|
||||
USVC EQU [01CH]
|
||||
USF EQU [01DH]
|
||||
TBHP EQU [01FH]
|
||||
USC EQU [020H]
|
||||
USR EQU [021H]
|
||||
UCC EQU [022H]
|
||||
AWR EQU [023H]
|
||||
STALREG EQU [024H]
|
||||
STALL EQU [024H]
|
||||
SIES EQU [025H]
|
||||
MISC EQU [026H]
|
||||
SETIO EQU [027H]
|
||||
FIFO0 EQU [028H]
|
||||
FIFO1 EQU [029H]
|
||||
FIFO2 EQU [02AH]
|
||||
TUSB_R EQU [02FH]
|
||||
|
||||
C EQU [0AH].0
|
||||
AC EQU [0AH].1
|
||||
Z EQU [0AH].2
|
||||
OV EQU [0AH].3
|
||||
PDF EQU [0AH].4
|
||||
TO EQU [0AH].5
|
||||
EMI EQU [0BH].0
|
||||
EEI EQU [0BH].1
|
||||
ET0I EQU [0BH].2
|
||||
ET1I EQU [0BH].3
|
||||
EIF EQU [0BH].4
|
||||
T0F EQU [0BH].5
|
||||
T1F EQU [0BH].6
|
||||
PA0 EQU [012H].0
|
||||
PA1 EQU [012H].1
|
||||
PA2 EQU [012H].2
|
||||
PA3 EQU [012H].3
|
||||
PA4 EQU [012H].4
|
||||
PA5 EQU [012H].5
|
||||
PA6 EQU [012H].6
|
||||
PA7 EQU [012H].7
|
||||
PB0 EQU [014H].0
|
||||
PB1 EQU [014H].1
|
||||
PB2 EQU [014H].2
|
||||
PB3 EQU [014H].3
|
||||
PB4 EQU [014H].4
|
||||
PB5 EQU [014H].5
|
||||
PB6 EQU [014H].6
|
||||
PB7 EQU [014H].7
|
||||
PC0 EQU [016H].0
|
||||
PC1 EQU [016H].1
|
||||
PC2 EQU [016H].2
|
||||
PC3 EQU [016H].3
|
||||
PC4 EQU [016H].4
|
||||
PC5 EQU [016H].5
|
||||
PC6 EQU [016H].6
|
||||
PC7 EQU [016H].7
|
||||
PD0 EQU [018H].0
|
||||
PD1 EQU [018H].1
|
||||
PD2 EQU [018H].2
|
||||
PD3 EQU [018H].3
|
||||
PD4 EQU [018H].4
|
||||
PD5 EQU [018H].5
|
||||
PD6 EQU [018H].6
|
||||
PD7 EQU [018H].7
|
||||
|
||||
LASTPAGE EQU 0700H
|
386
PRG/macro.asm
Normal file
386
PRG/macro.asm
Normal file
|
@ -0,0 +1,386 @@
|
|||
;*******************************************************************************
|
||||
;*
|
||||
;* (c) Copyright 2004, Holtek Semiconductor Inc.
|
||||
;*
|
||||
;******************************************************************************/
|
||||
;*******************************************************************************
|
||||
;MODULE: main.asm
|
||||
|
||||
;INITIAL: 11/12/2004
|
||||
|
||||
;AUTHOR: C351 Ansonku.
|
||||
|
||||
;NOTE: HT48RB4 16 bit operation
|
||||
|
||||
;REVISION: First issue
|
||||
;*******************************************************************************
|
||||
;*******************************************************************************
|
||||
; 16 bit ADD with signed
|
||||
; use ADD16 XH,XL,YH,YL,ZH,ZL
|
||||
; operation
|
||||
; XH XL
|
||||
; +YH YL
|
||||
; --------------
|
||||
; ZH ZL
|
||||
;*******************************************************************************
|
||||
ADD16 MACRO XH,XL,YH,YL,ZH,ZL
|
||||
MOV A,XL
|
||||
ADD A,YL
|
||||
MOV ZL,A
|
||||
MOV A,XH
|
||||
ADC A,YH
|
||||
MOV ZH,A
|
||||
ENDM
|
||||
;*******************************************************************************
|
||||
; 16 bit ADD with unsigned
|
||||
; use ADD16 XH,XL,YL,ZH,ZL
|
||||
; operation
|
||||
; XH XL
|
||||
; + YL
|
||||
; --------------
|
||||
; ZH ZL
|
||||
;*******************************************************************************
|
||||
ADD16U MACRO XH,XL,YL,ZH,ZL
|
||||
mov a,xh
|
||||
mov zh,a
|
||||
MOV A,XL
|
||||
ADD A,YL
|
||||
SZ C
|
||||
INC ZH
|
||||
MOV ZL,A
|
||||
ENDM
|
||||
|
||||
|
||||
;*******************************************************************************
|
||||
; 16 bit sub with signed
|
||||
; use SUB16 XH,XL,YH,YL,ZH,ZL
|
||||
; operation
|
||||
; XH XL
|
||||
; -YH YL
|
||||
; --------------
|
||||
; ZH ZL
|
||||
;*******************************************************************************
|
||||
SUB16 MACRO XH,XL,YH,YL,ZH,ZL
|
||||
MOV A,XL
|
||||
CLR C
|
||||
SUB A,YL
|
||||
MOV ZL,A
|
||||
MOV A,XH
|
||||
SBC A,YH
|
||||
MOV ZH,A
|
||||
|
||||
ENDM
|
||||
|
||||
|
||||
;*******************************************************************************
|
||||
; 16 bit shift right with signed
|
||||
; use RR16 XH,XL,ZH,ZL
|
||||
; operation
|
||||
;*******************************************************************************
|
||||
RR16 MACRO XH,XL,ZH,ZL
|
||||
CLR C
|
||||
MOV A,XH
|
||||
AND A,80H
|
||||
SNZ Z
|
||||
SET C
|
||||
RRCA XH
|
||||
MOV ZH,A
|
||||
RRCA XL
|
||||
MOV ZL,A
|
||||
ENDM
|
||||
;*******************************************************************************
|
||||
; 16 bit shift left with signed
|
||||
; use RL16 XH,XL,ZH,ZL
|
||||
; operation
|
||||
;*******************************************************************************
|
||||
RL16 MACRO XH,XL,ZH,ZL
|
||||
CLR C
|
||||
SZ XL.7
|
||||
SET C
|
||||
|
||||
RLCA XH
|
||||
MOV ZH,A
|
||||
CLR C
|
||||
RLCA XL
|
||||
MOV ZL,A
|
||||
ENDM
|
||||
;*******************************************************************************
|
||||
; 16 bit shift left with signed
|
||||
; use RL16N XH,XL,ZH,ZL
|
||||
; operation
|
||||
;*******************************************************************************
|
||||
RL16N MACRO XH,XL,ZH,ZL,N
|
||||
;MOV A,8
|
||||
;SUB A,N
|
||||
;mov a,Xl SHR A
|
||||
;mov zh,a
|
||||
;mov a,xh SHL N
|
||||
;orm a,zh
|
||||
ENDM
|
||||
;*******************************************************************************
|
||||
; 8 bit multiply with signed
|
||||
; use mul8 X,Y,ZH,ZL
|
||||
; operation
|
||||
;*******************************************************************************
|
||||
Mul8 MACRO X,Y,ZH,ZL
|
||||
Local Mul8_End
|
||||
CLR operator1H ;sum
|
||||
CLR operator1L
|
||||
CLR operator2H ;multiply
|
||||
CLR operator3H ;operator
|
||||
CLR operator3L
|
||||
mov A,Y
|
||||
mov operator2L,A
|
||||
|
||||
SZ X.7
|
||||
SET operator2H
|
||||
Mul16_doloop:
|
||||
MOV A,6
|
||||
MOV Counter3,A
|
||||
SDZ Counter3
|
||||
JMP Mul8_End
|
||||
SNZ X.Counter3
|
||||
jmp Mul18_Next_Bit
|
||||
RL16 operator2H,operator2L,operator3H,operator3L
|
||||
ADD16 operator3H,operator3L,operator1H,operaotr1L,operator1H,operator1L
|
||||
|
||||
|
||||
Mul18_Next_Bit:
|
||||
JMP Mul16_doloop
|
||||
|
||||
|
||||
Mul8_End:
|
||||
|
||||
|
||||
ENDM
|
||||
|
||||
;*******************************************************************************
|
||||
; 8 bit macro
|
||||
;*******************************************************************************
|
||||
;*******************************************************************************
|
||||
; 16 bit ADD with signed
|
||||
; use ADD16 X,Y,Z
|
||||
; operation
|
||||
; X
|
||||
; +Y
|
||||
; --------------
|
||||
; Z
|
||||
;*******************************************************************************
|
||||
ADD8 MACRO X1,Y1,Z1
|
||||
MOV A,X1
|
||||
ADD A,Y1
|
||||
MOV Z1,A
|
||||
ENDM
|
||||
|
||||
;*******************************************************************************
|
||||
; 16 bit sub with signed
|
||||
; use SUB16 X,Y,Z
|
||||
; operation
|
||||
; X
|
||||
; -Y
|
||||
; --------------
|
||||
; Z
|
||||
;*******************************************************************************
|
||||
SUB8 MACRO X1,Y1,Z1
|
||||
MOV A,X1
|
||||
SUB A,Y1
|
||||
MOV Z1,A
|
||||
ENDM
|
||||
|
||||
;*******************************************************************************
|
||||
; 8 bit shift right with signed
|
||||
; use RR8 X,Z
|
||||
; operation
|
||||
;*******************************************************************************
|
||||
RR8 MACRO X,Y
|
||||
Local RR8_End,RR8_Modify_FF,RR8_Modify_FF_End
|
||||
mov a,X
|
||||
inc acc
|
||||
SZ Z
|
||||
jmp RR8_Modify_FF
|
||||
jmp RR8_Modify_FF_End
|
||||
RR8_Modify_FF:
|
||||
clr Y
|
||||
jmp RR8_End
|
||||
|
||||
RR8_Modify_FF_End:
|
||||
CLR C
|
||||
MOV A,X
|
||||
AND A,80H
|
||||
SNZ Z
|
||||
SET C
|
||||
RRCA X
|
||||
MOV Y,A
|
||||
|
||||
|
||||
|
||||
RR8_End:
|
||||
ENDM
|
||||
;*******************************************************************************
|
||||
; 8 bit shift left with signed
|
||||
; use RL16 X,Z
|
||||
; operation
|
||||
;*******************************************************************************
|
||||
RL8 MACRO X,Y
|
||||
CLR C
|
||||
RLCA X
|
||||
MOV Y,A
|
||||
ENDM
|
||||
|
||||
;*******************************************************************************
|
||||
; 8 bit abs
|
||||
; use ABS8 X,Y
|
||||
; operation
|
||||
;*******************************************************************************
|
||||
ABS8 MACRO X,Y
|
||||
Local ABS8_End
|
||||
|
||||
kmov y,x
|
||||
mov a,x
|
||||
and a,80H
|
||||
SZ Z
|
||||
jmp ABS8_End
|
||||
CPL y
|
||||
INC y
|
||||
|
||||
ABS8_End:
|
||||
|
||||
ENDM
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;*******************************************************************************
|
||||
; kmov
|
||||
; use kmov destination,source
|
||||
; operation
|
||||
;*******************************************************************************
|
||||
KMOV MACRO mem1,mem2
|
||||
mov a,mem2
|
||||
mov mem1,a
|
||||
ENDM
|
||||
|
||||
KOR MACRO mem1,mem2
|
||||
mov a,mem2
|
||||
orm a,mem1
|
||||
ENDM
|
||||
|
||||
|
||||
|
||||
;*******************************************************************************
|
||||
; make oled column address
|
||||
; use oled_make_col_add source,MSB,LSB
|
||||
;
|
||||
;*******************************************************************************
|
||||
oled_make_col_add macro mem1,mem2,mem3
|
||||
mov a,0FH
|
||||
AND a,mem1
|
||||
mov mem3,a
|
||||
mov a,70H
|
||||
and a,mem1
|
||||
mov mem2,a
|
||||
clr c
|
||||
rrc mem2
|
||||
clr c
|
||||
rrc mem2
|
||||
clr c
|
||||
rrc mem2
|
||||
clr c
|
||||
rrc mem2
|
||||
set mem2.4
|
||||
|
||||
endm
|
||||
|
||||
|
||||
|
||||
;***************************************
|
||||
|
||||
XMOV MACRO mem2,mem1
|
||||
mov a,mem1
|
||||
mov mem2,a
|
||||
ENDM
|
||||
;-------------------------------------
|
||||
;;Move ARG2->ARG1(move by bit)
|
||||
xmov1 MACRO ARG1,ARG2
|
||||
LOCAL xmov1_1,xmov1_end
|
||||
sz ARG2
|
||||
jmp xmov1_1
|
||||
clr ARG1
|
||||
jmp xmov1_end
|
||||
xmov1_1:
|
||||
set ARG1
|
||||
xmov1_end:
|
||||
ENDM
|
||||
;-------------------------------------
|
||||
;;if MEM2=MEM1 =>Skip Next Instruction
|
||||
EQUJMP MACRO MEM2,MEM1
|
||||
MOV A,MEM1
|
||||
XOR A,MEM2
|
||||
SNZ Z
|
||||
ENDM
|
||||
;;------------------------
|
||||
|
||||
;;if MEM2!=MEM1 =>Skip Next Instruction
|
||||
NEJMP MACRO MEM2,MEM1
|
||||
MOV A,MEM1
|
||||
XOR A,MEM2
|
||||
SZ Z
|
||||
ENDM
|
||||
;;------------------------
|
||||
;;if (REG1==REG2) goto REG3
|
||||
JLER MACRO REG1,REG2,REG3
|
||||
mov a,REG1
|
||||
sub a,REG2
|
||||
sz z
|
||||
jmp REG3
|
||||
ENDM
|
||||
;**********************************************
|
||||
;MACRO: JLNR
|
||||
;PURPOSE: REG1 != REG2 goto REG3
|
||||
;**********************************************
|
||||
JLNR MACRO REG1,REG2,REG3
|
||||
mov a,REG1
|
||||
sub a,REG2
|
||||
snz z
|
||||
jmp REG3
|
||||
ENDM
|
||||
;;------------------------
|
||||
;;if MEM2>MEM1 =>Skip Next Instruction
|
||||
LBRJ MACRO MEM2,MEM1
|
||||
MOV A,MEM1
|
||||
SUB A,MEM2
|
||||
SZ C
|
||||
ENDM
|
||||
;;------------------------
|
||||
|
||||
;;if MEM2<=MEM1 =>Skip Next Instruction
|
||||
LSERJ MACRO MEM2,MEM1
|
||||
MOV A,MEM1
|
||||
SUB A,MEM2
|
||||
SNZ C
|
||||
ENDM
|
||||
;;------------------------
|
||||
|
||||
;;if MEM2<MEM1 =>Skip Next Instruction
|
||||
LSRJ MACRO MEM2,MEM1
|
||||
MOV A,MEM2
|
||||
SUB A,MEM1
|
||||
SZ C
|
||||
ENDM
|
||||
;;------------------------
|
||||
|
||||
;;if MEM2>=MEM1 =>Skip Next Instruction
|
||||
LBERJ MACRO MEM2,MEM1
|
||||
MOV A,MEM2
|
||||
SUB A,MEM1
|
||||
SNZ C
|
||||
ENDM
|
||||
;;------------------------
|
||||
|
||||
SWAPWORD MACRO DA
|
||||
EQU (DA>>8)+(DA<<8)
|
||||
ENDM
|
||||
;;------------------------
|
||||
|
1807
PRG/main.asm
Normal file
1807
PRG/main.asm
Normal file
File diff suppressed because it is too large
Load diff
60
PRG/memory.inc
Normal file
60
PRG/memory.inc
Normal file
|
@ -0,0 +1,60 @@
|
|||
;;***********************************************
|
||||
;;QN8072 memory
|
||||
;;***********************************************
|
||||
mQNReg db 5 dup (?) ;;QN8072 Reg0~4
|
||||
|
||||
mFMAddr db ? ;;QN8072 Reg addr
|
||||
mFMData db ? ;;QN8072 Reg data
|
||||
mFreqL db ? ;;QN8072 Freq
|
||||
mFreqH db ?
|
||||
|
||||
mFMACK db ? ;;IIC ACK get OK?
|
||||
mFMSend db ? ;;IIC Send data
|
||||
mFMCnt db ? ;;IIC Send count
|
||||
|
||||
;;***********************************************
|
||||
;;Temp
|
||||
;;***********************************************
|
||||
mMK0 db ?
|
||||
mMK1 db ?
|
||||
|
||||
;;***********************************************
|
||||
;;BIT
|
||||
;;***********************************************
|
||||
bIniFMOK dbit ;;0-FM initial no. 1-FM initial OK
|
||||
|
||||
;;***********************************************
|
||||
;;IO Define
|
||||
;;***********************************************
|
||||
P_LEDC EQU [013H].3
|
||||
P_LED EQU PA.3
|
||||
P_SCLC EQU [013H].0
|
||||
P_SCL EQU PA.0
|
||||
P_SDAC EQU [013H].1
|
||||
P_SDA EQU PA.1
|
||||
|
||||
;;***********************************************
|
||||
;;User Define
|
||||
;;***********************************************
|
||||
cFreqDefL EQU 18H
|
||||
cFreqDefH EQU 01H ;;QN8072 define freq : 90.00MHz (Chanel = (Freq-76)/0.05)
|
||||
|
||||
QN8072_I2C_WRITE_ADDR EQU 58H ;;QN8072 Write address
|
||||
QN8072_I2C_READ_ADDR EQU 59H ;;QN8072 Read address
|
||||
|
||||
;;***********************************************
|
||||
;;USB Translate Define
|
||||
;;***********************************************
|
||||
cFMUSBType_Main EQU 50H ;;USB Data is main data
|
||||
cFMUSBType_Set EQU 51H ;;USB Data is Set data
|
||||
|
||||
@FMKeyOn EQU 0 ;;FM On
|
||||
@FMKeyOff EQU 1 ;;FM Off
|
||||
@FMKeyMute EQU 2 ;;FM Mute
|
||||
@FMKeyNoMute EQU 3 ;;FM NoMute
|
||||
@FMKeyTun EQU 4 ;;FM Tun(add/dec)
|
||||
|
||||
@FMMono EQU 0 ;;FM Stereo(0)/mono(1)
|
||||
@FMFreq EQU 1 ;;FM freq 87.5~108M(0)/76~90(1)
|
||||
@FMDeemp EQU 2 ;;FM De-emphasis 50(0)/75(1)
|
||||
|
198
keenectl.c
Normal file
198
keenectl.c
Normal file
|
@ -0,0 +1,198 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <usb.h>
|
||||
#include <math.h>
|
||||
|
||||
#define LED_VENDOR_ID 0x046d
|
||||
#define LED_PRODUCT_ID 0x0a0e
|
||||
|
||||
static void send_data(struct usb_dev_handle *handle, char *data)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = usb_control_msg(handle,
|
||||
USB_ENDPOINT_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, // request type
|
||||
0x00000009, // request
|
||||
0x0200, // value
|
||||
0x02, // index
|
||||
data,
|
||||
0x00000008,
|
||||
5000);
|
||||
|
||||
if (ret == -1) {
|
||||
fprintf(stderr, "Permission Denied\n");
|
||||
} else {
|
||||
fprintf(stderr, "usb_control_msg returned %d\n", ret);
|
||||
}
|
||||
}
|
||||
|
||||
static struct usb_device *device_init(void)
|
||||
{
|
||||
struct usb_bus *usb_bus;
|
||||
struct usb_device *dev;
|
||||
|
||||
usb_init();
|
||||
usb_find_busses();
|
||||
usb_find_devices();
|
||||
|
||||
for (usb_bus = usb_busses;
|
||||
usb_bus;
|
||||
usb_bus = usb_bus->next) {
|
||||
for (dev = usb_bus->devices;
|
||||
dev;
|
||||
dev = dev->next) {
|
||||
if ((dev->descriptor.idVendor
|
||||
== LED_VENDOR_ID) &&
|
||||
(dev->descriptor.idProduct
|
||||
== LED_PRODUCT_ID))
|
||||
return dev;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct usb_device *usb_dev;
|
||||
struct usb_dev_handle *usb_handle;
|
||||
|
||||
usb_dev = device_init();
|
||||
if (usb_dev == NULL) {
|
||||
fprintf(stderr, "Device not found\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
usb_handle = usb_open(usb_dev);
|
||||
if (usb_handle == NULL) {
|
||||
fprintf(stderr,
|
||||
"Not able to claim the USB device\n");
|
||||
usb_close(usb_handle);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (argc != 8) {
|
||||
fprintf(stderr,
|
||||
"incorrect number of arguments\n");
|
||||
usb_close(usb_handle);
|
||||
return 1;
|
||||
}
|
||||
|
||||
enum settings {
|
||||
PREEM_50 = 0x00,
|
||||
PREEM_75 = 0x04,
|
||||
STEREO = 0x00,
|
||||
MONO = 0x01,
|
||||
ENABLE = 0x01,
|
||||
DISABLE = 0x2,
|
||||
MUTE = 0x04,
|
||||
UNMUTE = 0x08,
|
||||
FREQ = 0x10
|
||||
};
|
||||
|
||||
char conf1[8] = "\x00\x50\x00\x00\x00\x00\x00\x00";
|
||||
char conf2[8] = "\x00\x51\x00\x00\x00\x00\x00\x00";
|
||||
|
||||
int ival, ret;
|
||||
float fval;
|
||||
|
||||
// get TX
|
||||
if (!strcasecmp(argv[1], "-")) {
|
||||
conf2[2] = '\x00';
|
||||
} else {
|
||||
ret = sscanf(argv[1], "%d", &ival);
|
||||
if (ret == 1) {
|
||||
if (ival >= 0 && ival <= 23) {
|
||||
conf2[2] = (ival%6)<<4 | (23-ival)/6;
|
||||
} else {
|
||||
fprintf(stderr, "TX must be from 0 to 23\n");
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "TX must be integer\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// get preemphasis
|
||||
if (!strcasecmp(argv[2], "-") || !strcasecmp(argv[2], "50us")) {
|
||||
conf2[3] |= PREEM_50;
|
||||
} else if (!strcasecmp(argv[2], "75us")) {
|
||||
conf2[3] |= PREEM_75;
|
||||
} else {
|
||||
fprintf(stderr, "preemphasis must be either 50us or 75us\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// get channels
|
||||
if (!strcasecmp(argv[3], "-") || !strcasecmp(argv[3], "stereo")) {
|
||||
conf2[3] |= STEREO;
|
||||
} else if (!strcasecmp(argv[3], "mono")) {
|
||||
conf2[3] |= MONO;
|
||||
} else {
|
||||
fprintf(stderr, "channels must be mono or stereo\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// get frequency
|
||||
if (!strcasecmp(argv[4], "-")) {
|
||||
fval = 90.0f;
|
||||
} else {
|
||||
ret = sscanf(argv[4], "%f", &fval);
|
||||
if (ret == 1) {
|
||||
if (fval < 76.0f || fval > 108.0f) {
|
||||
fprintf(stderr, "frequency must be from 76.0 to 108.0\n");
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "frequency must be float\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
long int ifreq = lround(20.0f*(fval-76.0f));
|
||||
conf1[2] = (ifreq >> 8) & 0xff;
|
||||
conf1[3] = ifreq & 0xff;
|
||||
|
||||
// get PA
|
||||
if (!strcasecmp(argv[5], "-")) {
|
||||
conf1[4] = 120;
|
||||
} else {
|
||||
ret = sscanf(argv[5], "%d", &ival);
|
||||
if (ret == 1) {
|
||||
if (ival >= 30 && ival <= 120) {
|
||||
conf1[4] = ival;
|
||||
} else {
|
||||
fprintf(stderr, "PA ust be from 30 to 120\n");
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "PA must be integer\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
// get enable
|
||||
if (!strcasecmp(argv[6], "-") || !strcasecmp(argv[6], "enable")) {
|
||||
conf1[5] |= ENABLE;
|
||||
} else if (!strcasecmp(argv[6], "disable")) {
|
||||
conf1[5] |= DISABLE;
|
||||
} else {
|
||||
fprintf(stderr, "must be enable or disable");
|
||||
return 1;
|
||||
}
|
||||
|
||||
// get mute
|
||||
if (!strcasecmp(argv[7], "-") || !strcasecmp(argv[7], "unmute")) {
|
||||
conf1[5] |= UNMUTE;
|
||||
} else if (!strcasecmp(argv[7], "mute")) {
|
||||
conf1[5] |= MUTE;
|
||||
} else {
|
||||
fprintf(stderr, "mute must be mute or unmute");
|
||||
return 1;
|
||||
}
|
||||
conf1[5] |= FREQ;
|
||||
|
||||
send_data(usb_handle, conf1);
|
||||
send_data(usb_handle, conf2);
|
||||
|
||||
return 0;
|
||||
}
|
75
notes
Normal file
75
notes
Normal file
|
@ -0,0 +1,75 @@
|
|||
add50: 00 50 01 1b 1e 19 00 34
|
||||
add100: 00 50 01 1d 1e 19 00 34
|
||||
add200: 00 50 01 21 1e 19 00 34
|
||||
|
||||
configclose: 00 51 03 20 00 00 00 44
|
||||
configclose: 00 51 02 00 00 00 00 44
|
||||
|
||||
disable: 00 50 01 18 1e 0a 00 05
|
||||
enable: 00 50 01 18 1e 09 00 00
|
||||
|
||||
mute: 00 50 01 19 1e 05 00 8c
|
||||
unmute: 00 50 01 19 1e 09 00 8c
|
||||
|
||||
PA30: 00 50 01 19 1e 09 73 d0
|
||||
PA48: 00 50 01 19 30 09 73 d0
|
||||
PA77: 00 50 01 19 4d 09 73 d0
|
||||
PA103: 00 50 01 19 67 09 73 d0
|
||||
PA120: 00 50 01 19 78 09 73 d0
|
||||
|
||||
TX0: 00 51 03 00 03 1e 00 1d
|
||||
TX6: 00 51 02 00 03 1e 00 1d
|
||||
TX15: 00 51 31 00 03 1e 00 1d
|
||||
TX23: 00 51 50 00 03 1e 00 1d
|
||||
|
||||
MAIN:
|
||||
0 1 2 3 4 5 6 7
|
||||
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
0x0 | 0x50 | freq | PA | f|u|m|d|e| 0x0 or 0x73 | enable, disable, freq, PA, (un)mute
|
||||
|
||||
CONFIG:
|
||||
0 1 2 3 4 5 6 7
|
||||
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
0x0 | 0x51 | TX | |7| |m| | TX, close
|
||||
|
||||
0 1 2 3 4 5 6 7
|
||||
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
0 0 0 0 0 0 0 0|0 1 0 1 0 0 0 1|'00000011'(TX) | 7 m|0|PA30-PA120 |0 0 0 f U M O O| 0x73 when PA | config close: 0x44
|
||||
|0 1 0 1 0 0 0 0|'00010011' | 5 o|0|0x1e-0x78 | r N U F N| val is set | freq: 0x44, 0x34, 0xd4
|
||||
| |'00100011' | u n| | | e M T F | 0 otherwise | TX: 0x1d
|
||||
| |'00110011' | s o| | q U E | | PA: 0xd0
|
||||
'01000011' | | | T | | (un)mute: 0x8c
|
||||
'01010011' +-+-+ | | E | | enable: 0x00
|
||||
'00000010' |freq 0x0 - 0x280 | | | | disable: 0x05
|
||||
'00010010' | 76 - 108 |
|
||||
'00100010' | |
|
||||
'00110010'
|
||||
'01000010'
|
||||
'01010010'
|
||||
'00000001'
|
||||
'00010001'
|
||||
'00100001'
|
||||
'00110001'
|
||||
'01000001'
|
||||
'01010001'
|
||||
'00000000'
|
||||
'00010000'
|
||||
'00100000'
|
||||
'00110000'
|
||||
'01000000'
|
||||
'01010000'
|
||||
|
||||
TX:
|
||||
0x3, 0x13, 0x23, 0x33, 0x43, 0x53, 0x02, 0x12, 0x22, 0x32, 0x42, 0x52, 0x01, 0x11, 0x21, 0x31, 0x41, 0x51, 0x00, 0x10, 0x20, 0x30, 0x40, 0x50
|
||||
3, 19, 35, 51, 67, 83, 2, 18, 34, 50, 66, 82, 1, 17, 33, 49, 65, 81, 0, 16, 32, 48, 64, 80
|
||||
[(i%6)*16+(23-i)/6 for i in xrange(24)]
|
||||
[(i%6)<<4 | (23-i)/6 for i in xrange(24)]
|
||||
|
||||
freq:
|
||||
= lroundf(20.0f*(x-76.0f))
|
||||
|
||||
PA:
|
||||
0x1e - 0x78
|
Loading…
Reference in a new issue