?? d12setup.lis
字號:
.module D12Setup.c
.area data(ram, con, rel)
0000 _StandardDeviceRequest::
0000 .blkw 1
.area idata
0000 1200 .word PL_get_status
.area data(ram, con, rel)
0002 .blkw 1
.area idata
0002 1000 .word PL_clear_feature
.area data(ram, con, rel)
0004 .blkw 1
.area idata
0004 0E00 .word PL_void_function
.area data(ram, con, rel)
0006 .blkw 1
.area idata
0006 0C00 .word PL_set_feature
.area data(ram, con, rel)
0008 .blkw 1
.area idata
0008 0E00 .word PL_void_function
.area data(ram, con, rel)
000A .blkw 1
.area idata
000A 0A00 .word PL_set_address
.area data(ram, con, rel)
000C .blkw 1
.area idata
000C 0800 .word PL_get_descriptor
.area data(ram, con, rel)
000E .blkw 1
.area idata
000E 0E00 .word PL_void_function
.area data(ram, con, rel)
0010 .blkw 1
.area idata
0010 0600 .word PL_get_configuration
.area data(ram, con, rel)
0012 .blkw 1
.area idata
0012 0400 .word PL_set_configuration
.area data(ram, con, rel)
0014 .blkw 1
.area idata
0014 0200 .word PL_get_interface
.area data(ram, con, rel)
0016 .blkw 1
.area idata
0016 0000 .word PL_set_interface
.area data(ram, con, rel)
0018 .blkw 1
.area idata
0018 0E00 .word PL_void_function
.area data(ram, con, rel)
001A .dbfile G:\source/d12setup.h
001A .dbsym s StandardDeviceRequest _StandardDeviceRequest A[26:13]pfI
.area lit(rom, con, rel)
0000 _device_descriptor::
0000 1201 .byte 18,1
0002 0001 .byte 0,1
0004 0000 .byte 0,0
0006 0040 .byte 0,64
0008 7104 .byte 'q,4
000A 9008 .byte 144,8
000C 0001 .byte 0,1
000E 0000 .byte 0,0
0010 0001 .byte 0,1
0012 .dbsym s device_descriptor _device_descriptor A[18:18]c
0012 _Configuration_Descriptor::
0012 0902 .byte 9,2
0014 2000 .byte 32,0
0016 0101 .byte 1,1
0018 0080 .byte 0,128
001A 32 .byte 50
001B .dbsym s Configuration_Descriptor _Configuration_Descriptor A[9:9]c
001B _Interface_Descriptor::
001B 0904 .byte 9,4
001D 0000 .byte 0,0
001F 0208 .byte 2,8
0021 0650 .byte 6,'P
0023 00 .byte 0
0024 .dbsym s Interface_Descriptor _Interface_Descriptor A[9:9]c
0024 _Bulk_in_Descriptor::
0024 0705 .byte 7,5
0026 8202 .byte 130,2
0028 4000 .byte 64,0
002A 00 .byte 0
002B .dbsym s Bulk_in_Descriptor _Bulk_in_Descriptor A[7:7]c
002B _Bulk_out_Descriptor::
002B 0705 .byte 7,5
002D 0202 .byte 2,2
002F 4000 .byte 64,0
0031 00 .byte 0
0032 .dbsym s Bulk_out_Descriptor _Bulk_out_Descriptor A[7:7]c
.area text(rom, con, rel)
0000 .dbfile G:\source/d12setup.h
0000 .dbfile G:\source\D12Setup.c
0000 .dbfunc s Setup_control _Setup_control fI
; p -> R10,R11
; j -> R20
; i -> R22
.even
0000 _Setup_control::
0000 00D0 rcall push_gset3
0002 .dbline -1
0002 .dbline 51
; /*++
;
; Module Name:
;
; D12Setup.c
;
; Abstract:
;
; Header file related to D12 module
;
; Environment:
;
; ICCAVR 6.29
;
; Revision History:
;
; 04/23/2004 chenchi created
;
; --*/
; /******************************************************************/
; #include "io8515v.h"
; #include "d12.h"
; #include "d12setup.h"
;
; TRANSMIT_STRUCT XmtBuff;//定義傳輸結構體變量
;
; /************************************************************
; **工程名稱:U盤固件程序開發
; **編譯器類型及版本:ICCAVR 6.26C
; **日期:2004.4.30
; **創建人:陳馳
; **所屬單位:湖南大學計算機與通信學院
;
; **芯片類型:AT90S8515,PDIUSUD12,K9F5608U0A-YCB0
; **時鐘頻率:8MHZ
;
; **函數功能:完成設備枚舉
; **函數輸入參數及說明:無
;
; **函數返回值:無
; **在本函數以外定義的變量:D12_COMMAND,D12_DATA
; **調用的函數說明:
; (*StandardDeviceRequest[i])();
; 標準設備請求函數
;
; **修改人:陳馳
; **修改日期:2004.4.30
; **修改說明:創建
; *************************************************************/
; void Setup_control(void)
; {
0002 .dbline 53
; unsigned char i,j,*p;
; D12_COMMAND = 0x00;//選擇端點(指針指向0位置)
0002 2224 clr R2
0004 2092017C sts 31745,R2
0008 .dbline 54
; cwait;
0008 0000 nop
000A .dbline 55
; D12_COMMAND = 0xf0;//讀標準控制碼
000A 80EF ldi R24,240
000C 8093017C sts 31745,R24
0010 .dbline 56
; cwait1;
0010 0000 nop
0012 .dbline 56
0012 0000 nop
0014 .dbline 64
; /****************************
; 緩沖區數據結構:
; 字節1:保留,可為任意值
; 字節2:數據字節的數目/長度
; 字節3:數據字節1
; 字節4:數據字節2
; *****************************/
; i = D12_DATA;//字節1
0014 6091007C lds R22,31744
0018 .dbline 65
; cwait1;
0018 0000 nop
001A .dbline 65
001A 0000 nop
001C .dbline 66
; i = D12_DATA;//字節2
001C 6091007C lds R22,31744
0020 .dbline 67
; cwait1;
0020 0000 nop
0022 .dbline 67
0022 0000 nop
0024 .dbline 68
; j = D12_DATA;//數據字節
0024 4091007C lds R20,31744
0028 .dbline 69
; csram;
0028 609301FC sts 0xfc01,R22
002C .dbline 69
002C .dbline 70
; p = XmtBuff.b;//P指針指向傳輸緩沖區
002C 80E0 ldi R24,<_XmtBuff
002E 90E0 ldi R25,>_XmtBuff
0030 A82E mov R10,R24
0032 B92E mov R11,R25
0034 .dbline 71
; *(p++) = j;
0034 2A2C mov R2,R10
0036 3B2C mov R3,R11
0038 822D mov R24,R2
003A 932D mov R25,R3
003C 0196 adiw R24,1
003E A82E mov R10,R24
0040 B92E mov R11,R25
0042 E22D mov R30,R2
0044 F32D mov R31,R3
0046 4083 std z+0,R20
0048 .dbline 72
; for(i=0;i<7;i++)
0048 6627 clr R22
004A 06C0 rjmp L6
004C L3:
004C .dbline 73
004C .dbline 74
004C 4091007C lds R20,31744
0050 .dbline 75
0050 609301FC sts 0xfc01,R22
0054 .dbline 75
0054 .dbline 76
0054 4193 st Z+,R20
0056 .dbline 77
0056 L4:
0056 .dbline 72
0056 6395 inc R22
0058 L6:
0058 .dbline 72
0058 6730 cpi R22,7
005A C0F3 brlo L3
005C .dbline 78
; {
; j = D12_DATA;//數據字節
; csram;
; asm("st Z+,%j");
; }
; D12_COMMAND = 0x01;// 選擇端點(指針指向0位置)
005C 81E0 ldi R24,1
005E 8093017C sts 31745,R24
0062 .dbline 79
; cwait;
0062 0000 nop
0064 .dbline 80
; D12_COMMAND = 0xf1;//應答SETUP包
0064 81EF ldi R24,241
0066 8093017C sts 31745,R24
006A .dbline 81
; csram;
006A 609301FC sts 0xfc01,R22
006E .dbline 81
006E .dbline 82
; i = XmtBuff.b[1];
006E 60910100 lds R22,_XmtBuff+1
0072 .dbline 83
; if (i <= 0x0B)//標準請求跳轉表
0072 8BE0 ldi R24,11
0074 8617 cp R24,R22
0076 70F0 brlo L8
0078 .dbline 84
; {
0078 .dbline 85
; (*StandardDeviceRequest[i])();
0078 80E0 ldi R24,<_StandardDeviceRequest
007A 90E0 ldi R25,>_StandardDeviceRequest
007C E62F mov R30,R22
007E FF27 clr R31
0080 EE0F lsl R30
0082 FF1F rol R31
0084 E80F add R30,R24
0086 F91F adc R31,R25
0088 A081 ldd R26,z+0
008A B181 ldd R27,z+1
008C EA2F mov R30,R26
008E FB2F mov R31,R27
0090 00D0 rcall xicall
0092 .dbline 86
; }
0092 1BC0 rjmp L9
0094 L8:
0094 .dbline 87
; else{
0094 .dbline 88
; D12_COMMAND = 0x01;//選擇端點(指針指向0位置)
0094 81E0 ldi R24,1
0096 8093017C sts 31745,R24
009A .dbline 89
; cwait;
009A 0000 nop
009C .dbline 90
; D12_COMMAND = 0xf0;// 寫緩沖區
009C 80EF ldi R24,240
009E 8093017C sts 31745,R24
00A2 .dbline 91
; cwait;
00A2 0000 nop
00A4 .dbline 99
; /****************************
; 緩沖區數據結構:
; 字節1:保留,可為任意值
; 字節2:數據字節的數目/長度
; 字節3:數據字節1
; 字節4:數據字節2
; *****************************/
; D12_DATA = 0x00;//字節1
00A4 2224 clr R2
00A6 2092007C sts 31744,R2
00AA .dbline 100
; cwait;
00AA 0000 nop
00AC .dbline 101
; D12_DATA = 0x01;//字節2
00AC 81E0 ldi R24,1
00AE 8093007C sts 31744,R24
00B2 .dbline 102
; csram;
00B2 609301FC sts 0xfc01,R22
00B6 .dbline 102
00B6 .dbline 103
; D12_DATA = 0x00;//數據字節
00B6 2224 clr R2
00B8 2092007C sts 31744,R2
00BC .dbline 104
; csram;
00BC 609301FC sts 0xfc01,R22
00C0 .dbline 104
00C0 .dbline 105
; D12_COMMAND = 0xfa;//設置 IN 緩沖區有效(滿標志)
00C0 8AEF ldi R24,250
00C2 8093017C sts 31745,R24
00C6 .dbline 106
; csram;
00C6 609301FC sts 0xfc01,R22
00CA .dbline 106
00CA .dbline 107
; }
00CA L9:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -