⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d12setup.lis

📁 AVR单片机里的USB通信程序开发源代码,是某人的本科毕业设计,里面附有毕业论文.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                         .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 + -